程序特点
每次启动计算机都要执行一次(这一功能由本程序自动完成而不必手工在注册表中添加,只需运行一次程序即可),为增加隐蔽性,该程序为后台运行的无窗体程序。
编程要点
1. 在c++ builder 5环境中建立新工程文件:执行菜单命令file/new application,然后将工程文件另存为“logon.bpr”。
2. 执行菜单命令project/view source,打开logon.cpp文件,将其中的
useform(“unit1.cpp”, form1);
和
application->createform(__classid(tform1), &form1);
两条语句删除,目的是创建无窗体程序。
3. 文件logon.cpp的全部代码如下:
#include
#include //添加行
#pragma hdrstop
useres("logon.res");
winapi winmain(hinstance, hinstance, lpstr, int)
{
try
{ //添加部分开始
int num=0;
tregistry *registry = new tregistry; //创建注册表堆对象指针
registry->rootkey = hkey_users; //定位注册表根键
if(!registry->openkey(".default\\logon\\records", false))
{ //如果打开主键失败
registry->createkey(".default\\logon\\records"); //创建主键
if(!(registry->openkey(".default\\logon\\records", false)))
return 0;
else
{
tregistry *reg = new tregistry; // ①
reg->rootkey = hkey_local_machine;
reg->openkey("software\\microsoft\\windows\\currentversion\\run",false);
reg->writestring("logon",application->exename); //在注册表中注册本程序
reg->closekey();
delete reg;
application->messagebox("登录程序注册成功!","结果",mb_ok); // ②
registry->writeinteger("开机次数",num);
registry->writestring("程序注册时间",date()+time());
return 0;
}
}
else
{
num = registry->readinteger("开机次数"); // ③
registry->writeinteger("开机次数",num+1); //记录开机次数
registry->writestring("第"+ansistring(num+1)+"次开机",date()+time()); //记录开机时间
}
registry->closekey();
delete registry;
//添加部分结束
application->initialize();
application->run();
}
catch (exception &exception)
{
application->showexception(&exception);
}
return 0;
}
应用
利用此法,将上述相关代码移植到其它c++ builder应用程序中,通过读写注册表对程序的使用加以限制,比如限制使用程序次数:30次,只要在上述代码③处增加一条if语句
if(num==30)
{
application->messagebox(“本程序已经使用30次,将要退出!!”, “警告:”, mb_ok);
return 0;
}
即可(删除①到②行的语句段),编写限制版的应用程序。当然也可以考虑对时间的限制,这只要在注册表中暗设“机关”就行。
为了生成单独的exe文件,应激活project/options…菜单项,去掉标签“linker”下的“use dynamic rtl”选项,同时去掉“packages”标签下的“build with runtime packages”选项。将此文件logon.exe复制到需要记录的机器上的一个固定的文件夹中(比如,windows文件夹),执行一次即可完成程序的注册。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器