C# 使用ManagementScope(WMI)-有问题吗?

C# 使用ManagementScope(WMI)-有问题吗?,c#,asp.net,wmi,C#,Asp.net,Wmi,我想使用System.Management.ManagementScope查询当前登录用户的列表 这将是我们将向客户部署的更大应用程序的一部分,因此它需要易于安装且高度可靠 ManagementScope/WMI是否适合?在大多数操作系统上,它是否总是可以查询?是否有任何安全问题我必须考虑,例如,一个非提升用户登录到工作站,该用户是否能够查询WMI?系统帐户是否将作为服务运行 在走这条路之前,我还应该知道其他的问题吗 谢谢,运行服务的系统帐户是我们处理服务的方式,因为并非所有用户都是本地管理员。

我想使用System.Management.ManagementScope查询当前登录用户的列表

这将是我们将向客户部署的更大应用程序的一部分,因此它需要易于安装且高度可靠

ManagementScope/WMI是否适合?在大多数操作系统上,它是否总是可以查询?是否有任何安全问题我必须考虑,例如,一个非提升用户登录到工作站,该用户是否能够查询WMI?系统帐户是否将作为服务运行

在走这条路之前,我还应该知道其他的问题吗


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

WMI可能是最简单的方法。您可以查看pinvoke/Win32 API(甚至可能是终端服务器API),但WMI可能是最容易启动并可靠运行的

我在使用WMI时遇到的唯一问题是速度——尽管我通常在硬件查询中遇到这些问题,这些查询太广泛了,所以我认为这可能是我的缺点

AFAIK、Windows 2000及以下版本将需要与Windows XP及以上版本不同的查询,正如在XP及以上版本中,您查询Win32_LogonSession以获得LogonType=2(交互式)的结果一样。由于2000及以下版本仅支持单个登录控制台用户,您只需查询Win32_ComputerSystem并获取返回结果的UserName属性