我一直在编写一个应用程序,以使用WMI类获取远程机器的详细信息,如操作系统名称,登录用户名等。
在我们的网络中,我们拥有Windows XP,Windows Vista Windows 7的机器。
我能够获得所有Windows 7和Windows Vista机器的信息。
但问题是我无法获得Windows XP机器的信息。
每次我得到以下异常
访问被拒绝。 (HRESULT异常:0x80070005(E_ACCESSDENIED))
我已经通过网但没有帮助。我已完成以下链接中提到的所有步骤
http://support.microsoft.com/kb/875605。
但没有运气,我仍然无法解决问题。
我有管理员privilages的域用户名。
下面是我使用的代码。 (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);
}
}
请帮我解决问题。