【问题标题】:Access Denied Problem in WMI for Windows XP only仅适用于 Windows XP 的 WMI 中的访问被拒绝问题
【发布时间】:2011-03-08 06:21:09
【问题描述】:

我一直在编写一个应用程序来获取远程机器的详细信息,例如使用 WMI 类的操作系统名称、登录用户名等。

在我们的网络中,我们的机器装有 Windows XP、Windows Vista Windows 7。

我能够获取所有 windows 7 和 windows vista 机器的信息。

但这里的问题是我无法获取 Windows XP 机器的信息。 每次我收到以下异常 访问被拒绝。 (HRESULT 异常:0x80070005 (E_ACCESSDENIED))

我已经通过网络,但没有帮助。我已完成以下链接中提到的所有步骤 http://support.microsoft.com/kb/875605。 但是没有运气,我仍然无法解决问题。 我有具有管理员权限的域用户名。 下面是我使用的代码。 (C#)

private void GetRemoteComputerInfo(string compName)
    {
        ObjectGetOptions oc = new ObjectGetOptions();
        try {
            ConnectionOptions connOptions = new ConnectionOptions();
            connOptions.Username = "domain\\domainUserName";
            connOptions.Password = "domainUserPass";
            connOptions.Authority = "kerberos:domain\\" + compName;
            connOptions.Impersonation = ImpersonationLevel.Impersonate;
            connOptions.EnablePrivileges = true;
            ManagementScope msc;
            if (compName == Environment.MachineName)
                msc = new ManagementScope("\\\\" + compName + "\\root\\cimv2");
            else
                msc = new ManagementScope("\\\\" + compName + "\\root\\cimv2", connOptions);
            msc.Connect();
            ManagementClass mc = new ManagementClass("Win32_ComputerSystem");
            mc.Scope = msc;
            //collection to store all management objects
            ManagementObjectCollection moc = mc.GetInstances();
            if (moc.Count != 0) {
                foreach (ManagementObject mo in mc.GetInstances()) {
                    Console.WriteLine(string.Format("\nMachine Make: {0}\nMachine Model: {1}  System Type: {2}  Host Name: {3}  Logon User Name: {4}{5}",
                                      mo["Manufacturer"].ToString(),
                                      mo["Model"].ToString(),
                                      mo["SystemType"].ToString(),
                                      mo["DNSHostName"].ToString(),
                                      mo["UserName"].ToString(),
                                      Environment.NewLine));
                }
            }
        }
        catch (Exception e) {
            Console.WriteLine("{0}: {1}", e.GetType().Name, e.Message);
        }
    }

请帮我解决问题。

【问题讨论】:

    标签: c# .net wmi


    【解决方案1】:

    Prasad,过去我有一个与 WMI DCOM 权限相关的类似问题,并按照这两个链接的说明解决了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多