gpt4 book ai didi

c++ - 在 Windows 下,您如何识别当前的控制台用户,然后对该用户进行注销?

转载 作者:可可西里 更新时间:2023-11-01 12:05:28 25 4
gpt4 key购买 nike

我需要 C++ 代码能够在管理员进程调用时注销控制台用户,或者如果它被该用户调用,并且将来可能是 Windows 服务。我遇到的问题是 ExitWindowsEx 只会注销调用它的用户。如果管理员进程调用注销,则控制台用户不受影响。据我所知,唯一可以执行此操作的应用程序是 psShutdown.exe,但 psShutdown 只能由管理员运行。有谁知道在 C++ 中如何识别控制台用户然后对该用户进行注销? psShutdown 有什么神奇之处?我正在寻找适用于 WindowsXP 及更高版本的东西。我也不能使用 WMI,因为有些机器运行的是 Windows Embeded 并且没有 WMI。

(psShutdown.exe 必须以管理员身份运行的原因是因为它安装了一项服务,而普通用户无权执行此操作。)

最佳答案

使用WTSGetActiveConsoleSessionId识别控制台 session ,但要更进一步,您将需要一些权限,您必须调用 WTSQueryUserToken(您需要以 SYSTEM 身份运行才能执行此操作)以获取 token 句柄,然后 CreateProcessAsUser 或模拟并调用 ExitWindowsEx,或者如果您不在服务中,请调用 WTSLogoffSession。 (我试过在我的XP机器上调用WTSLogoffSession没有成功,可能是因为这个系统没有运行终端服务器服务)

关于c++ - 在 Windows 下,您如何识别当前的控制台用户,然后对该用户进行注销?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5160535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com