Domanda

Per un requisito per generare chiavi di licenza per-PC, ho bisogno di un po 'di codice che restituirà una stalla e una chiave unica (quasi) su qualsiasi PC. Non sono per essere garantito unica, ma quasi. E ' non ha bisogno di essere però ragionevolmente stabile, in modo che un dato PC genera sempre lo stesso risultato a meno che l'hardware è sostanzialmente modificata.

Questo è per un'applicazione Windows, usando wxWidgets ma un Win32 o altra opzione è bene.

Stavo pensando di indirizzo MAC ma per quanto riguarda i computer portatili in grado di routine disattivare la scheda di rete in modalità di risparmio energetico? Mi sono imbattuto in GetCurrentHwProfile ma non abbastanza sguardo come quello che voglio?

È stato utile?

Soluzione

vorrei solo andare con il metodo MAC address; quando le schede wireless / LAN sono spenti si mostrano ancora in Connessioni di rete. Si dovrebbe dunque ancora in grado di ottenere il MAC.

Considerate questo: Ogni volta che si sarebbe in grado di contattare il server web o qualsiasi cosa tu stia catalogare questi ID con l'utente sta per sono di avere una qualche forma di scheda di rete disponibili <. / p>

Oh, e si potrebbe essere in grado di utilizzare il numero di serie della CPU di supporti informatici del cliente esso.

Altri suggerimenti

Un'idea che avevo un po 'indietro per questo è di utilizzare CryptProtectData come un modo per identificare una macchina. Dietro le quinte di tale API, Microsoft ha fatto quello che stai cercando. Non ho mai provato e anche se io sono curioso di sapere se in realtà è praticabile.

In pratica si sarebbe codificare un valore magico costante con CryptProtectData con CRYPTPROTECT_LOCAL_MACHINE, e il risultato è il vostro ID macchina.

Se volete qualcosa di un po 'più difficile da spoof che qualunque sia la macchina stessa può dire, avrete probabilmente bisogno di fornire un dongle USB dedicato per questo scopo (non solo un flash drive).

Come sull'utilizzo il numero di serie del disco rigido in cui è installato Windows?

La funzione GetVolumeInformation () volontà dare a tale numero di serie. Per accedere al ID assegnato dal fornitore harddisk anziché l'ID assegnato da Windows, è possibile utilizzare la classe Win32_PhysicalMedia.

Per determinare l'unità in cui è installato Windows, è possibile espandere il% windir" variabile utilizzando i ExpandEnvironmentStrings funzione ()

Un'altra opzione, se la propria architettura consente, è quello di utilizzare UuidCreate () per generare un GUID casuale al momento dell'installazione e salvarlo in modo permanente nel Registro di sistema. Questo GUID può quindi essere utilizzato come ID finché i resti del Registro di sistema. Un nuovo database del Registro è generalmente considerato come una nuova installazione.

Una terza opzione è quella di avere un server noto assegnando gli ID. All'avvio, il software potrebbe guardare in alto per l'ID nel Registro di sistema e se non lo trova, avrebbe contattato il server e gli mette a disposizione il suo indirizzo MAC, nome host, il numero di serie del disco rigido, macchina SID e qualsiasi numero di informazioni indentifyable (tasti).

Il server determina quindi se il cliente è già registrato o meno in base alle informazioni fornite. Il server potrebbe avere una politica rilassato e, ad esempio solo richiedere la maggior parte delle chiavi per un match, in modo che il meccanismo avrebbe funzionato anche in caso di completa spazzare via del Registro di sistema e se una parte (ma non tutti) l'hardware era sostituito.

I non ci penso non veramente facile e metodo unico finora scoperto qui.

  1. GetVolumeInformation non recupera nemmeno vicino a ID univoco .....
  2. Per usare qualsiasi serie hardware è perché problematico produce non sono impegnati a sostenuta sempre e soprattutto di tenerlo a livello globale unica
  3. GetCurrentHwProfile recupera GUID, ma il suo valore influenzato da minori! modifiche hardware ...
  4. Utilizzo di Product Key ... porterà U a che fare con il software rubato -. Ci sacco di installazioni dei pirati il ??mondo
  5. Creazione di propria GUID e conservare sotto registro (in qualsiasi luogo) non impedirà la duplicazione con la clonazione di immagine ....
    eccetera... Dal mio punto di vista di vista il modo migliore è di combinare: Lista di Volume ID + MAC + macchina SID + Nome macchina. E ovviamente gestire la politica di licenza sul lato server; 0)

Saluti Mickel.

Per un test morto abbastanza cervello Sto usando il codice ProductID del sistema operativo e il nome del computer - sia estratte dal Registro di sistema. Non proprio sicuro, ma la sua tutta la sicurezza di finzione in ogni caso.

modifica

Per rispondere alla domanda di Giovanni su ciò che le chiavi che sto leggendo:

SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProductID

SYSTEM \ CurrentControlSet \ Control \ ComputerName \ NomeComputer \ ComputerName

Come sull'utilizzo il numero di serie di una CPU. Mi ricordo che Microsoft ha utilizzato per fornire un'API per questo che avrebbe eseguito il codice assembler necessario e darà indietro tutti i tipi di informazioni sulla CPU compreso il numero di serie. Non sono sicuro se che sarebbe lavorare con chip AMD o no, penso che sia stata Intel specifica.

Sicuramente CPU Id è sicuro e statico abbastanza !!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top