2009-06-09 28 views
7

Tôi nên sử dụng lớp nào trong C# để nhận thông tin về một máy tính nhất định trong mạng của tôi? (Giống như ai đã đăng nhập vào máy tính đó, hệ điều hành nào đang chạy trên máy tính đó, cổng nào được mở, vv)C#: nhận thông tin về máy tính trong miền

+1

Bạn đang cố gắng chạy mã này trên máy mục tiêu? hoặc bạn đang cố gắng chạy điều này từ máy tính của bạn và nhận thông tin về một máy khác trên mạng? – Nate

+0

Tôi muốn chạy mã từ máy tính của mình để nhận thông tin về một máy khác trên mạng, biết IP của mình – melculetz

+0

Ví dụ được cung cấp về truy vấn WMI từ xa trong câu trả lời của tôi. – Nate

Trả lời

2

Thư viện WMI và đây là VB.net example. Sẽ không khó để chuyển đổi nó thành C#

2

Nhìn vào thư viện WMI.

9

Thanh toán System.ManagementSystem.Management.ManagementClass. Cả hai đều được sử dụng để truy cập WMI, đó là cách để có được thông tin được đề cập.

Edit: cập nhật với mẫu để truy cập WMI từ máy tính từ xa:

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); 
} 

Lưu ý: userID, mật khẩu và IPAddress phải tất cả được xác định để phù hợp với môi trường của bạn.

+0

cảm ơn bạn đã liên kết – melculetz

3

Đây là ví dụ về cách sử dụng nó như một hộp giới thiệu. MSDN có phần còn lại của các mục bạn có thể tất cả.

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

Điều này sẽ chỉ hoạt động nếu mã được chạy TRÊN máy đang được đề cập đến; và sẽ không hoạt động để lấy thông tin về một máy khác trên mạng. – Nate

+4

Lớp học này (SystemInfo) được định nghĩa ở đâu? – SLaks

Các vấn đề liên quan