WPF应用程序调用WMI API抛出异常 [英] WPF app call WMI API throw exception

查看:179
本文介绍了WPF应用程序调用WMI API抛出异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



在调用WMI的 searcher.Get()方法时抛出异常,是什么原因?


以下异常堆栈


消息:

  指定的演员表无效。

StackTrace:

  在System.StubHelpers.InterfaceMarshaler.ConvertToNative(Object objSrc,IntPtr itfMT,IntPtr classMT,Int32 flags)

   at System.Management.SecuredIWbemServicesHandler.ExecQuery_(String strQueryLanguage,String strQuery,Int32 lFlags,IWbemContext pCtx,IEnumWbemClassObject& ppEnum)

  在System.Management.ManagementObjectSearcher.Get()


以下代码

 var searcher = new ManagementObjectSearcher(@" root \\ \\ cimv2",
" SELECT * FROM Win32_DiskDrive");

foreach(searcher.Get()中的ManagementObject项目)
{
//列表项目代码
}

解决方案

hi,


根据异常消息,您正在尝试无效演员。


以下代码适用于我。

 ManagementObjectSearcher searcher = new ManagementObjectSearcher(" select * from" +"Win32_DiskDrive"); 
ManagementObjectCollection moc = searcher.Get();
foreach(ManagementObject mo in moc)
{
Console.WriteLine(" %%%%%%%%%%%%:" + mo.ToString());
}

或者:

 ManagementClass mc = new ManagementClass (QUOT; Win32_DiskDrive"); 
ManagementObjectCollection moc = mc.GetInstances();

foreach(管理对象mo in moc)
{
Console.WriteLine(mo.ToString());

}

此致,


鲍勃


Hi,

throw exception when call the WMI's searcher.Get() method , what's reason?

following exception stack

Message:
   Specified cast is not valid.
StackTrace:
   at System.StubHelpers.InterfaceMarshaler.ConvertToNative(Object objSrc, IntPtr itfMT, IntPtr classMT, Int32 flags)
   at System.Management.SecuredIWbemServicesHandler.ExecQuery_(String strQueryLanguage, String strQuery, Int32 lFlags, IWbemContext pCtx, IEnumWbemClassObject& ppEnum)
   at System.Management.ManagementObjectSearcher.Get()

following code

var searcher = new ManagementObjectSearcher(@"root\cimv2",
                "SELECT * FROM Win32_DiskDrive");

foreach (ManagementObject item in searcher.Get())
{
   //list item code
}

解决方案

hi,

According to the message of exception , you are trying a invalid cast.

Following code works fine for me.

          ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from " + "Win32_DiskDrive");   
            ManagementObjectCollection moc = searcher.Get();
            foreach (ManagementObject mo in moc)
            {
                Console.WriteLine("%%%%%%%%%%%%:" + mo.ToString());              
            }

Or :

 ManagementClass mc = new ManagementClass("Win32_DiskDrive");
            ManagementObjectCollection moc = mc.GetInstances();

            foreach (ManagementObject mo in moc)
            {
                Console.WriteLine(mo.ToString());
               
            }

Sincerely,

Bob


这篇关于WPF应用程序调用WMI API抛出异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆