Pregunta

¿Cuál es la mejor manera de generar una identificación única de hardware en Microsoft Windows con C ++ que no es fácilmente falsificables (por ejemplo, cambiar la dirección MAC)?

¿Fue útil?

Solución

Windows almacena un GUID único para cada máquina en el registro en:

HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\MachineGuid

Otros consejos

Esto solía ser el número de serie de la CPU, pero hoy en día hay muchos tipos de placas base y este factor no es exacta. dirección MAC se puede falsificar fácilmente. Eso nos deja con el número de serie del disco duro interno. Véase también: http: //www.codeproject. com / Artículos / 319181 / Haephrati-searching-for-a-fiable-Hardware-ID

Hay una variedad de "trucos", pero la única "respuesta física" real "no hay, no hay solución".

Una "máquina" no es nada más que un bus pasivo con un poco de hardware alrededor. A pesar de que cada pieza de hierro puede proporcionar un identificador de alguna forma utilizable, cada pieza de hierro puede ser reemplazado por un usuario por cualquier mala o buena razón por la que no puede ser plenamente conscientes de (por lo que si usted basa su funcionalidad en esto, se crea problemas a su usuario, y por lo tanto -como consecuencia- a sí mismo cada vez que un hardware tienen que ser reemplazados / Reinitialized / reconfigurado etc, etc.).

Ahora, si su problema es identificar una máquina en un contexto en el que muchas máquinas tienen que interoperar entre sí, se trata de un papel bien interpretado por MAC o direcciones IP o nombres de host. Pero estar preparados a la idea de que no son necesariamente constante de tiempo largo período (por lo que evitar al disco de código ellas - en su lugar "descubrir luego" a cualquiera de su puesta en marcha)

Si su problema es -instead- identificar una instancia de software o una licencia, es probable que haya mejor concentrarse en otro tipo de solución: usted vende licencias a los "usuarios" (que es el usuario que tiene el dinero, y no su equipo !), no a sus "máquinas" (que los usuarios deben tener la libertad de cambiar cada vez que necesitan / gusta sin su permiso, ya que di no licenciar el hardware o el sistema operativo ...), por lo tanto, el problema no es identificar una máquina, pero un usuario (consideran que una misma máquina puede ser un anfitrión para muchos usuarios y que un mismo usuario puede trabajar en una variedad de máquinas ..., no se puede asumir / imponer una relación 1: 1, sin tropezar con algún tipo de los problemas más pronto o más tarde, cuando este idioma ifs encuentran a no más FIT).

La idea debe ser para registrar los usuarios en un sitio un poco accesible, darles las claves que generan, y comprobar que un mismo usuario / par de claves no se con-temporal se utiliza más de un número determinado de veces bajo un período de tiempo determinado . Cuando violaciónes superan, o las teclas se vuelve viejo, simplemente bloquear y esperar a que el usuario renueve.

Como se puede ver, la respuesta depende principalmente de la razón detrás de su pregunta, más que de la propia pregunta.

Hay varios identificadores asignados a los equipos que se pueden leer y combinarse para formar una clave de equipo. Por ejemplo, se puede obtener el ID del disco duro donde se almacena el software, el ID de proc, etc. Algunos de éstos se pueden establecer más fácilmente que otras, pero parte de la fuerza está en la combinación de múltiples piezas que no son necesariamente lo suficientemente fuerte por sí mismos.

Aquí hay un programa (también disponible como DLL) que puede leer y mostrar su ordenador / identificador de hardware: http: //www.soft.tahionic.com/download-hdd_id/index.html

Utilice las API de Win32 Sistema de HDS. No leer el registro, no tiene ningún sentido en absoluto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top