我需要获取任何信息以识别机器,到目前为止我使用的是以下内容:
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吗?这是我正在开发的许可系统的一部分.
对于我编写的一个小工具(Windows Forms .NET 2.0),我需要类似的东西.
我写了一个帮助类,它只是通过GetVolumeInformation函数的PInvoke使用一些常见的信息,如硬盘序列号.
这绝不是真正安全或防弹,但足够精确以满足我的需求.
(如果你有兴趣,这是工具,如果我被允许链接到)