请问C#取获取CPU序列号和硬盘老是变是怎么回事。
我想做软件授权。然后用下面方法生成一个序列号
/// <summary>
/// 获取软件序列号
/// </summary>
/// <returns></returns>
public string GetSoftId()
{
string softId = GetCPUID() + GetHardID();
return softId.ToMD5Encryption();
}
/// <summary>
/// 获取CPU序列号
/// </summary>
/// <returns></returns>
public string GetCPUID()
{
string cpuInfo = "";//cpu序列号
ManagementClass cimobject = new ManagementClass("Win32_Processor");
ManagementObjectCollection moc = cimobject.GetInstances();
foreach (ManagementObject mo in moc)
{
cpuInfo = cpuInfo + mo.Properties["Name"].Value.ToString();
}
return cpuInfo;
}
/// <summary>
/// 获取硬盘ID
/// </summary>
/// <returns></returns>
public string GetHardID()
{
String HDid = "";
ManagementClass cimobject1 = new ManagementClass("Win32_DiskDrive");
ManagementObjectCollection moc1 = cimobject1.GetInstances();
foreach (ManagementObject mo in moc1)
{
HDid = HDid + (string)mo.Properties["Model"].Value.ToString();
}
return HDid;
}
/// <summary>
/// 返回MD5加密后的字符
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string ToMD5Encryption(this string str)
{
return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5").ToLower();
}
我先是使用 GetSoftId()方法生成一个序列号,然后将这个序列号RSA加密后存在系统目录下的一个txt文件中。用户在运行系统时,先还是使用 GetSoftId()方法取这个序列号,再通过同一个RSA私钥加密后再与txt中的文件内容对比,不匹配的话就提示需要重新注册。
一个很奇怪的问题,在用户那边注册后,重启下电脑又不行了,有时甚至不重启电脑,登出系统再登入就不行了,提示要重新注册。请问大家这种情况问题最有可能出在什么地方?