2011-01-13 32 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")); 
     } 
    } 
相关问题