我在分配的访问权限(Windows 10的Kiosk模式)下有后台运行的控制台应用程序。通过主UWP-app的命令,它应该注销当前用户。我尝试了两种方法:
ExitWindowsEx(0, 0)
Process.Start("shutdown /l /f")
如果当前用户有密码,两者都很有效。但如果用户没有密码,Windows会在注销后立即重新登录。有没有办法避免重新登录?
更新:
看起来LockWorkStation
也不起作用。可能是出于安全考虑?
答案 0 :(得分:2)
根据Raymond Chen from Microsoft,这是不可能的:
UWP应用程序无法签出用户或锁定工作站。那 会导致从刚刚锁定的应用程序拒绝服务 工作站紧凑。
在您的客户端/服务器中,UWP应用程序向桌面应用程序发送请求,请尝试WTSDisconnectSession()在桌面应用程序中调用suggested here。
答案 1 :(得分:0)
试试这个
注销当前用户。
ExitWindows(0, 0);
ExitWindowsEx(EWX_LOGOFF, 0);
使用用户互动
应用程序收到 WM_QUERYENDSESSION 消息并显示一个对话框,询问是否可以结束会话。如果用户单击是,系统将注销该用户。如果用户点击否,则会取消注销。
case WM_QUERYENDSESSION:
{
int r;
r = MessageBox(NULL,(LPCWSTR)L"End the session?",(LPCWSTR)L"WM_QUERYENDSESSION",MB_YESNO);
// Return TRUE to continue, FALSE to stop.
return r == IDYES;
break;
}
答案 2 :(得分:0)
答案 3 :(得分:0)
我实际上是在msdn
上找到的它说明了如何退出分配的访问权限。 从当前视图获取LockApplicationHost。如果host为null,则该应用不会在分配的访问权限下运行,因此已正常启动。然后调用RequestUnlock(),显示登录屏幕,您可以使用其他用户登录。
Windows.ApplicationModel.LockScreen.LockApplicationHost lockHost = Windows.ApplicationModel.LockScreen.LockApplicationHost.GetForCurrentView();
if (lockHost != null)
{
lockHost.RequestUnlock();
}