System.Management 提供程序加载失败

GabrielCNMao 2011-05-09 03:11:25
我用WMI搜索的时候,当运行到foreach (ManagementObject mo in managementObjectCollection)这句的时候就出现了:
"提供程序加载失败"的异常,我跟踪进去,发现是提示:
在 System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode)
在 System.Management.ManagementObjectCollection.ManagementObjectEnumerator.MoveNext()

下面是我代码:
ManagementClass managementClass = new ManagementClass("Win32_PnPSignedDriver");
ManagementObjectCollection managementObjectCollection = managementClass.GetInstances();
foreach (ManagementObject mo in managementObjectCollection)//异常
{
mo.Dispose();
}

PS:
1. System.Management引用已经添加
2. System.Management.Instrumentation.dll已经注册

求高手,在线等...
...全文
479 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
guvexie_code 2012-05-09
  • 打赏
  • 举报
回复
这个问题找到原因了没? 期待啊!!!!!!!!
GabrielCNMao 2011-05-09
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 tsapi 的回复:]
Win32_PnPEntity用这个!
[/Quote]
真是Win32_PnPSignedDriver的问题,Win32_PnPEntity这个可以,Win32_PnPSignedDriver就不行,真奇怪,我另外一台电脑是两个都可以(两条都是windowsXP的),所以这边我就没用另一个去试,一下子短路了。
就这么着吧,换Win32_PnPEntity用,以后再去想这个原因,太感谢tsapi了。
Daqing 2011-05-09
  • 打赏
  • 举报
回复
我这里两个都没问题啊,我的windows7
Daqing 2011-05-09
  • 打赏
  • 举报
回复
Win32_PnPEntity用这个!
Icedmilk 2011-05-09
  • 打赏
  • 举报
回复
捕获异常,然后跳过该项
就算用系统提供的工具也会出现这类错误

[Quote=引用 7 楼 gabrielcnmao 的回复:]
引用 4 楼 tsapi 的回复:
我看了下,你的写法有问题吧,你是去实例化对象。

用这样的方法。

C# code
SelectQuery selectQuery = new SelectQuery("Win32_PnPSignedDriver");
ManagementObjectSearcher searcher = new ManagementObjectSear……

……
[/Quote]
GabrielCNMao 2011-05-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 tsapi 的回复:]
我看了下,你的写法有问题吧,你是去实例化对象。

用这样的方法。

C# code
SelectQuery selectQuery = new SelectQuery("Win32_PnPSignedDriver");
ManagementObjectSearcher searcher = new ManagementObjectSear……
[/Quote]
结果一样。还是提示System.Management.ManagementObjectCollection.ManagementObjectEnumerator.MoveNext()
出现问题
Daqing 2011-05-09
  • 打赏
  • 举报
回复
MSDN的意思是,你用别的方式去获取硬件信息,不采用Win32_PnPSignedDriver这个。
GabrielCNMao 2011-05-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 tsapi 的回复:]
http://social.msdn.microsoft.com/Forums/en/vbgeneral/thread/f101e0f9-aa43-4985-931d-9b76a303ba9f
看看MSDN,它里面很多解决方法,你试一下。
[/Quote]
我英语不太好,但是我大致看了下,好像里面是教如何用这个WMI的,异常的处理好像比较少
Daqing 2011-05-09
  • 打赏
  • 举报
回复
我看了下,你的写法有问题吧,你是去实例化对象。

用这样的方法。
            SelectQuery selectQuery = new SelectQuery("Win32_PnPSignedDriver");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(selectQuery);
foreach (ManagementObject mo in searcher.Get())
{
return mo["ClassGuid"].ToString();
}
searcher.Dispose();


}
GabrielCNMao 2011-05-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 icedmilk 的回复:]
可能不是代码的问题,是你系统的问题

比如权限的问题,你可以在控制面板里打开系统提供的那个管理工具试试
[/Quote]
我用的是管理员登陆的,应该权限是够了
Icedmilk 2011-05-09
  • 打赏
  • 举报
回复
可能不是代码的问题,是你系统的问题

比如权限的问题,你可以在控制面板里打开系统提供的那个管理工具试试
Daqing 2011-05-09
  • 打赏
  • 举报
回复

110,502

社区成员

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

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

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