首页 新闻 会员 周边 捐助

c#异常问题

0
悬赏园豆:10 [已解决问题] 解决于 2014-12-18 18:15

部分电脑出现这个问题!

问题签名:
  问题事件名称: CLR20r3
  问题签名 01: wisdomgps.views.qyjk.exe
  问题签名 02: 1.0.0.0
  问题签名 03: 544a1716
  问题签名 04: System.Management
  问题签名 05: 4.0.0.0
  问题签名 06: 4ba1e140
  问题签名 07: fe
  问题签名 08: 133
  问题签名 09: PSZQOADHX1U5ZAHBHOHGHLDGIY4QIXHX
  OS 版本: 6.1.7600.2.0.0.256.48
  区域设置 ID: 2052
  其他信息 1: 0a9e
  其他信息 2: 0a9e372d3b4ad19135b953a78882e789
  其他信息 3: 0a9e
  其他信息 4: 0a9e372d3b4ad19135b953a78882e789

联机阅读隐私声明:
  http://go.microsoft.com/fwlink/©linkid=104288&clcid=0x0804

如果无法获取联机隐私声明,请脱机阅读我们的隐私声明:
  C:\Windows\system32\zh-CN\erofflps.txt

我在网上找到的大概原因是这个操作磁盘导致的 

using System.Management;

是个操作磁盘的类

        ///<summary>
        /// 获取硬盘卷标号
        ///</summary>
        ///<returns></returns>
        public string GetDiskVolumeSerialNumber()
        {
            //ManagementClass mc = new ManagementClass("win32_NetworkAdapterConfiguration");
            ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid=\"c:\"");
            disk.Get();
            return disk.GetPropertyValue("VolumeSerialNumber").ToString();
        }

        ///<summary>
        /// 获取CPU序列号
        ///</summary>
        ///<returns></returns>
        public string GetCpu()
        {
            string strCpu = null;
            ManagementClass myCpu = new ManagementClass("win32_Processor");
            ManagementObjectCollection myCpuCollection = myCpu.GetInstances();
            foreach (ManagementObject myObject in myCpuCollection)
            {
                strCpu = myObject.Properties["Processorid"].Value.ToString();
            }
            return strCpu;
        }

 

好像度娘解决不了这个问题 google 估计只有e文的 

谢谢!

s_p的主页 s_p | 初学一级 | 园豆:140
提问于:2014-10-27 11:53
< >
分享
最佳答案
0

用wmi如果客户没有开启这个服务, 你就会报错, 最好的方式还是

[DllImport("Kernel32.dll")]
public static extern bool GetVolumeInformation(
ref string lpRootPathName, // 系统盘符根目录或网络服务器资源名
ref string lpVolumeNameBuffer, // 磁盘卷标
ref int nVolumeNameSize, // 磁盘卷标字符串的长度
ref int lpVolumeSerialNumber, // 磁盘卷标的序列号
ref int lpMaximumComponentLength, // 文件名长度支持
ref int lpFileSystemFlags, // 文件系统标记
ref string lpFileSystemNameBuffer, // 文件系统类型
ref int nFileSystemNameSize); // 文件系统类型字符串长度

 


调用:

bool res = GetVolumeInformation(ref strDriver,ref volume,ref vl, refserialNum, ref size, 0,ref type,ref tl);

 


//取cpu

[DllImport("kernel32")] 
public static extern void GetSystemInfo(ref CPU_INFO cpuinfo); 
//定义CPU的信息结构 
[StructLayout(LayoutKind.Sequential)] 
public struct CPU_INFO 
{ 
public uint dwOemId; 
public uint dwPageSize; 
public uint lpMinimumApplicationAddress; 
public uint lpMaximumApplicationAddress; 
public uint dwActiveProcessorMask; 
public uint dwNumberOfProcessors; 
public uint dwProcessorType; 
public uint dwAllocationGranularity; 
public uint dwProcessorLevel; 
public uint dwProcessorRevision;
}

 


//调用
//调用GetSystemInfo函数获取CPU的相关信息

CPU_INFO CpuInfo; 
CpuInfo = new CPU_INFO(); 
GetSystemInfo(ref CpuInfo); 
lstAPI.Items.Add("CPU的OEM ID为"+CpuInfo.dwOemId.ToString()); 

 



别用百度, 用google

收获园豆:8
问天何必 | 老鸟四级 |园豆:3311 | 2014-12-10 10:08

你这网址有毒啊,赶紧撤掉

亚洲DotNet首席技师 | 园豆:143 (初学一级) | 2017-09-28 14:20

@LosPollos_Gus: 已经联系博客园, 现在自己编辑不了了。。 曾经还是个google镜像来的, 现在变成了xx了。 哈哈哈。 

问天何必 | 园豆:3311 (老鸟四级) | 2017-09-28 14:26
其他回答(4)
0

是不是相关服务没有开启,

我用下面的方法获取硬盘序列号

http://www.cnblogs.com/xiongpq/p/3953694.html

Xiongpq | 园豆:293 (菜鸟二级) | 2014-10-27 13:21
1

获取磁盘序列号,最简单的办法是使用fso,里面直接就有一个现成的方法,微软写的,直接返回字符串就行。

空明流光 | 园豆:111 (初学一级) | 2014-10-27 14:34
0

在项目的bin目录dll文件。如果文件不是目录,那么它将抛出的错误。所以当复制文件和文件夹确保你复制的所有依赖项(所有引用的类库dll、引用等)。复制“系统”相关的dll文件。

收获园豆:1
Chaoa | 园豆:643 (小虾三级) | 2014-10-28 10:08
0

 
C#获取cpu序列号,硬盘ID,网卡MAC地址
 
首先在添加引用中选中System.Management
再在开始部门:
using System.Management;
using System.Management.Instrumentation;
 
private void GetInfo()  
   {  
    string cpuInfo = "";//cpu序列号  
    ManagementClass cimobject = new
ManagementClass("Win32_Processor");  
    ManagementObjectCollection moc = cimobject.GetInstances();  
    foreach(ManagementObject mo in moc)  
    {  
     cpuInfo = mo.Properties["ProcessorId"].Value.ToString();  
     Response.Write ("cpu序列号:"+cpuInfo.ToString ());  
    }  
 
    //获取硬盘ID  
    String HDid;  
    ManagementClass cimobject1 = new
ManagementClass("Win32_DiskDrive");  
    ManagementObjectCollection moc1 = cimobject1.GetInstances();  
    foreach(ManagementObject mo in moc1)  
    {  
     HDid = (string)mo.Properties["Model"].Value;  
     Response.Write ("硬盘序列号:"+HDid.ToString ());  
    }  
 
 
    //获取网卡硬件地址  
 
     
     
    ManagementClass mc = new
ManagementClass("Win32_NetworkAdapterConfiguration");  
    ManagementObjectCollection moc2 = mc.GetInstances();  
    foreach(ManagementObject mo in moc2)  
========================================第2页========================================
 
    {  
     if((bool)mo["IPEnabled"] == true)  
      Response.Write("MAC
address\t{0}"+mo["MacAddress"].ToString());  
     mo.Dispose();  
    }  
   }
在添加引用中选中
System.Management
再在开始部门:
 
using System.Management;
using System.Management.Instrumentation;
 
private void GetInfo()  
   {  
    string cpuInfo = "";//cpu
序列号
  
    ManagementClass cimobject = new ManagementClass("Win32_Processor");  
    ManagementObjectCollection moc = cimobject.GetInstances();  
    foreach(ManagementObject mo in moc)  
    {  
     cpuInfo = mo.Properties["ProcessorId"].Value.ToString();  
     Response.Write ("cpu
序列号:
"+cpuInfo.ToString ());  
    }  
 
    //
获取硬盘
ID  
    String HDid;  
    ManagementClass cimobject1 = new ManagementClass("Win32_DiskDrive");  
    ManagementObjectCollection moc1 = cimobject1.GetInstances();  
    foreach(ManagementObject mo in moc1)  
    {  
     HDid = (string)mo.Properties["Model"].Value;  
     Response.Write ("
硬盘序列号:
"+HDid.ToString ());  
    }  
 
 
    //
获取网卡硬件地址
  
 
     
     
    ManagementClass mc = new
ManagementClass("Win32_NetworkAdapterConfiguration");  
    ManagementObjectCollection moc2 = mc.GetInstances();  
    foreach(ManagementObject mo in moc2)  
    {  
========================================第3页========================================
 
     if((bool)mo["IPEnabled"] == true)  
      Response.Write("MAC address\t{0}"+mo["MacAddress"].ToString());  
     mo.Dispose();  
    }  
   }
 

男人要爽 | 园豆:6 (初学一级) | 2014-10-30 20:06

这样的代码 是有问题的  有的电脑是有异常的

支持(0) 反对(0) s_p | 园豆:140 (初学一级) | 2014-10-31 16:24

这样的代码 是有问题的  有的电脑是有异常的

支持(0) 反对(0) s_p | 园豆:140 (初学一级) | 2014-10-31 16:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册