【问题标题】:How to shutdown a windows tablet from a UWP application running in assigned access mode?如何从以分配的访问模式运行的 UWP 应用程序关闭 Windows 平板电脑?
【发布时间】:2016-04-08 20:37:12
【问题描述】:

我有一个在没有物理键盘的 Windows 平板电脑上以分配的访问模式运行的 UWP 应用。一旦用户完成操作,我想让用户关闭平板电脑(不能 Alt+CTRL+DEL 并关闭,因为没有物理键盘)。我知道 UWP 没有用于关闭平板电脑的 API。但有什么解决方法吗? Microsoft 如何处理这种情况?

【问题讨论】:

    标签: c# windows-10 uwp kiosk-mode windows-10-universal


    【解决方案1】:

    这在 UWP 应用程序中是无法实现的,它在 App Container 中运行,并且没有这样的权限。

    但是,您可以试用代理 Windows 运行时组件以用于旁加载的 Windows 应用商店应用。从本质上讲,它允许您的 UWP 应用调用托管在不同进程中的 Win32 API,该进程在 App 容器之外运行。

    在您的代理组件中,您可以使用以下代码关闭您的 PC。

    var psi = new ProcessStartInfo("shutdown", "/s /t 0");
    psi.CreateNoWindow = true;
    psi.UseShellExecute = false;
    Process.Start(psi);
    

    下面是 VS2015 的代理 WinRT 组件模板 https://visualstudiogallery.msdn.microsoft.com/d2e9cac0-66a8-464a-a902-55ae765c8e6e?tduid=(c5f2776eb12ea55b8926d0c075062c9d)(256380)(2459594)(TnL5HPStwNw-gN1OuW5VyKxMyOTAH.bK0w)()

    下面是为 UWP 创建代理组件的一个很好的示例, https://xamltips.wordpress.com/2015/11/13/brokered-component-for-uwp-on-windows-10/

    欲了解更多信息,请参阅https://msdn.microsoft.com/en-us/library/windows/apps/dn630195.aspx

    【讨论】:

    • 我使用了一个windows服务,使用TCP与App交互。它奏效了!
    • 哈,这也是个 hack。
    • @Suneesh 我尝试了同样的事情,但 UWP 不允许回送。您是否使用“checknetisolation loopbackexempt”来豁免申请?
    • @Sam 我使用 TCP 服务器运行 Windows 服务,该服务以提升的权限运行。我不能肯定地告诉你,但我想我已经在服务安装程序中添加了代码来为应用程序添加“checknetisolation loopbackexempt”。我现在没有应用的源代码。
    • @Jackie,使用 shutdown.exe 会短暂显示登录屏幕。可以避免吗?我测试了当不处于分配的访问模式(即从桌面运行应用程序)时登录屏幕不会出现。
    猜你喜欢
    • 2021-05-20
    • 2016-10-16
    • 1970-01-01
    • 1970-01-01
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-30
    相关资源
    最近更新 更多