Your user shouldn't know what you base your authentication on. If you're afraid of relying on just one hardware component you can rely on several of them. You could as example use the HDD ID like this:
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia");
ManagementClass partionsClass = new ManagementClass("Win32_LogicalDisk");
ManagementObjectCollection partions = partionsClass.GetInstances();
Remember you need to think also to scenarios in which your users change a piece of hardware you rely on (the MAC associated to the network card, the HDD ID, etc.)