2009-06-09 15 views
7

¿Qué clases debo usar en C# para obtener información sobre cierta computadora en mi red? (Al igual que quién inició sesión en esa computadora, qué sistema operativo se está ejecutando en esa computadora, qué puertos están abiertos, etc.)C#: obtener información sobre la computadora en el dominio

+1

¿Está tratando de ejecutar este código en la máquina de destino? ¿o está tratando de ejecutar esto desde su computadora y obtener información sobre otra máquina a través de la red? – Nate

+0

Quiero ejecutar el código desde mi computadora para obtener información acerca de otra máquina a través de la red, conociendo su IP – melculetz

+0

Proporcioné un ejemplo de consulta WMI remota en mi respuesta. – Nate

Respuesta

2

Mire en la biblioteca de WMI.

9

Pago System.Management y System.Management.ManagementClass. Ambos se usan para acceder a WMI, que es cómo obtener la información en cuestión.

Editar: actualiza con la muestra acceder a WMI del equipo remoto:

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

Nota: ID de usuario, contraseña y ipAddress debe ser definido todo para que coincida con su entorno.

+0

gracias por los enlaces – melculetz

3

Aquí hay un ejemplo de cómo usarlo en un cuadro sobre. MSDN tiene el resto de los elementos que puede todos.

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

Esto solo funcionará si el código se ejecuta EN la máquina en cuestión; y no funcionará para obtener información sobre otra máquina en la red. – Nate

+4

¿Dónde se define esta clase (SystemInfo)? – SLaks

Cuestiones relacionadas