利用VC编程实现程序自动启动.doc

上传人:文库蛋蛋多 文档编号:2389412 上传时间:2023-02-17 格式:DOC 页数:4 大小:17.50KB
返回 下载 相关 举报
利用VC编程实现程序自动启动.doc_第1页
第1页 / 共4页
利用VC编程实现程序自动启动.doc_第2页
第2页 / 共4页
利用VC编程实现程序自动启动.doc_第3页
第3页 / 共4页
利用VC编程实现程序自动启动.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《利用VC编程实现程序自动启动.doc》由会员分享,可在线阅读,更多相关《利用VC编程实现程序自动启动.doc(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=sizeof(OSVERSIONINFO);GetVersionEx(&OsVerInfo);/取得系统的版本信息if(OsVerInfo.dwPlatformId=VER_PLATFORM_WIN32_WINDOWS)ExitWindowsEx(EWX_REBOOT,0);/重新启动计算机CDialog:OnOK();

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号