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

时间:2012-07-28 03:35:16

标签: c# wmi dcom

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

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

我已经搞乱了DCOM权限,WMI远程处理权限,模拟选项,策略选项,Windows防火墙等等,都没有结果。那里有谁可以提供帮助吗?

编辑:通过更多的挖掘,我发现MS中的this small page,这确实指出我的错误(0x80070005)是连接期间发生的DCOM问题,而不是特别是WMI错误。他们给出的原因是1.凭证失败,或2. DCOM启动/远程激活权限。由于我的程序在使用相同的凭据手动运行时工作,我不得不承担它的DCOM问题。我设置了远程/本地激活&启动以允许SYSTEM,LOCAL SERVICE,INTERACTIVE和Administrators,但它仍然失败。由于该服务作为本地系统运行,我认为这些设置应该足够了。

1 个答案:

答案 0 :(得分:0)

我可能过于简单化或者没有完全理解您的问题,但在我看来,如果您尝试通过仅具有来自计算机的凭据的服务来访问远程 WMI提供程序本地帐户,这样的努力总是会失败(按设计)。从MACHINE \帐户到OTHERMACHINE \ account或DOMAIN \ account没有验证路径。再说一遍,如果我过于简单化或误解,我的道歉。