2011-01-13 5 views
4

Gibt es eine Möglichkeit, die Betriebssystemversion des Remote-Computers in .Net (C#) zu bekommen? Die Verwendung von WMI ist für mich nicht akzeptabel.Wie bekomme ich die Version des entfernten Betriebssystems in .Net, ohne WMI?

Ich habe die IP-Adresse des Remote-Rechner :) und Administratoranmeldeinformationen

+2

Was ist los mit WMI? –

+0

Meine Benutzer sollten die Möglichkeit haben, WMI nicht zu verwenden (es ist Voraussetzung und ich kann das nicht ändern) – vasyl

+0

Also, wie hast du die IP bekommen? Wie verbinden sie sich mit dir? – hometoast

Antwort

2

Wenn Sie Administratoranmeldeinformationen für den Remote-Rechner haben Sie PsExec verwenden könnte einen Befehl remote ausführen, um die OS-Version zu erhalten, z.B.

CMD/c ver

Sie einen Wrapper schreiben kann PsExec in C# unter Verwendung der Process Klasse auszuführen.

+0

Das macht Sinn, ich muss diesen Ansatz mit meiner Führung klären, aber es ist ein guter Vorschlag. Danke – vasyl

+0

Ich kann mir nicht vorstellen, dass viele Befehle von außen nach oben verlegt werden, ich frage mich, wie hoch der Aufwand dafür wäre? Ich habe ein paar hundert Computer in meinem Netzwerk, die ich auch tun müsste. –

1

Providing Sie Remote-Zugriff auf die Registry haben,

var reg = Microsoft.Win32.RegistryKey.OpenRemoteBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, ipaddress); 
var key = reg.OpenSubKey(@"Software\Microsoft\Windows NT\CurrentVersion\"); 
string version = (string) key.GetValue("CurrentVersion"); 
reg.Close(); 
8

basierend auf sgmoore Antwort mit einigen usings

public string GetOsVersion(string ipAddress) 
    { 
     using (var reg = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, ipAddress)) 
     using (var key = reg.OpenSubKey(@"Software\Microsoft\Windows NT\CurrentVersion\")) 
     { 
      return string.Format("Name:{0}, Version:{1}", key.GetValue("ProductName"), key.GetValue("CurrentVersion")); 
     } 
    } 
Verwandte Themen