2012-02-09 1 views
1

Bonjour à tous,Comment obtenir la description de l'ordinateur?

Comment puis-je obtenir par programme la description de l'ordinateur? J'utilise C# et .NET 2.0.

enter image description here

J'ai essayé Console.WriteLine(Dns.GetHostName()); mais il fait écho à la Full computer name place.

J'ai aussi utilisé le code suivant:

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

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

Mais cela semble ne fonctionne pas, je suis arrivé cette exception:

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

Avez-vous installé PowerShell? –

+0

Votre deuxième approche est correcte, mais l'exception que vous obtenez est étrange. Comment avez-vous ajouté la référence à System.Management? –

+0

@ AvnerShahar-Kashtan: en l'important 'using System.Management;' Je l'ai aussi ajouté dans la référence de mon projet. – yonan2236

Répondre

7

C'est dans le registre va Lue

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

La façon la plus simple pour y accéder serait:

using Microsoft.Win32; 

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

oui! ça fonctionne! merci ssg:) – yonan2236

+1

S'il vous plaît, s'il vous plaît, s'il vous plaît, _don't_ faire ceci. Cette clé de registre est [documentée techniquement] (http://technet.microsoft.com/fr-fr/library/cc787346 (v = ws.10) .aspx), mais il ne s'agit pas de la manière prise en charge pour interroger cette information. Utilisez 'NetServerGetInfo' avec' SERVER_INFO_101' - ceci sera disponible via C/C++, Pinvoke ou JNI. En particulier, certains produits antivirus verrouillent la clé reg, mais l'API Net continue de fonctionner. –

+0

@NicholasWilson NetServerGetInfo semble très impliqué pour juste interroger cela, avec les structures et toutes les définitions PInvoke. –

0

Le code ci-dessous obtenir la description de l'ordinateur. Je n'ai pas testé cela sur .NET 2.0, mais les classes de gestion utilisées existent depuis la version 1.1, cela devrait donc fonctionner.

 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; 
       } 
      } 
     } 
Questions connexes