Unique machine (desktop) id (no admin privileges required).
npm install node-machine-id-xzCross-platform unique machine (desktop) id discovery
MachineGuid` in registry
`HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography` (can be changed by administrator but with unpredictable consequences)
> It is generated during OS installation and won't change unless you make another OS
> updates or reinstall. Depending on the OS version it may contain the network adapter
> MAC address embedded (plus some other numbers, including random), or a pseudorandom number.
- OSx uses `IOPlatformUUID` (the same Hardware UUID)
` ioreg -rd1 -c IOPlatformExpertDevice `
> Value from I/O Kit registry in IOPlatformExpertDevice class
- Linux uses `/var/lib/dbus/machine-id` (can be changed by `root` but with unpredictable consequences)
http://man7.org/linux/man-pages/man5/machine-id.5.html
> The /var/lib/dbus/machine-id file contains the unique machine ID of the local
> system that is set during installation. The machine ID is a single
> newline-terminated, hexadecimal, 32-character, lowercase machine ID
> string. When decoded from hexadecimal, this corresponds with a
> 16-byte/128-bit string.
>
> The machine ID is usually generated from a random source during
> system installation and stays constant for all subsequent boots.
> Optionally, for stateless systems, it is generated during runtime at
> early boot if it is found to be empty.
>
> The machine ID does not change based on user configuration or when
> hardware is replaced.
Installation
`
npm install node-machine-id
`
Usage
$3
- original ``, If `true` return original value of machine id, otherwise return hashed value (sha-256), default: `false`
$3
- syncronous version of `machineId`
`js
import {machineId, machineIdSync} from 'node-machine-id';
// Asyncronous call with async/await or Promise
async function getMachineId() {
let id = await machineId();
...
}
machineId().then((id) => {
...
})
// Syncronous call
let id = machineIdSync()
// id = c24b0fe51856497eebb6a2bfcd120247aac0d6334d670bb92e09a00ce8169365
let id = machineIdSync(true)
// id = 98912984-c4e9-5ceb-8000-03882a0485e4
`
$3
- Image-based environments have usually the same machine-id
> As a workaround you can generate new machine-ids for each instance (or container) with dbus-uuidgen and changed them in the respective > files: /etc/machine-id and /var/lib/dbus/machine-id`. Thanks @stefanhuber