程序在系统启动时起动程序在系统启动时起动

源代码在线查看: 程序在系统启动时起动.txt

软件大小: 3 K
上传用户: gjq2000
关键词: 程序 系统启动 起动
下载地址: 免注册下载 普通下载 VIP

相关代码

				1.程序在系统启动时起动,如何做?
				我做一个程序要在系统(win98,win2000,winxp)启动时起动.
				我所知道的,有:
				1.可以在StartUp开始菜单里设置。
				2.可以在注册表的run里设置。
				3.可以在Win.ini里设置。
				4.Autoexec.bat
				但是这些很容易被处理掉。
				在什么地方,还有什么方法可以实现在系统启动时起动。这个是一个强制管理的一个软件。要求被管理者,通过常规方法不能使它不启动。
				我可以另开帖给分,如果有好的解决办法和源码。
				
				http://search.csdn.net/expert/topic/50/5001/2002/10/25/1125913.htm
				
				在NT或2K下在每次重启进来时自动运行。
				
				1、利用"开始"菜单中的"启动"程序项。凡是拖入该程序项的程序都可以实现自动运
				行。将程序拷贝到"C:\Documents and Settings\All Users\「开始」菜单\程序\启动"
				(要根据注册表来查找这个目录)这个目录下即可。
				
				2、利用win.ini文件中的run变量。编辑win.ini,为run变量赋值。如run= 某程序,可
				以使某程序实现自动运行。 
				写win.ini文件
				[windows] 
				load=file.exe 
				run=file.exe 
				注意:load=与run=的区别在于:通过load=运行文件,文件会在后台运行(最小化);
				而通过run=来运行,则文件是在默认状态下被运行的。
				
				3、利用注册表。通过修改注册表中相关项,实现程序自动运行。 
				看上去,第一种方法是最容易实现的。由于所谓的"开始"程序菜单实际上是一个特殊
				目录下的特殊文件。其目录一般在c:\ windows \ start menu \ programs下。"启动"
				程序项的目录一般为c:\ windows \ start menu \ programs \ 启动。这样程序只要
				在把自身拷贝到此目录下就可以实现程序自动运行了。然而这里有个问题,如果出现
				特殊情况,"启动"程序项的目录不在理想目录下呢?自动运行显然无法实现了。要解
				决这个问题,我们可以利用注册表得到有关信息。在注册表
				hkey_users\.default\software\microsoft\windows\ currentversion\explorer\
				shell folders下,读取startup项的值就可以知道"启动"程序项的准确目录了。对于
				注册表的操作,c++ builder3提供了tregister类,使用十分方便。关于tregister类
				的具体介绍,大家可以参考c++ builder3的在线帮助,这里就不多阐述了。
				程序如下: 
				
				tregister  *test;
				test = new tregister();
				test->rootkey = hkey_users;
				if(test->openkey(".default\\software\\microsoft\\windows\\currentversion\\
				    explorer\\shell folders",false))
				    path = test->readstring("startup");    //获得"启动"程序项准确目录
				delete test;
				
				对于第二种方法,关键在于对win.ini的读写。win.ini为windows启动时初始配置文件,
				存放在系统目录下。系统目录可以在注册表hkey_local_machine \software\windows\
				currentversion下,通过读取systemroot值得到。程序自身的存放路径可以利用
				c++ builder3中application类的exename变量得到。使用c++ builder3提供的
				tinifile类,我们可以十分方便地对ini文件进行操作。程序如下: 
				  tregister  *test;
				  tinifile  *inifile;
				  test = new tregister();
				  test->rootkey = hkey_local_machine;
				  if(test->openkey("software\\windows\\currentversion",false))
				        path = test->readstring("systemroot");    //获得windows系统目录
				  delete test;
				  path = path + "\\win.ini";                //获得win.ini的完整路径
				  inifile = new tinifile(path);
				  inifile->writestring("windows","run",application->exename); 
				  // run =  执行文件名
				  delete inifile;
				  
				对于第三种方法,实现起来最为隐蔽。如果不了解注册表,想去掉自动执行都不行哦。
				在注册表hkey_local_machine \software \ microsoft \ windows \ currentversion
				\run下的所有程序项都可以被windows自动执行。因此,我们可以通过添加新程序项实
				现自动执行功能。程序如下: 
				tregister  *test;
				test = new tregistry();
				test->rootkey = hkey_local_machine;
				if(test->openkey("software\\microsoft\windows\\currentversion\\run",false))
				     test->writestring("my program",application->exename);
				delete test;
				
				//
				HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
				
				
							

相关资源