A .NET library for generating unique device identifiers across Windows, Linux, and macOS platforms.
DeviceId is a .NET library that generates unique identifiers for computers by combining various hardware and software attributes. It solves the problem of reliably identifying devices across different operating systems (Windows, Linux, macOS) and hardware configurations, which is essential for software licensing, analytics, and device management.
.NET developers building applications that require device identification for licensing, analytics, or device management purposes, particularly those targeting multiple operating systems.
Developers choose DeviceId for its comprehensive cross-platform support, modular architecture that avoids unnecessary dependencies, and flexibility in selecting which device attributes to include in identifiers while maintaining backwards compatibility.
A simple library providing functionality to generate a 'device ID' that can be used to uniquely identify a computer.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports Windows, Linux, and macOS with dedicated NuGet packages for platform-specific components, as shown in the quickstart package list and builder examples.
Uses a builder pattern to let developers pick only necessary hardware/software attributes, avoiding bloat, evidenced by methods like AddMachineName() and OnWindows() chains.
Provides automatic fallbacks for ARM64 Windows and ARM Linux where traditional identifiers fail, detailed in the ARM Architecture Support section with examples like AddProcessorId() fallbacks.
Includes DeviceIdManager to validate IDs across library versions, preventing license invalidation during updates, as demonstrated in the validation code snippet.
Version 6 split core functionality into multiple NuGet packages (e.g., DeviceId.Windows.Wmi), increasing setup complexity and dependency management overhead.
Some components like AddMotherboardSerialNumber() are missing on macOS, limiting uniform device ID generation across all supported OSes, as noted in the migration guide.
The README warns that DeviceIdManager APIs might be renamed or broken in future versions (v7), creating maintenance uncertainty for long-term projects.