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