您现在的位置: 中国男护士网 >> 考试频道 >> 计算机等级 >> 二级辅导 >> C十十 >> 辅导 >> 正文    
  用C++Builder为计算机增加启动日志 【注册男护士专用博客】          

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

www.nanhushi.com     佚名   不详 

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

 

文章录入:杜斌    责任编辑:杜斌 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     

    联 系 信 息
    QQ:88236621
    电话:15853773350
    E-Mail:malenurse@163.com
    免费发布招聘信息
    做中国最专业男护士门户网站
    最 新 热 门
    最 新 推 荐
    相 关 文 章
    没有相关文章
    专 题 栏 目

      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)                            【进男护士社区逛逛】
    姓 名:
    * 游客填写  ·注册用户 ·忘记密码
    主 页:

    评 分:
    1分 2分 3分 4分 5分
    评论内容:
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。