赛迪网 > IT技术 C/C++ > 文章
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

用C++ Builder为计算机增加启动日志

发布时间:2006.04.07 01:19     来源:赛迪网社区    作者:大山

公用机房或办公室中的计算机通常是大家共享使用的,作为管理者或“主要”使用者很想掌握机器何时被开启使用过,若有一个启动记录就可以随时了解这些情况。本文给出如何用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) 
{ 
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文件夹),执行一次即可完成程序的注册。

(T113)


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· 技巧应用篇—C++在网页设计中的应用 (04-05) · C++ Builder用ActiveX显示Flash动画 (04-05)
· 异常处理:和日志集成 (03-24) · 应用实例:VC++实现广告窗口自动关闭 (03-13)
· 有效地记录日志可以简化企业的开发过程 (03-11) · VC++中的Progress控件如何使用 (02-21)
· 在C++程序中导出Word文档的方法 (02-17) · C++中控制Windows关机的实用技巧 (02-17)
· C++中控制Windows关机的实用技巧 (02-15) · C++编程语言中的四个调试技巧 (02-14)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
[政务][电信][金融][农业][制造业][中小企业]
[CIO][ERP][协同][IT管理][中间件][电子商务]
[政策][地方][专家][评估][辞典][博客][社区]
· 专题:一路畅通构想曲——让出行不再遭遇堵车
· CIO工作亲历:企业ERP选型不能忽视"选人关"
· 综述:信息化建设给中国监狱带来的各种变化
· 金融业风险管理和法规遵从有五点需考虑的因素
· 保险业CIO关注:该如何建立统一高效的CRM体系
· 调查显示:多数CIO对IT规划仍存在困惑和误解
  博客·论坛 ·曾剑秋·项立刚·Java学习·网管