调用WbemScripting :: ISWbemServicesPtr :: ExecQuery的“通用失败”_com_error

时间:2013-04-24 08:39:25

标签: windows-7 wbem

无益的"通用失败"在一个进程中运行时,从以下代码行引发错误,而在另一个进程中运行时则不会引发错误。我无法弄清楚这些进程之间有什么不同(它们都以管理员身份运行32位)。

WbemScripting::ISWbemObjectSetPtr hdobjects = services->ExecQuery("Select * from Win32_LogicalDisk","WQL",0x10,NULL);

任何想法为什么?

1 个答案:

答案 0 :(得分:0)

这是因为COM安全性在每个进程中设置不同。这是通过对CoInitializeSecurity的启动调用在每个过程中确定的。

DLL一旦被调用就无法重置,但可以使用CoSetProxyBlanket为当前的Wbem连接设置安全性。

我无法轻易弄清楚如何通过WbemScripting正确设置它,所以我重新实现了COM调用,就像这里的广泛示例一样,只是没有第2步:

http://msdn.microsoft.com/en-gb/library/windows/desktop/aa390423(v=vs.85).aspx