Using System.Management; ManagementClass mc = new ManagementClass("Win32_PhysicalMedia"); foreach(ManagementObject mo in mc.GetInstances()) { Console.WriteLine(mo.Properties["SerialNumber"].Value.ToString()); }
http://www.sunmast.com/soft/IdeInfo.zip
static string GetSerial(int Index) { string DeviceName = String.Format(@"\\.\PHYSICALDRIVE{0}", Index); ManagementClass mc = new ManagementClass("Win32_PhysicalMedia"); ManagementObjectCollection moc = mc.GetInstances(); int i = 0; foreach (ManagementObject mo in mc.GetInstances()) { if (i++ == Index) return mo.Properties["SerialNumber"].Value.ToString(); } return ""; }hehe~~~
楼上的方法不支持Win98/ME :)
下在给出脚本代码,你改为C#吧 第一步:获取硬盘名称(如果有就不用) strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") Set colItems = objWMIService.ExecQuery( _ "SELECT * FROM Win32_DiskDrive",,48) For Each objItem in colItems Wscript.Echo "-----------------------------------" Wscript.Echo "Win32_DiskDrive instance" Wscript.Echo "-----------------------------------" Wscript.Echo "DeviceID: " & objItem.DeviceID Wscript.Echo "Name: " & objItem.Name Next 第二步:获取指定盘的序列号 strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") Set colItems = objWMIService.ExecQuery( _ "SELECT * FROM Win32_PhysicalMedia WHERE Tag = '硬盘名称'",,48) For Each objItem in colItems Wscript.Echo "-----------------------------------" Wscript.Echo "Win32_PhysicalMedia instance" Wscript.Echo "-----------------------------------" Wscript.Echo "SerialNumber: " & objItem.SerialNumber Wscript.Echo "Tag: " & objItem.Tag Next
老大,你看一下你提的问题! 方法如下:使用WMI,“select * from Win32_DiskDrive”得到物理硬盘的DeviceID,再根据查Win32_DiskDriveToDiskPartition。(Antecedent属性中对应物理磁盘DeviceID,Dependent对应逻辑磁盘DeviceID),再从Win32_DiskPartition得到对应的分区信息。
ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_DiskDrive"); foreach (ManagementObject share in searcher.Get()) { ManagementObjectSearcher searcher1 = new ManagementObjectSearcher("select * from Win32_DiskDriveToDiskPartition where Antecedentlike '%"+share.DeviceId+"'"); foreach (ManagementObject share1 in searcher.Get()) { ManagementObjectSearcher searcher2 = ManagementObjectSearcher("select * from Win32_DiskPartition where Name like '%"+share1.Dependent.substring(...)+"'"); { 输出当前share的名称(物理硬盘信息)share.name 输出所属逻辑分区的信息share2.属性 } } }
fsdy2000(乡愁),谢谢你!知道怎样用WMI获得移动硬盘的序列号吗?我试了 ManagementObjectSearcher mc = new ManagementObjectSearcher ("SELECT * FROM Win32_PhysicalMedia"); int i = 0; foreach (ManagementObject mo in mc.Get()) { if (i++ == Index) { string a=mo["SerialNumber"].ToString().Trim(); textBox2.Text=a; break; } } 得到的移动硬盘序列号是空的,怎么回事啊????
====CSDN 小助手 V2.0 2005年10月16日发布====
rexzhou#gmail.com
foreach(ManagementObject mo in mc.GetInstances())
{
Console.WriteLine(mo.Properties["SerialNumber"].Value.ToString());
}
{
string DeviceName = String.Format(@"\\.\PHYSICALDRIVE{0}", Index);
ManagementClass mc = new ManagementClass("Win32_PhysicalMedia");
ManagementObjectCollection moc = mc.GetInstances();
int i = 0;
foreach (ManagementObject mo in mc.GetInstances())
{
if (i++ == Index)
return mo.Properties["SerialNumber"].Value.ToString();
} return "";
}hehe~~~
第一步:获取硬盘名称(如果有就不用)
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery( _
"SELECT * FROM Win32_DiskDrive",,48)
For Each objItem in colItems
Wscript.Echo "-----------------------------------"
Wscript.Echo "Win32_DiskDrive instance"
Wscript.Echo "-----------------------------------"
Wscript.Echo "DeviceID: " & objItem.DeviceID
Wscript.Echo "Name: " & objItem.Name
Next
第二步:获取指定盘的序列号
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery( _
"SELECT * FROM Win32_PhysicalMedia WHERE Tag = '硬盘名称'",,48)
For Each objItem in colItems
Wscript.Echo "-----------------------------------"
Wscript.Echo "Win32_PhysicalMedia instance"
Wscript.Echo "-----------------------------------"
Wscript.Echo "SerialNumber: " & objItem.SerialNumber
Wscript.Echo "Tag: " & objItem.Tag
Next
方法如下:使用WMI,“select * from Win32_DiskDrive”得到物理硬盘的DeviceID,再根据查Win32_DiskDriveToDiskPartition。(Antecedent属性中对应物理磁盘DeviceID,Dependent对应逻辑磁盘DeviceID),再从Win32_DiskPartition得到对应的分区信息。
ManagementObjectSearcher("select * from Win32_DiskDrive");
foreach (ManagementObject share in searcher.Get()) {
ManagementObjectSearcher searcher1 = new
ManagementObjectSearcher("select * from Win32_DiskDriveToDiskPartition where Antecedentlike '%"+share.DeviceId+"'");
foreach (ManagementObject share1 in searcher.Get()) {
ManagementObjectSearcher searcher2 = ManagementObjectSearcher("select * from Win32_DiskPartition where Name like '%"+share1.Dependent.substring(...)+"'");
{
输出当前share的名称(物理硬盘信息)share.name
输出所属逻辑分区的信息share2.属性
}
}
}
ManagementObjectSearcher mc = new ManagementObjectSearcher
("SELECT * FROM Win32_PhysicalMedia");
int i = 0;
foreach (ManagementObject mo in mc.Get())
{
if (i++ == Index)
{
string a=mo["SerialNumber"].ToString().Trim();
textBox2.Text=a;
break;
}
}
得到的移动硬盘序列号是空的,怎么回事啊????
或使用Scripting.FileSystemObject,其Drives的每个Drive会有一个SerialNumber属性