안녕하세요. 우리는 C# 프레임 워크 v4.0 asp.net mvc 응용 프로그램을 분산 구조로 작업하고 있습니다. 우리는 mysql 데이터베이스 용 이미지 Server2와 웹용 Server3 용으로 Server1을 사용하고 있습니다. 내 임무는 세 개의 서버 모두에서 사용 가능한 디스크 공간과 전체 디스크 공간을 확보하고 웹 관리 페이지에 표시하는 것입니다. WMI를 사용하여 localhost 용 디스크 공간을 표시하는 방법을 알고 있습니다. 정적 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);
는 내가 제대로 – skhurams
을 DCOM 보안을 구성하지 못할 생각 http://serverfault.com/questions/28520/which-permissions-rights-does-a-user-need- 원격 시스템에 대한 관리자 권한이 to-have-wmi-access-on-remote-machines – CodeCaster
기사의 모든 단계를 시도했지만 여전히 액세스가 거부되었습니다. System.Management.ManagementException.ThrowWithExtendedInfo (ManagementStatus errorCode)에서 스택 추적 정보를 – skhurams