1
我試圖構建一個簡單的Windows窗體應用程序,可以使用WMI(從硬盤驅動器開始)查詢用戶計算機的功能。wmi:屬性返回null
到目前爲止,我已經遠遠得到這個(HardDriveCheckResult
是我自己的類):
ConnectionOptions wmiConnOpts = new ConnectionOptions();
wmiConnOpts.Impersonation = ImpersonationLevel.Impersonate;
wmiConnOpts.Authentication = AuthenticationLevel.Default;
wmiConnOpts.EnablePrivileges = true;
ManagementObjectSearcher managementObjectSearcher = new ManagementObjectSearcher(@"select * from Win32_LogicalDisk WHERE DriveType = 5");
managementObjectSearcher.Scope.Options = wmiConnOpts;
List<HardDriveCheckResult> hardDriveCheckResults = new List<HardDriveCheckResult>();
foreach (ManagementObject managementObject in managementObjectSearcher.Get())
{
string hardDriveName = managementObject["name"].ToString();
object objFreeSpace = managementObject["FreeSpace"];
double freeSpace = objFreeSpace == null ? 0d : (double)objFreeSpace;
... additional code not relevant
}
我遇到的問題是,managementObject["FreeSpace"]
總是返回null。我懷疑這可能與WMI調用帳戶的權限有關,因此我收錄了Google提供的ConnectionOptions
代碼。
任務管理器告訴我程序正在作爲我的帳戶運行,這是一名管理員,所以我有點難以理解爲什麼WMI調用不會返回所有數據。
我正確的呼籲managementObject["FreeSpace"]
由於權限返回空嗎?或者它可能完全是其他的東西?
哦,撥打managementObject["name"]
的呼叫順便正確地返回盤符。
DriveType 5適用於CD。如果你確定你不是指「從Win32_LogicalDisk中選擇* DriveType!= 5」> – sgmoore 2012-04-17 22:43:54
Blimey,你們很快!而且都是對的!對不起,這是我濫用谷歌這是應該責備。謝謝。 – David 2012-04-17 22:46:10