2010-08-13 16 views
24

Estoy buscando una manera de obtener una identificación única de la computadora. De acuerdo con this post no puedo usar la ID del procesador para este propósito. ¿Puedo tomar la identificación de la placa base? ¿Cuál es la mejor manera de identificar la computadora?
¡Gracias por tu ayuda!Computadora única id

+1

Esto no tiene nada que ver con C#. –

+12

Uno supondría (imprudente, aprecio, al responder preguntas de programación) que una vez que se haya identificado un mecanismo genérico, se deseará una implementación específica en C# ... – Murph

+0

¿Qué etiqueta debo usar para esta pregunta? – StuffHappens

Respuesta

32

Como ha dicho, la ID de CPU no será única, sin embargo, puede usarla con otro identificador de hardware para crear su propia clave única.

conjunto de referencia System.Management

lo tanto, utilizar este código para obtener el ID de la CPU:

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; 
} 

continuación, utilizar este código para obtener el ID de HD:

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

A continuación, se puede simplemente combine estos dos seriales para obtener un identificador único para esa máquina:

string uniqueId = cpuInfo + volumeSerial; 

Obviamente, cuantos más componentes de hardware tenga los identificadores, mayor será la exclusividad. Sin embargo, las posibilidades de que la misma máquina tenga una serie de CPU idéntica y una serie de disco duro ya son casi inexistentes.

+0

Como dije antes, la ID del procesador no es apropiada. – StuffHappens

+0

@StuffHappens: se actualizó la respuesta. – GenericTypeTea

+0

Veo tu punto. Solo dudo de lo que recibiré si hay un RAID y hay 2 discos duros diferentes con el disco C en ellos. – StuffHappens

2

La placa base ID es un identificador bastante único. Otra opción es usar la dirección MAC de las tarjetas de red, que son bastante únicas.

+2

Debe tenerse en cuenta, sin embargo, que los MAC se pueden cambiar desde la ventana de propiedades del NIC para una gran cantidad de NIC, mientras que la identificación de la placa base es mucho más difícil de cambiar. – ErikHeemskerk

+0

Por lo que yo sé, puede cambiar su dirección MAC. ¿Y qué hacer si hay más de un netboard (o cómo debería nombrarlo)? – StuffHappens

+0

Eso es correcto. Una ID de placa madre es mucho más única. Sin embargo, si no requiere una singularidad muy fuerte (es decir, puede suponer que los MAC no cambian), adquirir una dirección MAC es mucho más fácil. @Stuff, hash las direcciones juntas? :) –

2

¿dirección MAC del adaptador de red? Identificador de seguridad (SID) de la instalación del sistema operativo Windows? (suponiendo que se trata de Windows) ¿Podría generar un GUID para cada PC?

¿Qué es exactamente lo que estás tratando de lograr?

+0

+1 por solo generar un GUID: P – cwap

+2

Si está tratando de hacer esto para un mecanismo de licencia, entonces las direcciones SID y MAC se pueden cambiar muy fácilmente, por lo que no sería aceptable. – GenericTypeTea

Cuestiones relacionadas