我正在开发一个应用程序(AppRunner),它使用登录到用户令牌(CreateProcessAsUser)的控制台执行另一个应用程序( app )。AppRunner应该能够从任何会话/用户组合执行APP,包括会话0+系统或标准用户会话/用户名。
由于这个话题对我来说是新的,所以我有几个关于会话的问题,在谷歌搜索之后我没有找到答案:
的包装。
非常感谢!
发布于 2020-04-16 18:01:07
WTSActive状态一次可以有多个会话,是的。这些代表与登录用户的会话,包括本地用户(在物理机器上)和远程用户。不过,每次只有一个本地会话将被附加到物理键盘/鼠标/监视器(KMM)。该会话就是您在屏幕上看到的内容,它可能有或可能没有用户登录到它。本地用户可以任意切换多个本地会话,或登录/退出它们,从而影响在任何给定时刻将哪个会话附加到KMM。远程登录的用户将登录到自己的会话,但这些会话将永远不会附加到KMM。
是的,如果没有用户登录。
是。如果没有用户登录到请求的会话,WTSQueryUserToken()将失败,GetLastError()将返回ERROR_NO_TOKEN。此外,即使您查询有登录用户的远程会话,WTSQueryUserToken()也可能会失败,也可能不会失败,这取决于用户如何登录会话。
的包装。
WTSGetActiveConsoleSessionId()返回当前附加到KMM的会话。该会话可能有或可能没有用户登录,但它仍然可以显示UI。
https://stackoverflow.com/questions/61254653
复制相似问题