C#下调用ManagementObject获取硬盘系列号报错System.Runtime.InteropServices.COMException (0x80070433): 服务不存在,或已被标记为删除。 (异常来自 HRESULT:0x80070433)和解决方法

之前用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服务已经启动了。再次测试源码,发现获取硬盘系列号也正常了,不报错了。
  1. 本网站所收集的部分资料来源于互联网,本站不对其真实性负责,也不构成任何其他建议。如果您发现有侵犯您权益的内容,请与我们取得联系,我们会及时修改或删除。
  2. 传递知识、传递力量,欢迎各位网友对本站的文章进行转载和分享。
  3. 本站QQ群交流群:904314688  群号:904314688
发表评论
 
评论列表(目前共有 条评论)
暂时还没有评论哦~

文章搜索

商家广告


版权所有:秋风雅居 (www.198933.com) ©2024 All Rights Reserved.

粤ICP备20031662号