我在分配访问(Windows 10的Kiosk模式)下有后台运行的控制台应用程序 . 通过主UWP-app的命令,它应该注销当前用户 . 我尝试了两种方法来做到这一点:
-
WinAPI函数
ExitWindowsEx(0, 0)
-
Process.Start("shutdown /l /f")
如果当前用户有密码,两者都很有效 . 但如果用户没有密码,Windows会在注销后立即重新登录 . 有没有办法避免重新登录?
更新:看起来 LockWorkStation
也不起作用 . 可能是出于安全考虑?
4 回答
根据Raymond Chen from Microsoft,这是不可能的:
在您的客户端/服务器中,UWP应用程序向桌面应用程序发送请求,请尝试在桌面应用程序中调用WTSDisconnectSession(),如suggested here .
Try this
Log off the current user.
With User Interaction
应用程序收到 WM_QUERYENDSESSION 消息并显示一个对话框,询问是否可以结束会话 . 如果用户单击 Yes ,系统将注销该用户 . 如果用户单击 No ,则取消注销 .
感谢您与@ magicandre1981的匹配,以获得评论中的答案 . 他的回答是:
这适合我 .
我实际上发现这个msdn
它解释了如何退出分配的访问权限 . 从当前视图获取LockApplicationHost . 如果host为null,则应用程序不会在指定的访问权限下运行,因此它已正常启动 . 然后调用RequestUnlock()并显示登录屏幕,您可以使用不同的用户登录 .