如何将将程序设为自启动(需要高手级答案) ( 积分: 100 )

  • 主题发起人 主题发起人 hzxhzx123
  • 开始时间 开始时间
H

hzxhzx123

Unregistered / Unconfirmed
GUEST, unregistred user!
将程序设为自启动的方法很多,写注册表run、runonce、runservices就不用说了,安装为服务级程序,写system.ini,写bat,copy到启动组,还有一些非常规的安装为系统shell、替代系统文件,但我现在真正写的时候却发现一个都不好用,写注册表run、runonce、runservices的时候,如果你的程序在system32目录下,木马克星就说是木马!写system.ini,写bat在NT下失效,copy到启动组,别人换了用户就不行,而且很容易被删除,系统shell、替代系统文件看上去不错,但也太狠了一点,重要的是影响系统性能。安装为服务级程序是我现在采用的,不知道大家还有什么好办法没有,因为安装为服务级程序写起来比较麻烦,而且当掉了系统就开始不稳定。
 
将程序设为自启动的方法很多,写注册表run、runonce、runservices就不用说了,安装为服务级程序,写system.ini,写bat,copy到启动组,还有一些非常规的安装为系统shell、替代系统文件,但我现在真正写的时候却发现一个都不好用,写注册表run、runonce、runservices的时候,如果你的程序在system32目录下,木马克星就说是木马!写system.ini,写bat在NT下失效,copy到启动组,别人换了用户就不行,而且很容易被删除,系统shell、替代系统文件看上去不错,但也太狠了一点,重要的是影响系统性能。安装为服务级程序是我现在采用的,不知道大家还有什么好办法没有,因为安装为服务级程序写起来比较麻烦,而且当掉了系统就开始不稳定。
 
安装为服务
 
唉,我能想到的楼主都想到了,还能说什么呢?
 
注册到系统进程?
 
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Winlogon/Userinit &nbsp;C:/WINNT/system32/userinit.exe,你的程序路径<br><br>把你的程序添加到这里,看看木马克星还能查杀不能!!另外木马客星简直就是垃圾,这样赶尽杀绝,连正常的启动文件也报告是木马!!
 
弱智问题
 
好多东西都是相对的,何必去追求那些所谓的绝对.
 
被木马克星报错,那是木马克星的问题,和你有什么关系?<br>别人写的垃圾程序,让他们自己去收场。
 
如果程序员都像你们这样看得开就……
 
系统重启后自动运行程序<br><br>The following example shows how to tell Windows to relaunch your application when Windows starts up if it was running when the system shut down. When Windows starts up, it launches each application listed in the RunOnce key and then deletes the entry for that application. &nbsp;Therefore, you do not need to remove the entry written here.<br><br>procedure TForm1.WMEndSession(var Message: TWMEndSession);<br>var<br> &nbsp;Reg: TRegistry;<br>begin<br> &nbsp;Reg := TRegistry.Create;<br> &nbsp;try<br> &nbsp; &nbsp;Reg.RootKey := HKEY_CURRENT_USER;<br> &nbsp; &nbsp;if Reg.OpenKey('/Software/Microsoft/Windows/CurrentVersion/RunOnce', True) then<br> &nbsp; begin<br> &nbsp; &nbsp; &nbsp;Reg.WriteString('MyApp','&quot;' + ParamStr(0) + '&quot;');<br> &nbsp; &nbsp; &nbsp;Reg.CloseKey;<br> &nbsp; &nbsp;end;<br> &nbsp;finally<br> &nbsp; &nbsp;Reg.Free;<br> &nbsp; &nbsp;inherited;<br> &nbsp;end;<br><br>end;<br><br><br><br>In order for this method to be called, it must be declared in your main form class as follows:<br><br>private<br><br> &nbsp;procedure WMEndSession(var Msg:TWMEndSession); message WM_ENDSESSION;
 
写RunOnce需要这样费周折?还要消息过滤?[:(]
 
关于开始菜单的启动组,我想说一点<br>如果你是建立在All Users里面的话<br>不会因为换用户而失效的..<br>不过比较容易被删掉罢了..
 
在开机的时候让自己的程序自动运行<br>代码如下<br>1、在uses部分 &nbsp;registry<br>1、 在主窗体的 show事件写下<br>procedure TForm1.FormShow(Sender: TObject);<br>var Reg:TRegistry;<br>begin<br>Reg:=TRegistry.create;<br> &nbsp;try<br> &nbsp; &nbsp;Reg.RootKey:=HKEY_LOCAL_MACHINE;<br> &nbsp; &nbsp;Reg.OpenKey('SOFTWARE/Microsoft/Windows/CurrentVersion/Run',true);<br> &nbsp; &nbsp;Reg.WriteString('Project1.exe',Application.ExeName); &nbsp;//程序名,路径<br> &nbsp;finally<br> &nbsp; &nbsp;Reg.CloseKey;<br> &nbsp; &nbsp;Reg.Free;<br> &nbsp;end;<br>end;
 
多人接受答案了。
 
后退
顶部