我正在开发一些桌面软件供客户转售.客户希望限制软件,以便注册码特定于一台且只有一台计算机.
除了使用网卡中的MAC之外,是否还有其他任何技术(适用于Windows和Mac OS X)以便唯一识别计算机?
我需要获取任何信息以识别机器,到目前为止我使用的是以下内容:
internal static string GetProcessorId()
{
try
{
StringBuilder sb = new StringBuilder();
using (System.Management.ManagementClass theClass = new System.Management.ManagementClass("Win32_Processor"))
{
using (System.Management.ManagementObjectCollection theCollectionOfResults = theClass.GetInstances())
{
foreach (System.Management.ManagementObject currentResult in theCollectionOfResults)
{
sb.Append(currentResult["ProcessorID"].ToString());
}
}
}
return sb.ToString();
}
catch (Exception exception)
{
Console.WriteLine(exception.Message);
return "";
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我在Windows XP(从虚拟机)上运行它时,我currentResult["ProcessorID"]就是null.我不确定是不是因为我使用的是虚拟机,但可能是因为它是XP.无论如何,我不太相信这段代码.它足够安全吗?我应该以其他方式获得计算机ID吗?这是我正在开发的许可系统的一部分.
主板上是否有任何唯一ID或OEM(原始设备制造商)编号,如果有,我如何通过vc ++编程获得它?任何提示或帮助表示赞赏.