取主板 BIOS 的序列号怎么老是空串?

shove 2005-11-21 02:37:24
以下代码中,
为什么取主板 BIOS 的序列号总是空? 试了好几台不同的机器,都是空串.

另外: CPU 的号,有的可以,有的也是空.可能是以前的老 CPU 或者赛扬系列没有号.
网卡地址\硬盘号没有问题.

-------------------------------------
//获取主板序列号
public string GetBIOSSerialNumber()
{
try
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * From Win32_BIOS");

string sBIOSSerialNumber = "";
foreach (ManagementObject mo in searcher.Get())
{
sBIOSSerialNumber = mo["SerialNumber"].ToString().Trim();
}
return sBIOSSerialNumber;
}
catch
{
return "";
}
}

//获取CPU序列号
public string GetCPUSerialNumber()
{
try
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * From Win32_Processor");
string sCPUSerialNumber = "";
foreach (ManagementObject mo in searcher.Get())
{
sCPUSerialNumber = mo["ProcessorId"].ToString().Trim();
}
return sCPUSerialNumber;
}
catch
{
return "";
}
}

//获取硬盘序列号
public string GetHardDiskSerialNumber()
{
try
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia");
string sHardDiskSerialNumber = "";
foreach(ManagementObject mo in searcher.Get())
{
sHardDiskSerialNumber = mo["SerialNumber"].ToString().Trim();
break;
}
return sHardDiskSerialNumber;
}
catch
{
return "";
}
}

//获取网卡地址
public string GetNetCardMACAddress()
{
try
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapter WHERE ((MACAddress Is Not NULL) AND (Manufacturer <> 'Microsoft'))");
string NetCardMACAddress = "";
foreach(ManagementObject mo in searcher.Get())
{
NetCardMACAddress = mo["MACAddress"].ToString().Trim();
}
return NetCardMACAddress;
}
catch
{
return "";
}
}
...全文
1305 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
shove 2005-12-08
  • 打赏
  • 举报
回复
up
Ly_uu 2005-12-01
  • 打赏
  • 举报
回复
这个问题我也想了解一下! 哈哈 我帮忙顶!
阿非 2005-12-01
  • 打赏
  • 举报
回复
mark ~~``
shove 2005-11-23
  • 打赏
  • 举报
回复
up
fsdy2000 2005-11-23
  • 打赏
  • 举报
回复
最大可能是主板不支持,另外你把"root\\CIMV2"参数加进去
ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_BIOS");
shove 2005-11-23
  • 打赏
  • 举报
回复
up
shove 2005-11-22
  • 打赏
  • 举报
回复
//获取主板序列号
public string GetBIOSSerialNumber()
{
try
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * From Win32_BIOS");

string sBIOSSerialNumber = "";
foreach (ManagementObject mo in searcher.Get())
{
sBIOSSerialNumber = mo["SerialNumber"].ToString().Trim();
// 错误停在这里,提示 实例没有初始化.
}
return sBIOSSerialNumber;
}
catch
{
return "";
}
}
itmingong 2005-11-22
  • 打赏
  • 举报
回复
主板不支持
shove 2005-11-22
  • 打赏
  • 举报
回复
up
oyljerry 2005-11-21
  • 打赏
  • 举报
回复
这个可能有些标准不统一
掐死温柔 2005-11-21
  • 打赏
  • 举报
回复
跟进去看哪里出现问题.

shove 2005-11-21
  • 打赏
  • 举报
回复
自己UP
shove 2005-11-21
  • 打赏
  • 举报
回复
我在 win2003 下,公司5种不同型号的主板都读出空串,奇怪了啊.
楼上读出的数 12345678 虽然奇怪,但毕竟读出来了啊.
fsdy2000 2005-11-21
  • 打赏
  • 举报
回复
我这里取出来为12345678.
和主板的驱动程序,以及硬件商提供的实现有关系
shove 2005-11-21
  • 打赏
  • 举报
回复
应该不是主板不支持.
我在 Delphi 里面的一段代码能够读出 BIOS 序列号和 CPU 序列号.说明这2个号是存在的 .
xiaohutushen 2005-11-21
  • 打赏
  • 举报
回复
是不是主板不支持

s5689412 2005-11-21
  • 打赏
  • 举报
回复
可以参考这里:
http://www.vckbase.com/document/viewdoc/?id=1144
beststone 2005-11-21
  • 打赏
  • 举报
回复
试了一下,我这里也取不出来,可能是Management库的支持不够。不如在c++下试试

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧