我正在创建自定义命令柯塔娜。这些命令注册和使用通用的Windows平台的应用程序执行。 (GitHub)
举例来说,我已经注册了下面的命令
<Command Name="ShutDown">
<ListenFor>Shut down</ListenFor>
<Navigate/>
</Command>
要在UWP应用程序中运行该功能
static async void ShutDown()
{
var dialog = new MessageDialog("This is where I would shut the computer down.");
await dialog.ShowAsync();
//System.Diagnostics.Process.Start("Shutdown", "-s -t 10");
}
但这一设置后,我学会了System.Diagnostics.Process
不UWP支持。
我要运行的自定义命令涉及某种执行诸如启动外部程序,运行其他脚本,或打开网站。
这是有道理的,UWP不支持他们给它的普遍性和Xbox或手机可能无法做到这些,但我希望能有一些替代或做到这一点在Windows 10计算机上哈克的方式。
有没有办法对我来说,在UWP应用程序中执行命令Process
或者具有类似功能的其他什么东西?好像即使我能得到柯塔娜执行我的C#代码,UWP不支持多这将是在这种情况下非常有用。
提前致谢。
有 - 限制 - 的方式来实现类似的行为。
摘要:启动另一个应用程序是很容易的,只要在目标应用程序注册为应用服务或注册的协议处理程序(URI方案)。启动脚本或者其他的* .exe是不可能的,如果选择4没有任何失效。
与Windows 10周年更新(1607年)有使PC上这种情况下的一个选项。随着桌面扩展SDK这个API,您可以启动运行在完整的用户权限的fulltrust过程:
https://docs.microsoft.com/en-us/uwp/api/Windows.ApplicationModel.FullTrustProcessLauncher
这样你就可以点亮它上运行的1607或以上,其中被支持的平台,即个人电脑。和你的应用程序仍然是普遍的:
if (ApiInformation.IsApiContractPresent("Windows.ApplicationModel.FullTrustAppContract", 1, 0))
{
await FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync();
}