利用VC编程实现程序自动启动_第1页
利用VC编程实现程序自动启动_第2页
利用VC编程实现程序自动启动_第3页
利用VC编程实现程序自动启动_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、利用vc+编程实现程序自动启动工作中经常遇到一些程序,它们在系统启动的过程中,自动打开并运行,以便实现对系统的监控或者病毒的检测等特定的目的,典型的例子就是常用的一些杀毒软件如:kv300及瑞星杀毒软件等。笔者在此,以自己的编程实践为基础,说明这些程序自动启动的原理和方法,同时对一些典型程序代码进行分析,以便读者在今后的编程过程中使用。一、 程序自动启动的原理及方法:1. 利用win.ini文件实现相关程序的自动启动win.ini是系统保存在c:windows目录下的一个系统初始化文件。系统在起动时会检索该文件中的相关项,以便对系统环境的初始设置。在该文件中的windows数据段中,有两个数据

2、项load=和run=,它们的作用就是在系统起动之后自动得装入和运行相关的程序。如果我们需要在系统起动之后装入并运行一个程序,只将需要运行文件的全文件名添加在该数据项的后面系统起动后就会自动运行该程序,系统也会进入特定的操作环境中去。2. 利用注册表实现相关程序的自动启动系统注册表保存着系统的软件、硬件及其他与系统配置有关的重要信息,一个计算机系统的系统注册表一旦遭到破坏,整个系统将无法运行。在计算机的系统注册表中的子目录中有一个目录的名称为hkey_local_machinesoftware microsoftwindowscurrent_versionrun,如果你想让程序在系统起动的过程

3、中启动该程序,就可以向该目录添加一个子项,具体的过程是在注册表中右击该项,选中其中的新建项目,然后选中其中的串值,建立新的串值后将它的名称改成相应的名称,双击新建的串值,输入新的数值,自动启动程序的过程就设置完成。二、 利用vc+编程实现程序自动启动的编程实例。微软公司提供的vc+ 6.0程序开发工具功能非常强大。在vc+ 6.0中同时具有对注册表和*.ini文件操作的函数。笔者经过一段时间的摸索,成功的利用vc+ 6.0开发成功了一个小软件,该软件利用系统自动启动程序的原理,将原来需要的繁琐的手动工作转变成成计算机的自动设置工作,使系统自动启动相关程序的设置工作变的非常简单可靠。1.程序功能

4、概述:程序的主界面是对话框,在主界面对话框中有编辑框(edit box),圆形按钮(radio button)和普通按钮(common button)组成。操作者通过向编辑框中添加需要自动加载的程序的全文件名(也可以通过浏览按钮来完成),然后通过对两个radio button的选择,进而完成对加载方式的选择(是选用注册表方式还是选者修改win.ini文件的方式),最后操作者通过点击应用按钮实现程序的自动加载功能,同时系统会提示操作者是否将操作计算机重新启动,以便观察程序的具体功能完成情况。程序在win98中调试运行正常。2.编码说明: 浏览按钮的功能代码:void cautoloaddlg:o

5、nliulan() / todo: add your control notification handler code herecfiledialog filedlg(true,_t(exe),_t(*.exe),ofn_hidereadonly|ofn_overwriteprompt,(_t(executable files (*.exe) |*.exe |);/显示打开文件的对话框if(filedlg.domodal()=idok)/当操作者选择ok时,程序,取得选择文/件的全路径名(包括文件的路径及文件名称),并将相应的数值传输给相/关的控件变量。m_filename=filedlg.

6、getpathname();/m_filename是edit box控件的相应的变量。updatedata(false);/向将变量中的数值传输给控件显示出来。 应用按钮的功能代码:void cautoloaddlg:onok() / todo: add extra validation herelpctstr title;updatedata(true);if(m_title.isempty()/如果操作者没有填写要设置项的标题,程序显示对话框,提示操作者进行相关的填写。messagebox(_t(please input the title name);return; title=m_ti

7、tle;if(m_filename.isempty()/如果操作者没有选择要设置的程序的全路径文/件名,程序显示对话框,提示操作者进行相关的选择。messagebox(_t(please input the programe file name);return;if(isdlgbuttonchecked(idc_radio1)/如果操作者选择注册表方式,程序修改系统的注册表。hkey hkey;lpctstr data_set=softwaremicrosoftwindowscurrentversionrun;/设置注册表中相关的路径longret0=(:regopenkeyex(hkey_l

8、ocal_machine,data_set,0,key_write,&hkey);/打开注册表中的相应项if(ret0!=error_success)messagebox(错误0);int length=m_filename.getlength()+1;/将控件中的内容进行转换,以达到注册表修改函数的参数调用需求。for(int i=0;i if(m_filenamei=92)length=length+1;dword cbdata=length;lpbyte lpb=new bytelength;int j=0;for(i=0;i if(m_filenamei=92)lpbj=92;j+;l

9、pbj=92;j+;elselpbj=m_filenamei;j+;lpbj=0;long ret1=(:regsetvalueex(hkey,title,null,reg_sz,lpb,cbdata);/将相关的信息写入注册表。if(ret1!=error_success)/判断系统的相关注册是否成功?messagebox(错误1);delete lpb;:regclosekey(hkey);/关闭注册表中的相应的项if(isdlgbuttonchecked(idc_radio2)/如果操作者选择用修改win.ini文件的方式lpctstr filename;filename=m_filen

10、ame;writeprivateprofilestring(_t(windows),_t(load),filename,_t(c:windowswin.ini);writeprivateprofilestring(_t(windows),_t(run),filename,_t(c:windowswin.ini);yzdlg.domodal();/显示对话框,提示操作者是否需要重新启动计算机,以便验证程序的功能。cdialog:onok(); 重新启动按钮的功能代码:void yanzheng:onok()osversioninfo osverinfo;/保存系统版本信息的数据结构osverinfo.dwosversioninfosize=si

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论