如何使用Windows Web Service获取已登录的用户帐户名?

问题描述:

我们有10台电脑和1台服务器。如何使用Windows Web Service获取已登录的用户帐户名?

我们的webservice作为LOCALSYSTEM在每台计算机上运行。

该web服务具有写入*服务器计算机上的文件的代码。

该服务的计时器持续时间为30分钟。每30分钟一个不同的用户登录系统。我们希望服务能够检测当前登录用户的名称并传递给写入记事本的方法。

问题是如何获取用户名中的loged?

您可以在Windows上使用Remote Desktop Services API提取有关当前用户会话的所有信息。有一个简单的方法来枚举与WTSEnumerateSessions的所有会话,但是对于您的系统服务更好的方法是订阅有关会话更改的通知,并在您的服务HandleEx过程中接收SERVICE_CONTROL_SESSIONCHANGE事件。

无论哪种方式(直接枚举会话或会话事件),您将获得一个会话ID,您可以使用该会话ID调用WTSQuerySessionInformation,将WTSUserName作为第三个参数传递给该函数。这会给你一个必要的用户名称回到缓冲区。