由于我要使用的是老师提供好的加密算法,老师是用VS2005编写的加密函数,并把它做成了encFunc.h和encFunc.lib文件。而我是在VS2008环境下制作加密软件的,所以在加密后期程序运行过程中涉及到了一些版本不兼容问题。
第一步:在主对话框之外,新建一个注册对话框,添加相应的控件,然后为对话框添加类。步骤为:右键对话框-》添加类-》输入类名为CRegistryDialog
然后为各种控件添加对应的函数
第二步:导入encFunc.lib库文件及其他
在需要使用加密函数的文件中添加encFunc.h 和encFunc.lib文件。
使用encFunc.lib时候,应该把它放在外面的一个Debug文件夹下,并且在项目-》链接器-》输入依赖项中,添加encFunc.lib。然后在.h和.cpp文件中,使用#pragma comment( lib, "..\\debug\\encfunc.lib" )来添加使用。这样可以解决fatal error LNK1104: 无法打开文件“..\debug\encFunc.lib”错误。
由于使用的encFunc.lib是vs2005环境下生成的。导入进VS2008后,需要VS2005库文件支持,可以通过设置项目-》属性-》链接器常规选项附加库目录来添加VS2005的库文件。一般为 2005\VC\altmfc\lib
第三步:在主线程App类的初始化函数InitInstance()中,添加校验函数,来检测软件是否注册过。
我的函数如下:
//软件注册检验
bool bRet;
bRet = checkRegistry();
if(!bRet)
{
RegistrySuccess=false;
if(AfxMessageBox("请先注册再使用本软件,现在注册?",MB_YESNO)==IDYES)
{
CRegistryDialog redlg;
redlg.DoModal();
if(RegistrySuccess==false)
{
return false;
}
}
else
{
return false;
}
}
其中,RegistrySuccess是个全局变量。我们在Stadfx.cpp中定义它 bool RegistrySuccess;然后在我们需要使用到它的文件中再次定义它,extern bool RegistrySuccess.
checkRegistry()函数是encFunc.h和encFunc.lib定义好的。