0

当在一个进程中运行而不是在另一个进程中运行时,会从以下代码行抛出无用的“通用失败”错误。我无法弄清楚进程之间有什么不同(它们都以管理员身份运行 32 位)。

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

任何想法为什么?

4

1 回答 1

0

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

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

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

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

于 2013-04-24T13:23:17.993 回答