原文 NSIS:延时启动软件的几个方法及探索
有时候,我们想要某软件开机启动,但又不要拖慢开机速度,那么,延时启动技术就显得比较重要了。轻狂在这方面曾经研究过,也实现了自己想要的功能,看看我是怎么做的吧!
延时启动解决方案一:批处理方式
1、用批处理写好延时启动代码,把这个批处理命名为“延时启动轻狂志.bat”并在安装应用软件时释放到安装目录下。
03 | if "%1" == "h" goto begin |
04 | mshta vbscript:createobject( "wscript.shell" ).run( "%~nx0 h" ,0)(window.close)& exit |
|
2、安装应用软件时创建这个批处理的快捷方式到系统的启动目录中。
1 | CreateShortCut "$SMSTARTUP\延时启动轻狂志.lnk" "$INSTDIR\延时启动轻狂志.bat" |
|
这样即可实现延时启动的功能。
但有两点不太完美:系统自动运行批处理时,会有一个黑框框闪一下。而且创建快捷方式时安全软件会有“风险提示”,一不小心就会把快捷方式删掉了。
今天又研究了一个新的方法——延时启动解决方案二:VBS方式
1、写一个VBS脚本文件“延时启动轻狂志.vbs”并在安装应用软件时释放到安装目录下。
2 | Set delayer = CreateObject( "WScript.Shell" ) |
4 | delayer.Run "轻狂志.exe" , 0, FALSE |
|
2、安装应用软件时创建这个VBS脚本文件的快捷方式到系统的启动目录中。
1 | CreateShortCut "$SMSTARTUP\延时启动轻狂志.lnk" "$INSTDIR\延时启动轻狂志.vbs" |
|
这种方式与第一种相比:启动时不会有黑框框显示,但创建快捷方式时安全软件依然会有“风险提示”。
那么,我们通过NSIS做一个延时启动的升级版!
1、建一个空内容的VBS脚本文件“延时启动轻狂志.vbs”并在安装时释放到安装目录下。
2、在NSIS脚本中对“延时启动轻狂志.vbs”进行修改。
2 | FileOpen $1 "$INSTDIR\延时启动轻狂志.vbs" w |
3 | FileWrite $1 'Dim delayer$\r$\n' |
4 | FileWrite $1 'Set delayer = CreateObject("WScript.Shell")$\r$\n' |
5 | FileWrite $1 'WScript.sleep 5000$\r$\n' |
6 | FileWrite $1 'delayer.Run """$INSTDIR\轻狂志.exe""", 0, FALSE$\r$\n' |
7 | FileWrite $1 'Set delayer = Nothing$\r$\n' |
8 | FileWrite $1 'WScript.quit$\r$\n' |
|
3、把修改后的VBS脚本文件移动到操作系统启动文件夹中。
2 | Push "$SMSTARTUP\延时启动轻狂志.vbs" ;目标文件 |
3 | Push "$INSTDIR\延时启动轻狂志.vbs" ;来源文件 |
4 | System::Call "Kernel32::MoveFileExA(t s,t s,i 2)" |
|
哈哈,这种方式既没有黑框框显示,安全软件也不会提示风险(轻狂在2014年1月21日用新毒霸测试有效,不能保证长期有效或在其他安全软件上有效。)