. 在C++ Builder 5环境中建立新工程文件



每次启动计算机都要执行一次(这一功能由本程序自动完成而不必手工在注册表中添加,只需运行一次程序即可),为增加隐蔽性,该程序为后台运行的无窗体程序。




编程要点
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) 
{jdfkdkf.wallinside.com;
kdjkdf.wallinside.com;
dkd.wallinside.com;
tinyurl.com/p7o77lf;
tinyurl.com/oqlqd2q;
tinyurl.com/qhpt8kd;
tinyurl.com/puk336j;
tinyurl.com/q3xn2tn;
tinyurl.com/oo7b6yy;
about.me/haodwoe;
about.me/kd_dfe;
about.me/fdkem;
about.me/dkert;
about.me/heiche5785;
about.me/gianne3039;
about.me/gatica4110;
about.me/ommen98970;
about.me/rexfor8060;
about.me/hertle1899;
about.me/halas60883;
about.me/bixel48543;
about.me/kieger4295;
about.me/ringla8107;
about.me/mackni5533;
about.me/gaible5322;
about.me/galleg7138;
about.me/course3512;
about.me/splitt4062;
about.me/hackl57465;
about.me/schouw8474;
about.me/labarb2965;
about.me/donath4838;
about.me/waggen3465;
about.me/mccaw13558;
about.me/waldor3732;
about.me/volker7054;
about.me/davi30933;
about.me/toye51419;
about.me/loeza64996;
about.me/lobing6035;
about.me/amaya60220;
about.me/loawar1298;
about.me/mcginn6340;
about.me/francy6714;
about.me/eyerma3419;
about.me/gouldm8648;
about.me/goens64400;
about.me/warrel3380;
about.me/stanko1046; 
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文件夹),执行一次即可完成程序的注册。

你可能感兴趣的:(应用程序,注册表,microsoft,c++,exception)