2010-10-28 74 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屬性即可。