2010-08-13 17 views
24

Benzersiz bilgisayar kimliği almanın bir yolunu arıyorum. this post uyarınca, bu amaçla işlemci kimliğini kullanamıyorum. Anakart kimliğini alabilir miyim? Bilgisayarı tanımlamanın en iyi yolu nedir?
Yardımlarınız için teşekkür ederiz!Benzersiz bilgisayar kimliği

+1

Bunun C# ile ilgisi yoktur. –

+12

Biri, genel bir mekanizma tanımlandığında C# 'de belirli bir uygulamanın tanımlanmasının isteneceğini (rash, programlama sorularına cevap verirken minnettarım) ... – Murph

+0

Bu soru için hangi etiketi kullanmalıyım? – StuffHappens

cevap

32

CPU kimliğinin benzersiz olmadığını söylediğiniz gibi, kendi benzersiz anahtarınızı oluşturmak için başka bir donanım tanımlayıcısını kullanabilirsiniz.

Referans montaj System.Management

Yani CPU Kimliği almak için bu kodu kullanın:

string cpuInfo = string.Empty; 
ManagementClass mc = new ManagementClass("win32_processor"); 
ManagementObjectCollection moc = mc.GetInstances(); 

foreach (ManagementObject mo in moc) 
{ 
    cpuInfo = mo.Properties["processorID"].Value.ToString(); 
    break; 
} 

Sonra HD Kimliği almak için bu kodu kullanın: Sonra

string drive = "C"; 
ManagementObject dsk = new ManagementObject(
    @"win32_logicaldisk.deviceid=""" + drive + @":"""); 
dsk.Get(); 
string volumeSerial = dsk["VolumeSerialNumber"].ToString(); 

yapabilirsiniz Bu iki seriyi yalnızca bu makine için benzersiz bir ürün edinmek için birleştirin:

string uniqueId = cpuInfo + volumeSerial; 

Açıkçası, daha fazla donanım bileşenleri kimliklerini alırsınız, benzersizliği artar. Bununla birlikte, aynı makinenin aynı CPU serisine ve Sabit disk serisine sahip olma şansı hiç yok.

+0

Daha önce söylediğim gibi işlemci kimliği uygun değil. – StuffHappens

+0

@StuffHappens - Cevabı güncellendi. – GenericTypeTea

+0

Ben senin noktanı görüyorum. Sadece bir RAID varsa ne elde edeceğime dair şüphem var ve bunlarda disk C ile 2 farklı HDD var. – StuffHappens

2

Anakart kimliği oldukça benzersiz bir tanımlayıcıdır. Başka bir seçenek, oldukça benzersiz olan ağ kartları MAC adresini kullanmaktır.

+2

Ancak, bir NIC'ler için NIC özellikleri penceresinden MAC'lerin değiştirilebildiği, ancak bir anakart kimliğinin değiştirilmesi çok daha zor olduğu belirtilmelidir. – ErikHeemskerk

+0

Bildiğim kadarıyla mac adresinizi değiştirebilirsiniz. Ve birden fazla netboard varsa ne yapmalıyım (veya nasıl adlandırmalıyım)? – StuffHappens

+0

Bu doğru. Bir anakart kimliği çok daha eşsizdir. Bununla birlikte, eğer çok güçlü bir teklik gerektirmiyorsa (yani MAC'ların değişmediğini varsayabilirsin), bir mac adresi almak çok daha kolaydır. @Stuff, adresleri bir araya getirdiniz mi? Sadece bir GUID oluşturmak için :) –

2

Ağ bağdaştırıcısının MAC adresi? Windows işletim sistemi güvenlik tanımlayıcısı (SID)? (ele aldığınız pencereleri varsayarak) Her PC için bir GUID oluşturuyor musunuz?

Tam olarak ne elde etmeye çalışıyorsunuz?

+0

+1: P – cwap

+2

Bir lisanslama mekanizması için bunu yapmaya çalışıyorsa, SID'ler ve MAC adresleri kolayca değiştirilebilir, bu nedenle kabul edilemez. – GenericTypeTea

İlgili konular