📅  最后修改于: 2023-12-03 15:41:26.678000             🧑  作者: Mango
获取 HWID (Hardware Identification) 一般指获取计算机硬件的唯一识别码,用于软件注册、防止软件盗版等场景。下面介绍如何使用 C# 获取计算机的 HWID。
using System.Management;
public static string GetHWID()
{
ManagementClass mc = new ManagementClass("Win32_ComputerSystemProduct");
ManagementObjectCollection moc = mc.GetInstances();
string hwid = string.Empty;
foreach (ManagementObject mo in moc)
{
hwid = mo.Properties["UUID"].Value.ToString();
break;
}
return hwid;
}
上述代码中使用了 WMI (Windows Management Instrumentation) 具体模块 Win32_ComputerSystemProduct
,该模块可以获取计算机的 UUID (Universally Unique Identifier),也就是 HWID。使用 ManagementClass
创建 WMI 对象,然后调用 GetInstances()
获取计算机的信息,最后通过遍历列表的第一个元素获取到 HWID。
System.Management
命名空间。using System.Runtime.InteropServices;
public static string GetHWID()
{
StringBuilder sb = new StringBuilder();
Guid guid = Guid.Empty;
GetComputerId(ref guid);
sb.Append(guid.ToString());
return sb.ToString();
}
[DllImport("Rpcrt4.dll", SetLastError = true)]
private static extern int UuidCreateSequential(ref Guid guid);
private static void GetComputerId(ref Guid guid)
{
UuidCreateSequential(ref guid);
}
上述代码中使用了 Rpcrt4.dll
中的 UuidCreateSequential 函数,该函数可以生成符合 UUID 格式的 GUID (Globally Unique Identifier),也就是 HWID。使用 DllImport
将该函数导入到 C# 中并调用,最后返回 GUID 的字符串形式。
以上两种方法都可以用于获取计算机的 HWID,可以根据实际情况选择适合的方法。需要注意的是,HWID 不是绝对的,可以通过一些手段进行修改。因此,可以结合其他方法进行验证,如绑定 IP 地址、MAC 地址等。