Pregunta

Para un requisito para generar las claves de licencia por PC, necesito algo de código que devolverá un establo y clave única (casi) en cualquier PC. No hace Tienes que se garantice único, pero cerca. Es hace necesidad de ser razonablemente estable, aunque, por lo que un PC determinado siempre genera el mismo resultado a menos que el hardware se cambia sustancialmente.

Esto es para una aplicación de Windows, usando wxWidgets sino un Win32 u otra opción está muy bien.

Estaba pensando en dirección MAC, pero ¿qué pasa con los ordenadores portátiles que se pueden desactivar de forma rutinaria la tarjeta de red en modo de ahorro de energía? Me encontré con GetCurrentHwProfile pero no acaba mirada a lo que yo quiero?

¿Fue útil?

Solución

Me gustaría ir con el método de direcciones MAC; cuando las tarjetas inalámbricas LAN / están apagados siguen apareciendo en conexiones de red. Por tanto, debe seguir siendo capaz de conseguir el MAC.

Considere esto: Cada vez que usted sería capaz de ponerse en contacto con su servidor web o lo que sea que estés catalogación de estos identificadores con el usuario va a Tienes para tener algún tipo de tarjeta de red disponible <. / p>

Ah, y que podría ser capaz de utilizar el número de serie de la CPU del ordenador es compatible con TI del cliente.

Otros consejos

Una idea que tuve hace un tiempo para esto es el uso CryptProtectData como una forma de identificar una máquina. Detrás de las escenas en que la API, Microsoft ha hecho lo que usted está buscando. Nunca probé sin embargo y estoy ansioso por ver si es realmente viable.

Básicamente se podría codificar un valor constante con la magia CryptProtectData con CRYPTPROTECT_LOCAL_MACHINE, y el resultado es el ID de la máquina.

Si quieres algo un poco más difícil de parodia que cualquiera que sea la propia máquina le puede decir, es probable que necesita proporcionar un dongle USB dedicado para este fin (no sólo una unidad flash).

¿Cómo sobre el uso del número de serie del disco duro donde está instalado Windows?

La función GetVolumeInformation () voluntad darle tal número de serie. Para acceder al ID asignado por el proveedor de disco duro en lugar del ID asignado por Windows, puede utilizar la clase Win32_PhysicalMedia.

Para determinar la unidad donde está instalado Windows, que podría ampliar el% windir variable" mediante el uso de las ExpandEnvironmentStrings de función ()

Otra opción, si su arquitectura permite, es utilizar UuidCreate () para generar un GUID aleatorio durante la instalación y la guarda de forma permanente en el registro. Este GUID se puede utilizar como ID, siempre y cuando los restos del registro. Una nueva base de datos del registro se considera generalmente como una nueva instalación.

Una tercera opción es tener un servidor conocido asignación de los identificadores. Tras la puesta en marcha, el software podría mejorar para la identificación en el registro y si no lo encuentra, pondría en contacto con el servidor y le facilitará su dirección MAC, nombre de host, el número de serie del disco duro, la máquina SID y cualquier cantidad de información indentifyable (teclas).

El servidor determina entonces si el cliente ya está registrado o no en base a la información dada. El servidor podría tener una política relajada y, por ejemplo, sólo requieren la mayor parte de las claves para un partido, por lo que el mecanismo podría funcionar incluso en el caso de una completa borrar del registro y si una parte (pero no todos) de los equipos era reemplazado.

Creo que no hay realmente fácil y método único hasta ahora descubierto aquí.

  1. GetVolumeInformation no recupera ni siquiera cerca de identificación única .....
  2. Para usar cualquiera de serie del hardware se debe a un problema fabrica no están comprometidos con el apoyo siempre y sobre todo para mantenerlo único global
  3. GetCurrentHwProfile recupera GUID pero de valor afectada por menor! cambios en el hardware ...
  4. Uso de clave de producto ... traerá U para lidiar con el software robado -. Hay muchas instalaciones de piratas el mundo
  5. Creación del propio GUID y la preservación de bajo registro (en cualquier lugar) no impedirá la duplicación mediante la clonación de imagen ....
    etc ... Desde mi perspectiva de vista es la mejor manera de combinar: Lista de volumen ID + MAC + Máquina SID + Nombre de la máquina. Y, obviamente, manejar la política de licencia en el lado del servidor; 0)

Saludos Mickel.

Para una prueba bastante muerto cerebral estoy usando el código ProductID del sistema operativo y el nombre del equipo - tanto extraída del Registro. En realidad, no asegurar, pero todo es la seguridad de simulación de todos modos.

editar

Para responder a la pregunta de Juan acerca de lo que estoy leyendo claves:

SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProductID

SYSTEM \ CurrentControlSet \ Control \ ComputerName \ equipo \ ComputerName

¿Cómo sobre el uso del número de serie de una CPU. Recuerdo que Microsoft utiliza para proporcionar una API para que este ejecute el código ensamblador necesario y devolverle todo tipo de información sobre la CPU, incluyendo el número de serie. No estoy seguro si iba a trabajar con chips de AMD o no, creo que era específico de Intel.

Sin duda, la CPU Id es lo suficientemente seguro y estático !!

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