gpt4 book ai didi

c++ - 作为服务运行时连接到远程机器的 WMI

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:32:20 33 4
gpt4 key购买 nike

我正在编写一些代码来在远程机器上执行 wmi 查询和方法执行。我的登录凭据是域管理员。当我在应用程序模式下运行时,一切正常。当我作为服务运行时,它不会像预期的那样工作,因为默认帐户服务使用 isLocal 系统。当我将服务设置为作为我的凭据运行时,远程 wmi 也工作正常。

但是这是不可取的,所以我尝试通过在 IWbemLocator.ConnectServer 上提供用户名和密码来连接到服务中的远程 wmi。我能够成功取回 IWbemServices 对象。但是,当我尝试从 IWbemServices 对象获取类对象时,出现错误:

//IWbemServices *pSvc
const bstr_t objectPath("stdRegProv");
const bstr_t methodName("GetStringValue");
IWbemClassObject *pClass = NULL;
HRESULT hr = pSvc->GetObject(objectPath, 0, NULL, &pClass, NULL);

返回的 hr 是 0x80041003,这是来自此链接的“访问被拒绝”:http://msdn.microsoft.com/en-us/library/windows/desktop/aa394559%28v=vs.85%29.aspx .

通常,如果我提供了错误的用户名和密码,我会在 IWbemLocator.ConnectServer 上被拒绝访问。所以我在这里有点困惑为什么连接很好但是我无法获得 IWbemClassObject 对象。因为如果我使用我的域凭据作为服务帐户它是有效的,所以肯定存在一些安全差异。我的 WMI 连接代码基于 MSDN 上的示例代码:http://msdn.microsoft.com/en-us/library/windows/desktop/aa390418%28v=vs.85%29.aspx

最佳答案

WMI 有点剥夺了一些安全权限;您需要将您的帐户设置为“受信任的委派”(非常但不推荐),或者签署您的代码。或者,您可以向进程传递显式权限。

关于c++ - 作为服务运行时连接到远程机器的 WMI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10620554/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com