.NET'te bilgisayar adını nasıl alabilirim


285

.NET c # bilgisayar adını nasıl alabilirim

c#  .net 

Yinelenen Soru bağlantısı
Malachi

1
@Malachi, bu soru Windows hizmetleriyle ilgili.
Sam

2
@Sam bir windows hizmeti sadece arka planda çalışan bir windows uygulamasıdır, bu yüzden gerçekten aynı şeydir.
Malachi

@Malachi, evet, ne demek istediğini biliyorum. Ancak, bu sorunun yanıtlarında bunu ASP.NET'e özgü ve Winforms'a özgü yollarla ilgili başvurular için geçerli olduğunu düşünüyorum.
Sam

1
@Malachi, sanırım ASP.NET hakkında ne demek istediğimi yanlış anladın. Uygulama istemcilerinin IP adreslerini alacağı için (DNS adı için) muhtemelen kolay olsa da, istemcilerinin bilgisayar adlarını alan bir ASP.NET uygulamasına başvurmuyordum. Ana bilgisayarlarının adlarını almak ASP.NET uygulamaları atıfta. Bir örnek için en yüksek puanlı cevaba bakınız.
Sam

Yanıtlar:


400

Bkz . Yerel makinenin FQDN'sini C # /. NET'te nasıl bulabilirim? sonuncusu size FQDN vermezse ve ihtiyacınız varsa.

SystemInformation.ComputerName, Environment.MachineName ve Net.Dns.GetHostName arasındaki fark hakkında ayrıntılara bakın


3
@tvanfosson: fark nedir? Yani, hangisini ne zaman kullanmalıyım? Bunun herhangi bir güvenlik etkisi var mı?
PK

26
İlkini bir konsoldan veya winforms uygulamasından, ikincisini bir web uygulamasından ve üçüncüsünü FQDN'yi almam gerekirse kullanırdım. Gerekli izinler hakkında bilgi için başvurulan belgelere bakın.
tvanfosson

1
@tvanfosson Bu üçünün tamamı bana sayfaya erişen istemci makinesini değil sunucu adını alıyor. Bu şekilde mi çalışıyor? yoksa yanlış bir şey mi yapıyorum. Ben istemciler makine almak istiyorum, sunucu değil. Asp.NET 4.0 ile Web Formları kullanıyorum
Ryan S

2
Bunu test ettim ve bunun tam adı Dns.GetHostName() vermediğini gördüm .
Sam

5
System.Enviornment.MachineName öğesinin yalnızca NetBIOS adını vereceğini unutmayın, bu nedenle ana bilgisayar adı 15 karakterden uzunsa, tam adına ihtiyacınız varsa sorunlarla karşılaşırsınız. Diğerleri için konuşamam.
RandomInsano

78

System.Environment.MachineName

Veya, Winforms kullanıyorsanız System.Windows.Forms.SystemInformation.ComputerName, tam olarak aynı değeri döndüren kullanabilirsiniz System.Environment.MachineName.



23

Makine adı veya bilgisayar adı almak için aşağıda bazı yöntemler verilmiştir

Yöntem 1:-

string MachineName1 = Environment.MachineName;

Yöntem 2: -

string MachineName2 = System.Net.Dns.GetHostName();

Yöntem 3: -

string MachineName3 = Request.ServerVariables["REMOTE_HOST"].ToString();

Yöntem 4: -

string MachineName4 = System.Environment.GetEnvironmentVariable("COMPUTERNAME");

Daha fazla bilgi için bloguma bakın


22
string name = System.Environment.MachineName;


15

Bir yol daha var: Windows Yönetim Araçları

using System.Management;

try
        {
            ManagementObjectSearcher searcher =
                new ManagementObjectSearcher("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
        }

MSDN

WMI

WMI Kodu oluşturucu

SSS


4

Bunu dene:

string[] computer_name = System.Net.Dns.GetHostEntry(System.Web.HttpContext.Current.Request.ServerVariables["remote_addr"]).HostName.Split(new Char[] { '.' });
return computer_name[0].ToString();

1
DNS adı ve bilgisayar adı farklı olabilir. Bilgisayar adını istiyor!
marsh-wiggle

4

<p>Web projem için bir parantez .InnerHtml kullanıcının bilgisayar adına aşağıdakileri yaparak ayarlayın:

HTML:

    <div class="col-md-4">
       <h2>Your Computer Name Is</h2>
       <p id="pcname" runat="server"></p>
       <p>
           <a class="btn btn-default" href="#">Learn more &raquo;</a>
       </p>
    </div>

C #:

using System;
using System.Web.UI;

namespace GetPCName {
   public partial class _Default : Page {
    protected void Page_Load(object sender, EventArgs e) {            
        pcname.InnerHtml = Environment.MachineName;
    }
   }
}

1

2 daha faydalı yöntem: System.Environment.GetEnvironmentVariable ("ComputerName")

Citrix XenApp veya Terminal Hizmetleri (diğer adıyla RDS, RDP, Uzak Masaüstü) üzerinden bağlanırsa kullanıcının PC'sinin adını almak için System.Environment.GetEnvironmentVariable ("ClientName")


1

Bunu dene.

public static string GetFQDN()
{
    string domainName = NetworkInformation.IPGlobalProperties.GetIPGlobalProperties().DomainName;
    string hostName = Dns.GetHostName();
    string fqdn;
    if (!hostName.Contains(domainName))
        fqdn = hostName + "." +domainName;
    else
        fqdn = hostName;

    return fqdn;
}

Ama neden System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties () kullanmıyorsunuz.
osexpert
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.