我们创建了一个在Windows 10 kiosk模式下在平板电脑上运行的Windows 10应用程序。它工作正常,但是,由于位置非常偏远,有时会失去wifi连接。我们尝试从网络方面解决问题,但是当设备丢失并重新获得互联网访问时,应用程序仍然会挂起,就好像它没有显示空白页面的互联网访问权限一样。在使用这些装置的地方,它们用螺栓固定在墙壁上以防止被盗。这意味着如果我们想要重新启动它非常耗时,因为我们必须从墙上拧下外壳然后打开外壳以获得对电源按钮的访问,并且让应用程序再次成功运行的唯一方法是重启设备。
有人建议我们可以从应用程序执行重新启动,但是,我尝试的每个代码示例在Windows 10 UWP中都不起作用。这是我发现的最常见的一个:
System.Diagnostics.Process.Start("restart", "/r");
我可以访问命名空间
System.Diagnostics
但Process类不存在。任何人都有关于通过Win 10 UWP上的代码重新启动的建议?或者是我们问题的更好解决方案?提前谢谢。
值得一提的是我也试过执行一个Powershell命令,我需要为Powershell类引用的dll与UWP不兼容。
答案 0 :(得分:3)
UWP应用程序可用的API无法满足您的要求。这是一项安全决定。通过商店分发的应用程序不应该能够执行重启机器等操作。
根据您的情况,您不应该通过商店。这意味着您可以PInvoke本机代码来执行您想要的任何操作。这仍然需要在实际设备上启动。
答案 1 :(得分:0)
是的,你可以做到! 您应该在应用功能声明中添加物联网系统管理:
<Capabilities><iot:Capability Name="systemManagement"/></Capabilities>
并且您还需要将“Windows IoT Extension for UWP”添加到您的项目中
用于关机
Windows.System.ShutdownManager.BeginShutdown(Windows.System.ShutdownKind.Shutdown, TimeSpan.FromSeconds(1)); //Delay is not relevant to shutdown
或重启
Windows.System.ShutdownManager.BeginShutdown(Windows.System.ShutdownKind.Restart, TimeSpan.FromSeconds(1)); //Delay before restart after shutdown
您可以在此Link
中获得更多信息