Premetto che questo è un'argomento OT, ma scrivo comunque la mia opinione, perchè credo sia importante interrogarsi bene, prima di imbarcarti in un impresa che può risolversi in un nulla di fatto, ovvero un lavoro inutile.

Pensa se tutti i programmi che hai sul tuo computer richiedessero la chiave hardware ?
Quante chiavi USB dovresti avere ed usare contemporaneamente?
E se usi un notebook che fai? Devi portatele dietro tutte?

Ritengo sia una strada assolutamente da non percorrere perchè vecchia e non più adeguata.
Stessa cosa per l'eseguibile 'dentro' un'altro eseguibile: tecnica obsoleta, perchè al giorno d'oggi qualsiasi firewall/antivirus ti blocca l'esecuzione in quanto viene interpretato come codice nascosto e quindi malevolo.

Una cosa è sicura : la protezione con chiave hardware non è né migliore né peggiore di quella software. Se un cracker vuole sproteggere il software ci riesce, non c'è protezione che tenga, perchè gli basta intercettare le istruzioni eseguite nella fase di controllo ed il gioco è fatto.
Esistono in rete molti programmi gratuiti e guide complete (addirittura dei video!) su come sproteggere un programma, prova a fare una ricerca...

Tieni che qualsiasi controllo viene fatto solo ed esclusivamente a livello software, infatti è il tuo programma che confronta il numero seriale quindi la chiave hardware è inutile!
Quindi perchè infastidire il cliente con un ulteriore chiave USB quando la stessa cosa la puoi fare a livello software?
Basta usare le CryptoAPI per generare un file crittografato basato su una tua chiave software e che contiene i dati dell'AZIENDA che ha acquistato il tuo software.
Poi nelle barra di stato e nelle stampe mostri quei dati. Il file lo invii dopo il pagamento.
Senza tale file, il programma funziona in modalità DEMO.

In aggiunta si può anche generare una chiave univoca legata all'installazione su quella determinata macchina che richiede un codice di sblocco per togliere le limitazioni della DEMO (funzionalità, numero di esecuzioni, tempo concesso, ...).
Questo serve ad esempio nei programmi utilizzati in rete LAN su più postazioni in cui ogni postazione deve avere la propria licenza, quindi il programma principale è licenziato correttamente. Ma quando si installa sul client, la licenza deve essere installata per quel determinato computer, altrimenti funzionerà in modalit DEMO.

Spesso mi sono sentito chiedere dai miei probabili acquirenti:
"Spero che il vostro programma non usi una chiave hardware USB, non ne possiamo davvero più di 'ste chiavette!!!"