@ Malachi, diese Frage bezieht sich auf Windows-Dienste.
Sam
2
@Sam Ein Windows-Dienst ist nur eine Windows-Anwendung, die im Hintergrund ausgeführt wird. Es ist also wirklich dasselbe.
Malachi
@ Malachi, ja, ich weiß was du meinst. Ich denke jedoch, dass die Verweise auf die ASP.NET-spezifischen und Winforms-spezifischen Methoden in den Antworten auf diese Frage in dieser Frage möglicherweise nicht zutreffen.
Sam
1
@ Malachi, ich denke, Sie haben falsch verstanden, was ich mit ASP.NET gemeint habe. Ich bezog mich nicht auf eine ASP.NET-Anwendung, die die Computernamen ihrer Clients abruft, obwohl dies (für den DNS-Namen) wahrscheinlich einfach ist, da die Anwendung die IP-Adressen der Clients abrufen würde. Ich bezog mich auf ASP.NET-Anwendungen, die die Namen ihrer Hostcomputer erhielten. Ein Beispiel finden Sie hier in der Antwort mit der höchsten Bewertung.
@tvanfosson: Was ist der Unterschied? Ich meine, welches soll ich wann verwenden? Hat dies irgendwelche Auswirkungen auf die Sicherheit?
PK
26
Ich würde die erste von einer Konsolen- oder Winforms-App verwenden, die zweite von einer Web-App und die dritte, wenn ich den vollqualifizierten Domänennamen benötigen würde. Informationen zu den erforderlichen Berechtigungen finden Sie in der Dokumentation, auf die verwiesen wird.
Tvanfosson
1
@tvanfosson Alle diese drei geben mir den Servernamen und nicht den Client-Computer, der auf die Seite zugreift. Funktioniert das so? oder mache ich etwas falsch Ich möchte den Client-Computer und nicht den Server erhalten. Ich verwende Web Forms mit asp.NET 4.0
Ryan S
2
Ich habe dies gerade getestet und festgestellt, dass der Name Dns.GetHostName()nicht vollständig qualifiziert ist.
Sam
5
Beachten Sie, dass System.Enviornment.MachineName nur den NetBIOS-Namen angibt. Wenn der Hostname also länger als 15 Zeichen ist, treten Probleme auf, wenn Sie den vollständigen Namen benötigen. Ich kann nicht für die anderen sprechen.
RandomInsano
78
System.Environment.MachineName
Wenn Sie Winforms verwenden, können Sie auch verwenden System.Windows.Forms.SystemInformation.ComputerName, das genau den gleichen Wert wie zurückgibt System.Environment.MachineName.
Nun, es gibt noch einen weiteren Weg: 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}
DNS-Name und Computername können unterschiedlich sein. Er fragt nach dem Computernamen!
Marsh-Wiggle
4
Ich setze die .InnerHtml einer <p>Klammer für mein Webprojekt auf den Computernamen des Benutzers und gehe dabei wie folgt vor:
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 weitere hilfreiche Methoden: System.Environment.GetEnvironmentVariable ("ComputerName")
System.Environment.GetEnvironmentVariable ("ClientName"), um den Namen des PCs des Benutzers abzurufen, wenn dieser über Citrix XenApp oder Terminaldienste (auch bekannt als RDS, RDP, Remotedesktop) verbunden ist.
Antworten:
System.Environment.MachineName
von einer Konsole oder WinForms-App.HttpContext.Current.Server.MachineName
von einer Web-AppSystem.Net.Dns.GetHostName()
um den FQDN zu erhaltenSiehe So finden Sie den vollqualifizierten Domänennamen des lokalen Computers in C # /. NET? Wenn der letzte Ihnen den FQDN nicht gibt und Sie ihn brauchen.
Weitere Informationen zum Unterschied zwischen SystemInformation.ComputerName, Environment.MachineName und Net.Dns.GetHostName
quelle
Dns.GetHostName()
nicht vollständig qualifiziert ist.System.Environment.MachineName
Wenn Sie Winforms verwenden, können Sie auch verwenden
System.Windows.Forms.SystemInformation.ComputerName
, das genau den gleichen Wert wie zurückgibtSystem.Environment.MachineName
.quelle
quelle
open system
...let system_name = System.Environment.MachineName
Im Folgenden werden einige Methoden angegeben, um den Computernamen oder den Computernamen abzurufen
Methode 1:-
Methode 2: -
Methode 3: -
Methode 4: -
Weitere Informationen finden Sie in meinem Blog
quelle
quelle
Sie können über Environment.MachineName auf den Computernamen zugreifen .
quelle
Nun, es gibt noch einen weiteren Weg: Windows Management Instrumentation
MSDN
WMI
WMI-Code-Ersteller
FAQs
quelle
Versuche dies:
quelle
Ich setze die .InnerHtml einer
<p>
Klammer für mein Webprojekt auf den Computernamen des Benutzers und gehe dabei wie folgt vor:HTML:
C #:
quelle
2 weitere hilfreiche Methoden: System.Environment.GetEnvironmentVariable ("ComputerName")
System.Environment.GetEnvironmentVariable ("ClientName"), um den Namen des PCs des Benutzers abzurufen, wenn dieser über Citrix XenApp oder Terminaldienste (auch bekannt als RDS, RDP, Remotedesktop) verbunden ist.
quelle
Probier diese.
quelle