我想使用System.Management.ManagementScope查询当前登录用户的列表。
这将是我们将部署给客户的更大型应用程序的一部分,因此需要易于设置且高度可靠。
ManagementScope / WMI是否合适?是否应始终可以查询大多数操作系统?是否存在我必须考虑的安全问题,例如,非提升用户登录到工作站,该用户是否能够查询WMI?系统帐户是否作为服务运行?
在走这条路之前我应该知道的任何其他问题?
由于
答案 0 :(得分:1)
运行服务的系统帐户是我们处理它的方式,因为并非所有用户都是本地管理员。我们在GUI的同时推出服务,并通过IPC渠道与之交谈。它可以工作,并且比担心用户在WMI中可以看到哪些范围更容易。在我们的例子中,它还有助于写入事件日志。
WMI可能是最简单的方法。您可以查看pinvoke / Win32 API(甚至可能是终端服务器API),但WMI可能是最容易启动并可靠运行的。
我遇到过WMI的唯一问题就是速度 - 尽管我经常会遇到这些问题,而且硬件查询过于宽泛,所以我认为这可能是我的不好。
AFAIK,Windows 2000及以下版本需要与Windows XP及更高版本不同的查询,与XP及以上版本一样,您可以在Win32_LogonSession中查询LogonType = 2(交互式)的结果。由于2000及以下版本仅支持单个登录的控制台用户,您只需查询Win32_ComputerSystem并获取返回结果的UserName属性。