2016-09-27 56 views
0

嗨,我們正在研究分佈式結構上的C#framework v4.0 asp.net mvc應用程序。我們將Server1用於圖像Server2,用於mysql數據庫和Server3 for web。我的任務是從所有三臺服務器獲得可用磁盤空間和總磁盤空間,並顯示在Web管理頁面上。我知道如何使用WMI顯示本地主機的磁盤空間。我想顯示具有靜態IP的Server1和Server3磁盤信息(所有三臺服務器都啓用了遠程桌面和共享)。但我得到從遠程服務器C檢索磁盤信息#

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

我想我不能正確地配置DCOM安全 – skhurams

+0

http://serverfault.com/questions/28520/which-permissions-rights-does-a-user-need- wmi-access-on-remote-machines – CodeCaster

+0

我已經嘗試了文章中的所有步驟,但仍然拒絕訪問 – skhurams

回答

0
  1. 確保允許這臺電腦遠程連接已啓用。
  2. 確保WindowsFirewall中的WMI已啓用 - >允許的應用程序。
  3. 在WMI控件屬性中,確保管理員可以訪問CIMV2文件夾。
  4. 確保WMI和RPC服務正在運行。
  5. 用戶具有遠程系統上的管理權限
+0

all checked ex中斷點4 – skhurams

+0

現在得到這個異常用戶憑證不能用於本地連接(IM遠程連接到PC) – skhurams

+0

@skhurams我認爲你試圖查詢本地系統,而查詢本地系統時無需通過憑證 –

相關問題