2012-02-09 39 views
1

大家好,如何获取计算机说明?

我如何编程获取计算机描述? 我正在使用C#和.NET 2.0。

enter image description here

我试图Console.WriteLine(Dns.GetHostName());,但它呼应了Full computer name代替。

我还使用了下面的代码:

ManagementObjectSearcher query1 = new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem") ; 
ManagementObjectCollection queryCollection1 = query1.Get(); 

foreach(ManagementObject mo in queryCollection1) 
{ 
    Console.WriteLine(mo["Description"].ToString()); 
} 

但这似乎不工作,我得到这个异常:

Exception System.IO.FileNotFoundException was thrown in debuggee: Could not load file or assembly 'System.Management, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.

+0

您是否安装了PowerShell? – 2012-02-09 13:31:32

+0

你的第二种方法是正确的,但你得到的例外很奇怪。你如何添加对System.Management的引用? – 2012-02-09 13:32:00

+0

@ AvnerShahar-Kashtan:通过使用System.Management进口它''我也将它添加到我的项目的参考中。 – yonan2236 2012-02-09 13:33:10

回答

7

这是在注册表va略

HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\srvcomment

最简单的方法来访问它会是:

using Microsoft.Win32; 

string key = @"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters"; 
string computerDescription = (string)Registry.GetValue(key, "srvcomment", null); 
+0

是的!这是工作!谢谢ssg:) – yonan2236 2012-02-09 13:42:06

+1

请,请,请不要这样做。此注册表项是[技术上记录](http://technet.microsoft.com/en-us/library/cc787346(v = ws.10).aspx),但这不是查询此信息的受支持方式。将'NetServerGetInfo'与'SERVER_INFO_101'一起使用 - 这将通过C/C++,Pinvoke或JNI提供。特别是一些AV产品锁定了注册码,但Net API仍在继续工作。 – 2013-08-21 15:05:52

+0

@NicholasWilson NetServerGetInfo似乎非常参与查询,结构和所有PInvoke定义。 – 2013-08-21 15:18:11

0

下面的代码将获得计算机描述。我没有在.NET 2.0上测试这个,但是从v1.1开始使用的管理类已经出现了,所以它应该可以工作。

 using System.Management; 

     string description; 

     using (ManagementClass mc = new ManagementClass("Win32_OperatingSystem")) 
     using (ManagementObjectCollection moc = mc.GetInstances()) 
     { 
      foreach (ManagementObject mo in moc) 
      { 
       if (mo.Properties["Description"] != null) 
       { 
        description = mo.Properties["Description"].Value.ToString(); 
        break; 
       } 
      } 
     }