4

I can’t find System.Diagnostics.Process to start a new process. I guess this is on purpose. But is there a other way? Is this even possible?

4

2 回答 2

4

您可以在 Windows 8 Metro 应用程序上使用此参考:如何从 Metro App 启动外部程序。所有 Metro 风格的应用程序都在高度沙盒环境中工作,无法直接启动外部应用程序。

您可以尝试使用Launcher 类

  1. Launcher.LaunchFileAsync

    // Path to the file in the app package to launch
    string exeFile = @"C:\Program Files (x86)\App.exe";
    
    var file = await Windows.ApplicationModel.Package.Current.InstalledLocation
                            .GetFileAsync(exeFile);
    
    if (file != null)
    {
        // Set the option to show the picker
        var options = new Windows.System.LauncherOptions();
        options.DisplayApplicationPicker = true;
    
        // Launch the retrieved file
        bool success = await Windows.System.Launcher.LaunchFileAsync(file, options);
        if (success)
        {
           // File launched
        }
        else
        {
           // File launching failed
        }
    }
    
  2. Launcher.LaunchUriAsync

参考:我可以使用 Windows.System.Launcher.LauncherDefaultProgram(Uri) 来调用另一个 Metro 风格的应用程序吗?

于 2012-11-26T11:16:43.563 回答
0

看起来不可能打开任何非 Metro 进程。您可以打开 URL 或文件,如 *.txt,但不能打开 *.cmd 或 *.exe。

如果有自定义文件关联,您可能(我没有尝试过)通过打开一个带有自定义文件扩展名的空文件来启动一个进程。但是您无法编辑注册表以从您的应用中添加关联。
所以没有App-Only方法可以做到这一点(除了尚未发现的黑客;))。

于 2012-11-26T12:49:00.963 回答