我用这个代码在文章问题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