@Malachi, pertanyaan itu adalah tentang layanan Windows.
Sam
2
@ Sam layanan windows hanyalah aplikasi windows yang berjalan di latar belakang, jadi sungguh hal yang sama.
Maleakhi
@Malachi, ya, saya tahu apa yang Anda maksud. Namun, saya pikir referensi untuk ASP.NET-spesifik dan Winforms-cara khusus untuk melakukan ini dalam jawaban atas pertanyaan ini mungkin tidak berlaku dalam pertanyaan itu.
Sam
1
@Malachi, saya pikir Anda salah mengerti apa yang saya maksud tentang ASP.NET. Saya tidak merujuk pada aplikasi ASP.NET yang mendapatkan nama komputer kliennya, meskipun melakukannya (untuk nama DNS) mungkin mudah karena aplikasi tersebut akan mendapatkan alamat IP klien. Saya merujuk pada aplikasi ASP.NET mendapatkan nama komputer host mereka. Lihat jawaban dengan nilai tertinggi di sini sebagai contoh.
@ tvanfosson: apa bedanya? Maksud saya, yang mana yang harus saya gunakan kapan? Apakah ini memiliki implikasi keamanan?
PK
26
Saya akan menggunakan yang pertama dari aplikasi konsol atau winforms, yang kedua dari aplikasi web, dan yang ketiga jika saya perlu mendapatkan FQDN. Lihat dokumentasi yang dirujuk untuk informasi tentang izin yang diperlukan.
tvanfosson
1
@vanfosson Ketiganya mendapatkan saya nama server dan bukan mesin klien yang mengakses halaman. Apakah ini cara kerjanya? atau apakah saya melakukan sesuatu yang salah. Saya ingin mendapatkan mesin klien, dan bukan server. Saya menggunakan Formulir Web dengan asp.NET 4.0
Ryan S
2
Saya baru saja menguji ini dan Dns.GetHostName()ternyata tidak memberikan nama yang sepenuhnya memenuhi syarat.
Sam
5
Perhatikan bahwa System.Enviornment.MachineName hanya akan memberi Anda nama NetBIOS, jadi jika nama host lebih panjang dari 15 karakter, Anda akan mengalami masalah jika Anda memerlukan nama lengkap. Saya tidak bisa berbicara untuk yang lain.
RandomInsano
78
System.Environment.MachineName
Atau, jika Anda menggunakan Winforms, Anda dapat menggunakan System.Windows.Forms.SystemInformation.ComputerName, yang mengembalikan nilai persis sama dengan System.Environment.MachineName.
Nah ada satu cara lagi: Instrumentasi Manajemen Windows
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}
Nama DNS dan nama pengguna mungkin berbeda. Dia meminta nama pengguna!
marsh-goyangkan
4
Saya menetapkan .InnerHtml <p>braket untuk proyek web saya ke nama komputer pengguna melakukan hal berikut:
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 metode yang lebih bermanfaat: System.Environment.GetEnvironmentVariable ("ComputerName")
System.Environment.GetEnvironmentVariable ("ClientName") untuk mendapatkan nama PC pengguna jika mereka terhubung melalui Citrix XenApp atau Terminal Services (alias RDS, RDP, Remote Desktop)
Jawaban:
System.Environment.MachineName
dari aplikasi konsol atau WinForms.HttpContext.Current.Server.MachineName
dari aplikasi webSystem.Net.Dns.GetHostName()
untuk mendapatkan FQDNLihat Bagaimana menemukan FQDN mesin lokal di C # /. NET? jika yang terakhir tidak memberi Anda FQDN dan Anda membutuhkannya.
Lihat detail tentang Perbedaan antara SystemInformation.ComputerName, Environment.MachineName, dan Net.Dns.GetHostName
sumber
Dns.GetHostName()
ternyata tidak memberikan nama yang sepenuhnya memenuhi syarat.System.Environment.MachineName
Atau, jika Anda menggunakan Winforms, Anda dapat menggunakan
System.Windows.Forms.SystemInformation.ComputerName
, yang mengembalikan nilai persis sama denganSystem.Environment.MachineName
.sumber
sumber
open system
let system_name = System.Environment.MachineName
Beberapa metode diberikan di bawah ini untuk mendapatkan nama mesin atau nama komputer
Metode 1: -
Metode 2: -
Metode 3: -
Metode 4: -
Untuk lebih lanjut lihat blog saya
sumber
sumber
Anda dapat memiliki akses nama mesin menggunakan Environment.MachineName .
sumber
Nah ada satu cara lagi: Instrumentasi Manajemen Windows
MSDN
WMI
Pembuat Kode WMI
Tanya Jawab
sumber
Coba ini:
sumber
Saya menetapkan .InnerHtml
<p>
braket untuk proyek web saya ke nama komputer pengguna melakukan hal berikut:HTML:
C #:
sumber
2 metode yang lebih bermanfaat: System.Environment.GetEnvironmentVariable ("ComputerName")
System.Environment.GetEnvironmentVariable ("ClientName") untuk mendapatkan nama PC pengguna jika mereka terhubung melalui Citrix XenApp atau Terminal Services (alias RDS, RDP, Remote Desktop)
sumber
Coba yang ini.
sumber