How can I quickly generate an unique computer id for a delphi app? I used to do it easly with c#, but this failed sometimes. I do want the ID to be "static" but I don't care if the id changes because of a hardware change or OS reinstallation, I was planning to store it in the registry and check it when the app starts, and if it changed update the registry. (I know how to code the registry part, I only need help for the unique id).
Thanks.
You may try using an UUID algorithm for the following reasons:
But watch out: to achieve hardware independence, you must choose some algorithm which does not use the MAC address of the machine. Microsoft`s GUID uses it (this was how they discovered who wrote that LOVE YOU virus, remember it?)
Use the hard disk serial number or MAC address:
How to get serial number from hard disks? Generating a unique machine id
I'm not exactly sure what you're asking? It might help if you clarified why you need the "unique computer id".
Option 1
The bit:
gives me the impression you're trying to detect a different (newer) version of the app and/or identify different apps within a suite.
If this is the case, then simply pressing
Ctrl+Shift+G
will generate a unique GUID for you and insert it at your current cursor position in code. You may want to also look at the version information; perhaps auto-increment build numbers?Option 2
If you're trying to in some way identify unique installations on different computers, take a look at the
CreateGUID
function in plainth's answer.Option 3
You mentioned that you "don't care if the id changes because of a hardware change or OS reinstallation". I'm not sure if this is an important fact like: you're trying to detect hardware changes? After all, you did say you don't care; but then why mention this at all?
Option 4
Something else I haven't considered?
Have a look at SysUtils.CreateGUID which creates a globally unique identifier. Syntax:
A small example taken from D2010's help:
HTH