您好我们正在分布式结构上使用C#framework v4.0 asp.net mvc应用程序。我们使用Server1将图像Server2用于mysql数据库,将Server3用于Web。我的任务是从所有三台服务器获得可用磁盘空间和总磁盘空间,并显示在Web管理页面上。我知道如何使用WMI显示localhost的磁盘空间。我想显示具有静态IP的Server1和Server3磁盘信息(所有三个服务器都启用了远程桌面和共享)。但是我得到了
Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
这是我的代码
ManagementScope scope = new ManagementScope("\\\\Server IP\\root\\cimv2");
scope.Connect();
ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_OperatingSystem");
SelectQuery query1 = new SelectQuery("Select * from Win32_LogicalDisk");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
ManagementObjectCollection queryCollection = searcher.Get();
ManagementObjectSearcher searcher1 = new ManagementObjectSearcher(scope, query1);
ManagementObjectCollection queryCollection1 = searcher1.Get();
foreach (ManagementObject m in queryCollection)
{
// Display the remote computer information
Console.WriteLine("Computer Name : {0}",
m["csname"]);
Console.WriteLine("Windows Directory : {0}",
m["WindowsDirectory"]);
Console.WriteLine("Operating System: {0}",
m["Caption"]);
Console.WriteLine("Version: {0}", m["Version"]);
Console.WriteLine("Manufacturer : {0}", m["Manufacturer"]);
Console.WriteLine();
}
foreach (ManagementObject mo in queryCollection1)
{
Console.WriteLine(" Disk Name : {0}", mo["Name"]);
Console.WriteLine(" Disk Size : {0}", mo["Size"]);
Console.WriteLine(" FreeSpace : {0}", mo["FreeSpace"]);
Console.WriteLine(" Disk DeviceID : {0}", mo["DeviceID"]);
Console.WriteLine(" Disk VolumeName : {0}", mo["VolumeName"]);
Console.WriteLine(" Disk SystemName : {0}", mo["SystemName"]);
Console.WriteLine("Disk VolumeSerialNumber : {0}", mo["VolumeSerialNumber"]);
Console.WriteLine();
}
Console.ReadLine();
但是当编译转到行scope.Connect(); 然后它抛出异常访问被拒绝
我尝试了this article using Dcomcnfg.exe security,但仍然无法摆脱此异常
我也试过
ConnectionOptions options = new ConnectionOptions();
options.Username = @"Admin-PC\username";
options.Password = @"password";
options.Impersonation = ImpersonationLevel.Impersonate;
options.Authentication = AuthenticationLevel.Connect;
options.EnablePrivileges = true;
options.Timeout = new TimeSpan(0, 60, 0);
ManagementScope scope = new ManagementScope("\\\\IP\\root\\cimv2", options);
答案 0 :(得分:0)