2013-01-21 2 views
4

문서 : Remote Desktop using c-net에서 원격으로 연결된 PC를 볼 수 있습니다. 그러나 나는 그것을 필요 없다. 난 그 PC와 연결하고 C 드라이브의 여유 공간 데이터를 얻을 수 있습니다. 내가 어떻게 할 수 있니? 원격 데스크톱에 연결할 수 있습니다. IO 네임 스페이스를 사용하여 driveInfo를 얻을 수 있습니다. 그러나 그들을 결합하는 방법?원격 컴퓨터에서 드라이브 정보 가져 오기

+0

원격 데스크톱이 필요하지 않은 이유는 무엇입니까? 나는 이것을 위해 WMI를 살펴볼 것을 제안하고 싶다 - 방법은 [이 질문] (http://stackoverflow.com/q/12603641/1220971)을 참조하십시오. – Bridge

답변

15

사용이에 대한 System.Management namespaceWin32_Volume WMI class. 당신은 C:DriveLetter와 인스턴스에 대한 쿼리를 다음과 같이 그 FreeSpace 속성을 검색 할 수 있습니다 또한 볼륨의 전체 크기를 저장하는 Capacity 특성이

ManagementPath path = new ManagementPath() { 
    NamespacePath = @"root\cimv2", 
    Server = "<REMOTE HOST OR IP>" 
}; 
ManagementScope scope = new ManagementScope(path); 
string condition = "DriveLetter = 'C:'"; 
string[] selectedProperties = new string[] { "FreeSpace" }; 
SelectQuery query = new SelectQuery("Win32_Volume", condition, selectedProperties); 

using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query)) 
using (ManagementObjectCollection results = searcher.Get()) 
{ 
    ManagementObject volume = results.Cast<ManagementObject>().SingleOrDefault(); 

    if (volume != null) 
    { 
     ulong freeSpace = (ulong) volume.GetPropertyValue("FreeSpace"); 

     // Use freeSpace here... 
    } 
} 

.

+1

경로에 인증을 통과해야합니까? –

+2

환경에 따라 다릅니다. 자격 증명 및 기타 보안 옵션은 ['scope.Options' 속성] (http://msdn.microsoft.com/library/system.management.managementscope.options.aspx)을 사용하여 설정할 수 있습니다.이 옵션은 [' ConnectionOptions' 클래스] (http://msdn.microsoft.com/library/system.management.connectionoptions.aspx) – BACON

+0

freeSpace 란 무엇입니까? 비트인가요? – Si8

1

번역해야 할 경우 vb.net에 해당하는 내용입니다.

 Dim path = New ManagementPath With {.NamespacePath = "root\cimv2", 
              .Server = "<REMOTE HOST OR IP>"} 
    Dim scope = New ManagementScope(path) 
    Dim condition = "DriveLetter = 'C:'" 
    Dim selectedProperties = {"FreeSpace"} 
    Dim query = New SelectQuery("Win32_Volume", condition, selectedProperties) 
    Dim searcher = New ManagementObjectSearcher(scope, query) 
    Dim results = searcher.Get() 
    Dim volume = results.Cast(Of ManagementObject).SingleOrDefault() 
    If volume IsNot Nothing Then 
     Dim freeSpace As ULong = volume.GetPropertyValue("FreeSpace") 

    End If