@Malachi, cette question concerne les services Windows.
Sam
2
@Sam un service Windows n'est qu'une application Windows qui s'exécute en arrière-plan, donc c'est vraiment la même chose.
Malachi
@Malachi, oui, je sais ce que tu veux dire. Cependant, je pense que les références aux façons spécifiques à ASP.NET et à Winforms de le faire dans les réponses à cette question pourraient ne pas s'appliquer à cette question.
Sam
1
@Malachi, je pense que vous avez mal compris ce que je voulais dire sur ASP.NET. Je ne faisais pas référence à une application ASP.NET obtenant les noms d'ordinateurs de ses clients, bien que le faire (pour le nom DNS) soit probablement facile car l'application obtiendrait les adresses IP des clients. Je faisais référence aux applications ASP.NET obtenant les noms de leurs ordinateurs hôtes. Voir la réponse la mieux notée ici pour un exemple.
@tvanfosson: quelle est la différence? Je veux dire, lequel dois-je utiliser quand? Cela a-t-il des implications sur la sécurité?
PK
26
J'utiliserais le premier d'une console ou d'une application Winforms, le second d'une application Web et le troisième si j'avais besoin d'obtenir le FQDN. Consultez la documentation référencée pour plus d'informations sur les autorisations requises.
tvanfosson
1
@tvanfosson Tous ces trois m'obtiennent le nom du serveur et non la machine des clients qui accède à la page. Est-ce ainsi que cela fonctionne? ou je fais quelque chose de mal. Je voudrais obtenir la machine des clients et non le serveur. J'utilise des formulaires Web avec asp.NET 4.0
Ryan S
2
Je viens de tester cela et j'ai trouvé que Dns.GetHostName()cela ne donnait pas le nom complet.
Sam
5
Notez que System.Enviornment.MachineName ne vous donnera que le nom NetBIOS, donc si le nom d'hôte dépasse 15 caractères, vous rencontrerez des problèmes si vous avez besoin du nom complet. Je ne peux pas parler pour les autres.
RandomInsano
78
System.Environment.MachineName
Ou, si vous utilisez Winforms, vous pouvez utiliser System.Windows.Forms.SystemInformation.ComputerName, qui renvoie exactement la même valeur que System.Environment.MachineName.
Eh bien, il existe un autre moyen: Windows Management Instrumentation
using System.Management;try{ManagementObjectSearcher searcher =newManagementObjectSearcher("root\\CIMV2","SELECT Name FROM Win32_ComputerSystem");foreach(ManagementObject queryObj in searcher.Get()){Console.WriteLine("-----------------------------------");Console.WriteLine("Win32_ComputerSystem instance");Console.WriteLine("-----------------------------------");Console.WriteLine("Name: {0}", queryObj["Name"]);}}catch(ManagementException e){// exception handling}
Le nom DNS et le nom d'ordinateur peuvent différer. Il demande le nom de l'ordinateur!
marsh-wiggle
4
J'ai défini le .InnerHtml d'un <p>support pour mon projet Web sur le nom d'ordinateur de l'utilisateur en procédant comme suit:
HTML:
<div class="col-md-4"><h2>YourComputerNameIs</h2><p id="pcname" runat="server"></p><p><a class="btn btn-default" href="#">Learn more »</a></p></div>
C #:
using System;
using System.Web.UI;
namespace GetPCName{publicpartialclass_Default:Page{protectedvoidPage_Load(object sender,EventArgs e){
pcname.InnerHtml=Environment.MachineName;}}}
2 méthodes plus utiles: System.Environment.GetEnvironmentVariable ("ComputerName")
System.Environment.GetEnvironmentVariable ("ClientName") pour obtenir le nom du PC de l'utilisateur s'il est connecté via Citrix XenApp ou Terminal Services (aka RDS, RDP, Remote Desktop)
Réponses:
System.Environment.MachineName
à partir d'une console ou d'une application WinForms.HttpContext.Current.Server.MachineName
à partir d'une application webSystem.Net.Dns.GetHostName()
obtenir le FQDNVoir Comment trouver le nom de domaine complet de la machine locale dans C # /. NET? si le dernier ne vous donne pas le FQDN et que vous en avez besoin.
Voir les détails sur la différence entre SystemInformation.ComputerName, Environment.MachineName et Net.Dns.GetHostName
la source
Dns.GetHostName()
cela ne donnait pas le nom complet.System.Environment.MachineName
Ou, si vous utilisez Winforms, vous pouvez utiliser
System.Windows.Forms.SystemInformation.ComputerName
, qui renvoie exactement la même valeur queSystem.Environment.MachineName
.la source
la source
open system
...let system_name = System.Environment.MachineName
Certaines méthodes sont données ci-dessous pour obtenir le nom de la machine ou le nom de l'ordinateur
Méthode 1: -
Méthode 2: -
Méthode 3: -
Méthode 4: -
Pour plus voir mon blog
la source
la source
Vous pouvez avoir accès au nom de la machine à l' aide de Environment.MachineName .
la source
Eh bien, il existe un autre moyen: Windows Management Instrumentation
MSDN
WMI
Créateur de code WMI
FAQ
la source
Essaye ça:
la source
J'ai défini le .InnerHtml d'un
<p>
support pour mon projet Web sur le nom d'ordinateur de l'utilisateur en procédant comme suit:HTML:
C #:
la source
2 méthodes plus utiles: System.Environment.GetEnvironmentVariable ("ComputerName")
System.Environment.GetEnvironmentVariable ("ClientName") pour obtenir le nom du PC de l'utilisateur s'il est connecté via Citrix XenApp ou Terminal Services (aka RDS, RDP, Remote Desktop)
la source
Essaye celui-là.
la source