WPF软件正版激活功能的实现

编程入门 行业动态 更新时间:2024-10-28 16:27:07

WPF软件正版激活功能的实现

1.设计思路

用户进入注册界面,获得计算机唯一标识码,用户将计算机唯一标识码发送给软件开发商,开发商通过通过算法 授权码=f(计算机唯一标识) 得到授权码,并将授权码发回给用户,用户输入授权码,软件内部通过同样的算法 授权码=f(计算机唯一标识) 进行计算,比较用户输入的授权码与软件计算得到的授权码是否一致,判断软件是否授权成功。(这里暂时采用MD5加密算法作为授权码算法)

2.授权码在软件中的保存位置

通过XML文件保存。
首先创建XML文件,如下图

然后设置该文件的属性/复制 为 复制到输出目录
之后即可通过以下代码读写授权码

string xmlpath = Directory.GetCurrentDirectory() + "\\Data\\Settings.xml";
//写
XElement Settings_XML2 = XElement.Load(xmlpath);//解析xml
Settings_XML2.Element("APPKey").Value = "lzf";//读取APPKey
Settings_XML2.Save(xmlpath);

//读
XElement Settings_XML = XElement.Load(xmlpath);//解析成xml
string appkey = Settings_XML.Element("APPKey").Value.ToString();//读取APPKey

3.获取计算机唯一标识的方法

原计划采用硬件标识来作为唯一标识,因为在论坛中看到一个帖子
http://bbs.csdn/topics/390838655
之后放弃使用硬件标识。这里通过软件生成一个GUID并写入注册表作为计算机的唯一标识。

生成GUID并写入注册表的代码如下:

RegistryKey key = Registry.LocalMachine;//注册表,本地计算机的配置数据
RegistryKey software = key.OpenSubKey("software\\AppBindingPC",true);//这里AppBindingPC是程序名,可以随意取
if (software == null)
{
    software = key.CreateSubKey("software\\AppBindingPC");//创建目录
}
if(software.GetValue("PCGUID") == null)
{
    software.SetValue("PCGUID", Guid.NewGuid().ToString("P"));//创建键值
}
string PCGuid = software.GetValue("PCGUID").ToString();//读取键值

程序运行到这里可能会报错,需要添加修改注册表的权限,或者以管理员权限运行
运行成功后,可以看到注册表中写入了新的键值

另:
通过.NET System.Management类可以获得电脑的硬件信息。

程序源码:http://download.csdn/download/lzf1019940946/9943598

参考博客:
//如何让软件绑定计算机硬件
http://blog.csdn/smstong/article/details/49848055
//win7下c#程序修改注册表的权限问题
http://wwwblogs/bile/archive/2012/03/05/2381076.html
//C#读写注册表
http://blog.csdn/younghaiqing/article/details/61918968
//C#操作注册表
http://wwwblogs/txw1958/archive/2012/08/01/csharp-regidit.html
//生成GUID
https://msdn.microsoft/en-us/library/97af8hh4.aspx
// C#实现MD5加密
http://blog.csdn/pan_junbiao/article/details/19477895

更多推荐

WPF软件正版激活功能的实现

本文发布于:2023-06-14 08:13:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1454218.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:功能   软件   WPF

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!