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?
问问题
2431 次
2 回答
4
您可以在 Windows 8 Metro 应用程序上使用此参考:如何从 Metro App 启动外部程序。所有 Metro 风格的应用程序都在高度沙盒环境中工作,无法直接启动外部应用程序。
您可以尝试使用Launcher 类
-
// 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 } }
参考:我可以使用 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 回答