C#获得远程主机系统信息的几个方法

1. 获取远程机IP地址
  1. public string GetMachineIPAddress(string strMachineName)
  2.         {
  3.             string strMachineIP;
  4.             Ping oP = new Ping();  // Declare a ping hander object.
  5.             PingReply oPR = oP.Send(strMachineName);    // Get the return values from ping method.
  6.             strMachineIP = oPR.Address.ToString();  // Get the target machine IP address.
  7.             return strMachineIP;
  8.         }
复制代码
2. 判断系统类型32/64
  1. public string GetMachineBit(string strMachineName)  // Return the remoting machine system bit number.
  2.         {
  3.             string strReturnStatus;
  4.             string strAccessPath;
  5.             string sTempMCIP;
  6.             string[] aFiles;
  7.             bool bISBIT;

  8.             strReturnStatus = "32";
  9.             try
  10.             {
  11.                 
  12.                 sTempMCIP = GetMachineIPAddress(strMachineName); // Call local method to get the remote machine IP address.
  13.                 strAccessPath = @"\\"+ sTempMCIP + @"\\C[        DISCUZ_CODE_10        ]quot;; // Access the remote serveer driver C:.

  14.                 aFiles = Directory.GetDirectories(strAccessPath);  // Access to the target machine c$\Program Files folder.
  15.                 for (int i = 0; i < aFiles.Length - 1; i++) // Ergodic the folder info on remote driver C:
  16.                 { 
  17.                     bISBIT = aFiles.ToString().Contains("Program Files (x86)");
  18.                     if (bISBIT) // It is a 64 bit system if contain the X86 folder.
  19.                     { 
  20.                         strReturnStatus = "64"; // Return the judgement result.
  21.                     }
  22.                 }
  23.                 
  24.                 return strReturnStatus;
  25.             }
  26.             catch (Exception xe)
  27.             { 
  28.                 strReturnStatus = xe.Message;
  29.                 return strReturnStatus;
  30.             }
  31.             
  32.         }
复制代码
3.  从注册表获取某个文件的安装路径信息
  1.         public string GetRemoteMachinGenInstallPath(string sRemoteName)
  2.         {
  3.             
  4.             remoteName = sRemoteName; 
  5.             strRemoteMCGenInsPath = "No Geneva Install";
  6.             
  7.             try
  8.             {
  9.                 if ((GetMachineBit(remoteName) == "32"))  //Call local method get the remote system bit info.
  10.                 {
  11.                     // The sub key path for 32bit system.
  12.                     strKeyPath = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
  13.                 }
  14.                 else
  15.                 {
  16.                     if (GetRemoteOSVersion(remoteName).Contains("Microsoft Windows Server 2003")) // The WinServer2003 for 32 and 64 has the same key path, but other OS need access the WOW64 key node path.
  17.                     {
  18.                         strKeyPath = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
  19.                     }
  20.                     else
  21.                     {
  22.                         // The sub key path for 64bit system.
  23.                         strKeyPath = @"SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall";
  24.                         //strKeyPath = @"SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{6F13B97D-6FA6-49A3-90D6-653099B9E7A7}";
  25.                     }
  26.                 }

  27.                 // Open the remote machine uninstall node subkey.
  28.                 environmentKey = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, remoteName).OpenSubKey(strKeyPath);


  29.                 if (environmentKey != null)
  30.                 {
  31.                     lsRemoveSubKeys = environmentKey.GetSubKeyNames();  // Get the all the key name which under the uninstall node.
  32.                     if (lsRemoveSubKeys.Length > 0)
  33.                     {
  34.                         foreach (string uninstallKey in lsRemoveSubKeys) // Ergodic the keys under uninstall and pick up the subkey which has the Gen app install path attribute value.
  35.                         { 
  36.                             RegistryKey rkUninstallKey = environmentKey.OpenSubKey(uninstallKey);  // Open subkey node in order to get the attribute text.

  37.                             string installpath = (String)rkUninstallKey.GetValue("InstallLocation", String.Empty);  // Get the attribute value from InstallLocation node.
  38.                             string strDisplayName = (String)rkUninstallKey.GetValue("DisplayName", String.Empty);  // Get the attribute value from DisplayName node.

  39.                             //string uninstallString = (String)rkUninstallKey.GetValue("UninstallString", String.Empty);
  40.                             if (strDisplayName.Contains("Geneva Application Server"))// && !uninstallString.Contains("InstallShield Installation Information"))
  41.                             {
  42.                                 if (CheckRemoteMachineInstallPath(installpath, remoteName))
  43.                                 {
  44.                                     strGenSubKey = uninstallKey;    // The install key node.
  45.                                     strRemoteMCGenInsPath = installpath;    // The Gen app installed path on remote machine.    
  46.                                 }
  47.                                 
  48.                             }
  49.                         }
  50.                     }
  51.                 }
  52.                 environmentKey.Close();
  53.                 return  strRemoteMCGenInsPath;
  54.             }
  55.             catch (Exception xe)
  56.             {
  57.                 string sXE = xe.Message;
  58.                 return sXE;
  59.             }
  60.         }
复制代码
4. 读取远程机某文件版本信息
  1.         public string GetGenAppVersion(string sRemoteIP,string strDllFilePath)
  2.         {
  3.             string sGenVersion;
  4.             try
  5.             {
  6.                 if (strDllFilePath == "No Geneva Install")
  7.                 {
  8.                     sGenVersion = "N/A";
  9.                 }
  10.                 else
  11.                 {

  12.                     string sDllPath = "\\" + sRemoteIP + "\\" + strDllFilePath.Replace(":", "[        DISCUZ_CODE_12        ]quot;) + "AppServer\\ConfigurationManager.exe";

  13.                     FileVersionInfo myFileVersion = FileVersionInfo.GetVersionInfo("\\" + sDllPath);
  14.                     
  15.                     sGenVersion = myFileVersion.FileVersion;
  16.                 }
  17.             }
  18.             catch (Exception xe)
  19.             {
  20.                 
  21.                 sGenVersion ="N/A";
  22.             }
  23.             
  24.             return sGenVersion; 
  25.         }
复制代码
5. 远程计算机系统版信息
  1. public string GetRemoteOSVersion(string sRemoteName)
  2.         {
  3.             string sVersion;
  4.             sVersion = "NULL";
  5.             strKeyPath = @"SOFTWARE\Microsoft\Windows NT";
  6.             environmentKey = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, sRemoteName).OpenSubKey(strKeyPath);
  7.             lsRemoveSubKeys = environmentKey.GetSubKeyNames();

  8.             foreach (string uninstallKey in lsRemoveSubKeys) // Ergodic the keys under uninstall and pick up the subkey which has the Gen app install path attribute value.
  9.             {
  10.                 RegistryKey rkUninstallKey = environmentKey.OpenSubKey(uninstallKey);  // Open subkey node in order to get the attribute text.

  11.                 sVersion = (String)rkUninstallKey.GetValue("ProductName", String.Empty);
  12.             }
  13.             return sVersion;
  14.         }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值