using System; using System.Management; namespace LicenseGenerator.Commands { internal static class FingerprintCommand { // Windows + WMI only. Matches MachineFingerprint.GetFingerprint() logic. internal static void Execute() { try { string pcInfo = string.Empty; using (var mc = new ManagementClass("win32_processor")) using (ManagementObjectCollection moc = mc.GetInstances()) { foreach (ManagementObject mo in moc) { pcInfo = mo.Properties["processorID"].Value.ToString(); break; } } using (var searcher = new ManagementObjectSearcher( "root\\CIMV2", "SELECT * FROM Win32_BaseBoard")) { foreach (ManagementObject obj in searcher.Get()) { pcInfo += obj["SerialNumber"].ToString(); break; } } Console.WriteLine(pcInfo); } catch (Exception ex) { Console.Error.WriteLine("Error reading fingerprint (Windows + WMI required): " + ex.Message); Environment.Exit(1); } } } }