2011-01-13 31 views
4

有沒有什麼辦法在.Net(C#)中獲取遠程機器的操作系統版本? 使用WMI對我來說是不可接受的。如何在沒有WMI的.Net中獲得遠程機器操作系統版本?

我有遠程機器:)和管理員憑據的IP地址

+2

WMI有什麼問題? – 2011-01-13 16:42:53

+0

我的用戶應該有可能不使用WMI(這是要求,我不能改變這個) – vasyl 2011-01-13 16:47:15

回答

2

如果你有,你可以使用PsExec遠程運行一個命令來獲取操作系統版本例如遠程計算機管理員憑據

CMD/C版本

你可以寫一個包裝在C#中使用Process類運行PSEXEC。

1

提供了您擁有遠程註冊表訪問,

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

基於sgmoore答案與一些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")); 
     } 
    } 
相關問題