c++ - WTSEnumerateSessions API获取的session ID是否唯一?

标签 c++ winapi sessionid

比如说,如果我在某个时间点调用 WTSEnumerateSessions从本地服务应用程序获取当前用户 session ID 的列表。因此,如果稍后我需要知道某个特定用户 session 是否仍处于相同状态,我可以依赖 WTS_SESSION_INFO::SessionId 吗?是独一无二的?如果没有,该怎么做?

最佳答案

Windows 为每个登录 session 提供一个 SID。 MSDN has sample code to look it up对于给定的登录 session ,它保证是唯一且不变的。如果用户注销并再次登录,他将被赋予一个新的登录 SID。

如果同一用户同时在本地登录和远程登录,则每个登录 session 将有不同的登录 SID。这张图片显示了我的意思:

Alice has two logon session, with distinct Logon SID .

(免责声明 - 我从 blog post of mine 偷了它)

您可以使用此命令获取登录 SID。在不编写任何代码的情况下播放假设场景可能很有用。

c:\>whoami /logonid
S-1-5-5-0-329693570

在 Windows Server 2008 上测试。在其他版本上使用 YMMV。

关于c++ - WTSEnumerateSessions API获取的session ID是否唯一?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13079796/

相关文章:

c++ - 为什么我可以从其他对象访问这个私有(private)成员?

c++ - 如何判断给定路径是目录还是文件? (C/C++)

.net - 在 .NET 中检索终端服务 session ID?

java - 两个应用程序的 session 维护

c# - 从 C# 调用 C++ 函数传递类型剥离的空指针

c++ - 如何在两点之间强制执行约束

c# - 通过 C# 调用 Win32 api 失败!

PHP 在登录/注销时重新生成 session ID 不起作用

时间:2019-05-01 标签:c++: variadic template and function overloading

python - 在 Windows 中显示资源管理器的文件属性对话框