之前用C#写了个获取硬盘系统号的方法,在大部分电脑上都用得好好的,但是部分电脑就是不行。下面我们先来看看源码。
#region 获取C盘序列号
//获取C盘序列号
private static string GetDisk()
{
ManagementObject disk;
disk = new ManagementObject("win32_logicaldisk.deviceid=\"c:\"");
disk.Get();
return disk.GetPropertyValue("VolumeSerialNumber").ToString();
}
#endregion
报错信息:
System.Runtime.InteropServices.COMException (0x80070433): 服务不存在,或已被标记为删除。 (异常来自 HRESULT:0x80070433)
在 System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo)
在 System.Management.ManagementScope.InitializeGuts(Object o)
在 System.Management.ManagementScope.Initialize()
在 System.Management.ManagementObject.Initialize(Boolean getObject)
在 System.Management.ManagementObject.Get()
经过一番百度,终于找到有一丝眉目,原来问题出在Windows服务上,只要启动Windows Management Instrumentation就可以解决了。于是马上去【控制面板 --> 管理工具 --> 服务】尝试启动Windows Management Instrumentation,结果一启动,蛋疼了,报错“依存服务不存在,或已标记为删除”,再一次通过度娘得到了答案:使用管理员身份运行cmd,然后执行sc config Winmgmt depend= RpcSs。然后回去服务里面发现Windows Management Instrumentation服务已经启动了。再次测试源码,发现获取硬盘系列号也正常了,不报错了。
ok
mjj通道