请问C#取获取CPU序列号和硬盘老是变是怎么回事。

专注研发ERP低代码开发平台 专注研发ERP低代码开发平台 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我想做软件授权。然后用下面方法生成一个序列号
/// <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中的文件内容对比,不匹配的话就提示需要重新注册。

一个很奇怪的问题,在用户那边注册后,重启下电脑又不行了,有时甚至不重启电脑,登出系统再登入就不行了,提示要重新注册。请问大家这种情况问题最有可能出在什么地方?
...全文

相关推荐

评论 13
收藏 已收藏
分享
返回顶部