private void Page_Load(object sender, System.EventArgs e)
{
Response.Write(GetHardDiskSerID());
} public static string GetHardDiskSerID()
{
string SerID = ""; 
ManagementObjectSearcher cimobject = new ManagementObjectSearcher("select * from Win32_PhysicalMedia"); 
foreach(ManagementObject mo in cimobject.Get()) 

if(mo["SerialNumber"]==null)
SerID = "None";
else
SerID = mo["SerialNumber"].ToString();
}
return SerID;
}
这是提取硬盘序列号的代码,为什么会出现“无效类别”的错误呢?
另外这个是提取的客户端电脑的硬盘序列号还是服务器端电脑的硬盘序列号?

解决方案 »

  1.   

    断点在foreach(ManagementObject mo in cimobject.Get()) 的时候出错了我想提取客户端的硬盘序列号,请问该怎么做呢?
      

  2.   

    无效类别 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Management.ManagementException: 无效类别 源错误: 
    行 31:  string SerID = ""; 
    行 32:  ManagementObjectSearcher cimobject = new ManagementObjectSearcher("select * from Win32_PhysicalMedia"); 
    行 33:  foreach(ManagementObject mo in cimobject.Get()) 
    行 34:  { 
    行 35:  if(mo["SerialNumber"]==null)
     
      

  3.   

    1、断点在foreach(ManagementObject mo in cimobject.Get()) 的时候出错了
    是不是你是用aspnet用户执行的这个代码?那么就是权限不足。2、我想提取客户端的硬盘序列号,请问该怎么做呢?
    做ACTIVEX,让客户下载
      

  4.   

    看lz用的是Web应用程序,好像我觉得这是不是只能在ASP.NET的本地应用程序中才可以实现阿~~
    应为ManagementObjectSearcher需要命名空间System.Management,而这个在Web Application中似乎不能加载的(VS中使用Using System.M并不会自动出现Management)
      说错末怪,请高手指点一下.
      

  5.   

    不好意思说错了,应该使用引用System.Management