我用這個代碼在文章問題WMI
http://www.geekpedia.com/tutorial233_Getting-Disk-Drive-Information-using-WMI-and-Csharp.html
,但它不是我的機器(俄羅斯XP SP3)
什麼問題上工作? 我需要得到ID HDD或主板以防止複製在其他計算機上
這裏我的計劃是例外
http://www.magicscreenshot.com/jpg/xwMD77wLWEM.html
我用這個代碼在文章問題WMI
http://www.geekpedia.com/tutorial233_Getting-Disk-Drive-Information-using-WMI-and-Csharp.html
,但它不是我的機器(俄羅斯XP SP3)
什麼問題上工作? 我需要得到ID HDD或主板以防止複製在其他計算機上
這裏我的計劃是例外
http://www.magicscreenshot.com/jpg/xwMD77wLWEM.html
按照該Win32_DiskDrive
類的描述中,SerialNumber
和FirmwareRevision
屬性不可用在Windows Server 2003,Windows XP,Windows 2000和Windows NT 4.0上。這就是爲什麼當你嘗試訪問其中的一個時會遇到異常。
您可能想要將訪問這些屬性的代碼打包在try...catch
語句中;是這樣的:
try
{
lblSerial.Text = "Serial: " + moDisk["SerialNumber"].ToString();
}
catch (ManagementException ex)
{
lblSerial.Text = "Serial: N/A";
}
編輯:要獲得序列號,你可以試試Win32_PhysicalMedia.SerialNumber
財產。像這樣的東西應該工作:
ManagementObjectSearcher mosRefs = new ManagementObjectSearcher
("REFERENCES OF {Win32_DiskDrive.DeviceID='" + moDisk["DeviceID"].ToString() + "'} WHERE ResultClass=Win32_DiskDrivePhysicalMedia");
foreach (ManagementObject moRef in mosRefs.Get())
{
ManagementObject moMedia = new ManagementObject(moRef["Antecedent"].ToString());
lblSerial.Text = "Serial: " + moMedia["SerialNumber"].ToString();
}
我同意海倫,但我不會使用try catch。只有在沒有其他選擇的情況下,您才應該使用它。查看Win32_OperatingSystem的版本。如果版本> = 6.0,則查找這些屬性。
當我研究這個過去我無法找到在WMI提供的serialNumber值替代(不使用DLL的,我不會做,因爲我的應用程序連接到遠程機器)。
當你說「這是行不通的」,以什麼樣的方式?編譯錯誤?運行時錯誤消息?我們需要更多的細節才能夠提供幫助。 – 2009-10-01 09:08:02