There is a stronger alternative :
The device ID embedded in the device's hardware is unique, like a MAC adresse.
But the owner don't know his device ID, so the registration process have to be split in several parts :
1/ the user buy the game and the reseller send you his name and e-mail. (he send it to your registration server, so the name and e-mail of the customer is in your database)
2/ the user install the game and launch it, the game detect that no key file is present and display the device ID and some instructions to follow in order to register the game.
3/ the user enter the given device ID in a form on your website, when he submit the form an email is sent to your registration server, if the name and e-mail are in your database and the user never asked for a keyfile before then the registration server build the unique keyfile (containing device ID and user name in an encrypted format) and send it the the e-mail provided by the user.
4/ the user install the keyfile and can start playing
This seems quite complicated but if the user type correctly his code ID all this process do not last longer than five or ten minutes (including e-mail lag).
If you embed enough informations in your keyfile the game couldn't run without it, you just have to strongly obfuscate the reading process in your code to obtain a quite strong anti piracy scheme.
PS : if the user lose his keyfile (hardreset + lost the e-mail) or if he changes his device he will have to send you an e-mail to obtain a new keyfile.
I think that this manual procedure is necessary to avoid abuses of the registration system.