尝试从服务进行远程WMI调用时访问被拒绝

问题描述:

我有一个C#应用程序,它通过WMI连接到许多远程系统,无论是在域中还是独立的。该方案向wmi提供凭证并使用模拟。当手动运行(从控制台)时,它连接良好,一切正常。但是,当从服务(作为本地用户运行)调用相同的.exe时,它在调用ManagementScope上的Connect()时总是获得0x80070005(E_ACCESSDENIED)。尝试从服务进行远程WMI调用时访问被拒绝

我已经搜索了很多,发现了许多类似主题上看似有用的文章,但都没有奏效。 This one和他在MS网站上的[后续文章] [2]非常相似,除了我的连接失败,而不是尝试运行查询时,所以感觉就像是本地系统权限问题。

我已经搞砸了DCOM权限,WMI远程处理权限,模拟选项,策略选项,Windows防火墙等等,都没有结果。有没有人可以帮忙?

编辑:多一点挖掘我发现从MS的this small page,这真的指向我的错误(0x80070005)是连接期间发生的DCOM问题,而不是特定的WMI错误。他们给出的原因是1.证书失败,或者2. DCOM启动/远程激活权限。由于我的程序在使用相同凭证手动运行时运行,因此我必须假定它存在DCOM问题。我已经设置启动Remote/Local Activation &以允许SYSTEM,LOCAL SERVICE,INTERACTIVE和Administrators,但仍然失败。由于该服务以本地系统运行,因此我认为这些设置应该足够了。

+0

你解决了这个问题吗?这里的问题类似。 – dalvarezmartinez1 2015-03-30 09:52:55

我可能是过于简单化或不完全理解你的问题,但在我看来,如果你想通过具有从计算机本地帐户只凭据,这样的服务来访问远程WMI供应商努力总会失败(按设计)。没有从MACHINE \ account身份验证到OTHERMACHINE \ account或DOMAIN \ account的路径。再一次,如果我简单或误解,我的道歉。

+0

嗨大卫,谢谢你的回复。如果我没有让自己的情况更清楚,我很抱歉。 c#应用程序确实为远程计算机提供身份验证/凭据,并且不依赖域/机器帐户信任。实际上,目标计算机都在源域内外。我也尝试在独立的(XP)工作站上运行它,并以相同的方式失败。这是否更有意义? – 2012-07-28 22:38:15

+0

这可能是您已经开展的一条路径,但我想我会投入一些时间在源计算机和目标计算机上设置ProcMon副本,启动您的服务,并让ProcMon吞并结果以查看*完全*当发生故障时。它可能会让您更好地了解您需要将修复重点放在哪里。 – 2012-07-30 16:06:23