无益的"通用失败"在一个进程中运行时,从以下代码行引发错误,而在另一个进程中运行时则不会引发错误。我无法弄清楚这些进程之间有什么不同(它们都以管理员身份运行32位)。
WbemScripting::ISWbemObjectSetPtr hdobjects = services->ExecQuery("Select * from Win32_LogicalDisk","WQL",0x10,NULL);
任何想法为什么?
答案 0 :(得分:0)
这是因为COM安全性在每个进程中设置不同。这是通过对CoInitializeSecurity
的启动调用在每个过程中确定的。
DLL一旦被调用就无法重置,但可以使用CoSetProxyBlanket
为当前的Wbem连接设置安全性。
我无法轻易弄清楚如何通过WbemScripting正确设置它,所以我重新实现了COM调用,就像这里的广泛示例一样,只是没有第2步:
http://msdn.microsoft.com/en-gb/library/windows/desktop/aa390423(v=vs.85).aspx