2010-10-28 92 views
3

我想使用System.Management.ManagementScope来查询当前登录用户的列表。使用ManagementScope(WMI) - 任何陷阱?

这将成为我们将部署给我们客户的更大应用程序的一部分,因此它需要易于安装和高度可靠。

ManagementScope/WMI很适合吗?是否应该始终可以在大多数操作系统上查询?是否有任何安全问题需要考虑,例如说非升级用户登录到工作站,该用户是否可以查询WMI?将系统帐户作为服务运行吗?

在走这条路线之前我应该​​知道的其他任何陷阱?

感谢

回答

1

运行的服务系统帐户是我们处理它的方式,因为不是所有的用户是本地管理员。我们在与GUI同时推送服务并通过IPC渠道与之通话。它可以工作,而且比担心用户可以在WMI中看到的范围更容易。在我们的例子中,它也有助于写入事件日志。

WMI可能是最简单的方法。你可以看看pinvoke/Win32 API(或者甚至可能是终端服务器API),但是WMI很可能是最容易启动和运行的。

我遇到过的唯一的问题是速度 - 尽管我通常会遇到这些硬件查询过于宽泛,所以我认为这可能是我的糟糕之处。

AFAIK,Windows 2000及更低版本将需要与Windows XP及更高版本不同的查询,与使用XP和更高版本查询Win32_LogonSession的LogonType = 2(交互式)结果一样。由于2000及更低版本仅支持单一登录控制台用户,因此您只需查询Win32_ComputerSystem并获取返回结果的UserName属性即可。