我想使用System.Management.ManagementScope来查询当前登录的用户列表。
这将是一个更大的应用程序的一部分,我们将部署给我们的客户,因此它需要易于设置和高度可靠。
ManagementScope/WMI适合吗?它是否应该始终可用于大多数OSes上的查询?是否存在我必须考虑的安全问题,例如,非提升用户登录到工作站,该用户是否能够查询WMI?系统帐户将作为服务运行吗?
在走这条路之前,还有什么我应该知道的问题吗?
谢谢
发布于 2010-10-29 04:20:16
运行服务的系统帐户是我们处理服务的方式,因为并不是所有用户都是本地管理员。我们将服务与GUI同时推送出去,并通过IPC通道与其对话。它可以工作,而且比担心用户可以在WMI中看到哪些作用域更容易。在我们的例子中,它还简化了对事件日志的写入。
WMI可能是最简单的方法。您可以查看pinvoke / WMI (甚至可能是终端服务器API ),但Win32可能是最容易设置和可靠运行的。
我在使用WMI时遇到的唯一问题是速度--尽管我经常遇到硬件查询过于宽泛的问题,所以我认为这可能是我的错。
Windows2000和更低版本将需要不同于Windows XP和更高版本的查询,因为在XP和更高版本中,您可以在Win32_LogonSession中查询结果where LogonType=2 (交互式)。由于2000及更低版本仅支持单个登录控制台用户,因此您只需查询Win32_ComputerSystem并获取返回结果的UserName属性即可。
https://stackoverflow.com/questions/4046692
复制相似问题