从Windows服务运行时,ManagementScope.Connect失败并显示错误E_ACCESSDENIED错误

时间:2011-09-26 00:36:17

标签: c# wmi

我试图通过填写ManagementScope变量并尝试连接到远程计算机来通过服务连接到Windows WMI。如果我作为Windows控制台运行,则Connect正在成功,但是当我从Windows服务运行相同的代码时失败。

我使用的代码如下:

ManagementScope scope = null;

scope = new ManagementScope("\\\\" + m_sComputerName + "\\root\\cimv2");
if (m_sLoginName != null && m_sPassword != null)
{
    scope.Options.Username = m_sLoginName;
    scope.Options.Password = m_sPassword;
}

scope.Options.EnablePrivileges = true;
scope.Options.Authentication = AuthenticationLevel.PacketPrivacy;
scope.Options.Impersonation = ImpersonationLevel.Impersonate;
scope.Connect();

我正在运行Windows服务作为本地系统。代码是用C#编写的.net版本4.0

任何帮助都非常感激。

由于

1 个答案:

答案 0 :(得分:0)

默认情况下,LocalSystem帐户无权访问网络资源 - 请参阅here。如果您需要从服务访问网络资源,请考虑将其作为域帐户运行。虽然可以授权访问LocalSystem的远程资源,但不建议这样做。另一种选择是将服务作为NT AUTHORITY \ NetworkService运行 - 请参阅here,在这种情况下,服务将在访问网络资源时被验证为计算机帐户。