2009-06-09 2 views
7

네트워크의 특정 컴퓨터에 대한 정보를 얻기 위해 C#에서 어떤 클래스를 사용해야합니까? (누가 해당 컴퓨터에 로그온했는지, 어떤 운영 체제가 해당 컴퓨터에서 실행 중인지, 어떤 포트가 열려 있는지 등)C# : 도메인에있는 컴퓨터 정보 얻기

+1

이 코드를 대상 컴퓨터에서 실행 하시겠습니까? 아니면 컴퓨터에서이 프로그램을 실행하고 네트워크를 통해 다른 컴퓨터에 대한 정보를 얻으려고합니까? – Nate

+0

내 컴퓨터에서 코드를 실행하여 네트워크를 통해 다른 컴퓨터에 대한 정보를 얻고 싶습니다. 해당 IP 주소를 알고 있습니다. – melculetz

+0

내 대답에 원격 WMI 쿼리의 예제가 제공됩니다. – Nate

답변

2

WMI 라이브러리 및 여기에 VB.net example입니다. C#으로 변환하기가 어렵지 않아야합니다.

2

WMI 라이브러리를 살펴보십시오.

9

체크 아웃 System.ManagementSystem.Management.ManagementClass. 둘 다 WMI에 액세스하는 데 사용되며, 이는 문제의 정보를 얻는 방법입니다.

편집

:는 원격 컴퓨터에서 WMI에 액세스 할 수 샘플 업데이트 :

ConnectionOptions options; 
options = new ConnectionOptions(); 

options.Username = userID; 
options.Password = password; 
options.EnablePrivileges = true; 
options.Impersonation = ImpersonationLevel.Impersonate; 

ManagementScope scope; 
scope = new ManagementScope("\\\\" + ipAddress + "\\root\\cimv2", options); 
scope.Connect(); 

String queryString = "SELECT PercentProcessorTime, PercentInterruptTime, InterruptsPersec FROM Win32_PerfFormattedData_PerfOS_Processor"; 

ObjectQuery query; 
query = new ObjectQuery(queryString); 

ManagementObjectSearcher objOS = new ManagementObjectSearcher(scope, query); 

DataTable dt = new DataTable(); 
dt.Columns.Add("PercentProcessorTime"); 
dt.Columns.Add("PercentInterruptTime"); 
dt.Columns.Add("InterruptsPersec"); 

foreach (ManagementObject MO in objOS.Get()) 
{ 
    DataRow dr = dt.NewRow(); 
    dr["PercentProcessorTime"] = MO["PercentProcessorTime"]; 
    dr["PercentInterruptTime"] = MO["PercentInterruptTime"]; 
    dr["InterruptsPersec"] = MO["InterruptsPersec"]; 

    dt.Rows.Add(dr); 
} 

주 : 사용자 ID, 암호 및 IPADDRESS 모두가 환경에 맞게 정의해야합니다.

+0

링크를 이용해 주셔서 감사합니다 – melculetz

3

다음은 about 상자와 같이 사용하는 예입니다. MSDN에는 모든 항목을 포함 할 수 있습니다.

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Text; 
using System.Windows.Forms; 
using System.Management; 

namespace About_box 
{ 
    public partial class About : Form 
    { 
     public About() 
     { 
      InitializeComponent(); 
      FormLoad(); 
     } 

     public void FormLoad() 
     { 
      SystemInfo si; 
      SystemInfo.GetSystemInfo(out si); 

      txtboxApplication.Text = si.AppName; 
      txtboxVersion.Text = si.AppVersion; 
      txtBoxComputerName.Text = si.MachineName; 
      txtBoxMemory.Text = Convert.ToString((si.TotalRam/1073741824) 
       + " GigaBytes"); 
      txtBoxProcessor.Text = si.ProcessorName; 
      txtBoxOperatingSystem.Text = si.OperatingSystem; 
      txtBoxOSVersion.Text = si.OperatingSystemVersion; 
      txtBoxManufacturer.Text = si.Manufacturer; 
      txtBoxModel.Text = si.Model; 
     } 


    } 
} 
+1

코드가 해당 기계에서 실행되는 경우에만 작동합니다. 네트워크상의 다른 컴퓨터에 대한 정보를 얻는 데는 효과가 없습니다. – Nate

+4

이 클래스 (SystemInfo)는 어디에 정의되어 있습니까? – SLaks