延时启动解决方案一:批处理方式
1、用批处理写好延时启动代码,把这个批处理命名为“延时启动轻狂志.bat”并在安装应用软件时释放到安装目录下。
@echo off if "%1" == "h" goto begin mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&exit :begin ping -n 60 127.1>nul start %cd%永恒心锁.exe exit
2、安装应用软件时创建这个批处理的快捷方式到系统的启动目录中。
CreateShortCut "$SMSTARTUP延时启动永恒心锁.lnk" "$INSTDIR延时启动永恒心锁.bat"
这样即可实现延时启动的功能。
但有两点不太完美:系统自动运行批处理时,会有一个黑框框闪一下。而且创建快捷方式时安全软件会有“风险提示”,一不小心就会把快捷方式删掉了。
今天又研究了一个新的方法——延时启动解决方案二:VBS方式
1、写一个VBS脚本文件“永恒心锁.vbs”并在安装应用软件时释放到安装目录下。
Dim delayer Set delayer = CreateObject("WScript.Shell") WScript.sleep 9000 delayer.Run "永恒心锁.exe", 0, FALSE Set delayer = Nothing WScript.quit
2、安装应用软件时创建这个VBS脚本文件的快捷方式到系统的启动目录中。
CreateShortCut "$SMSTARTUP延时启动永恒心锁.lnk" "$INSTDIR延时启动永恒心锁.vbs"
那么,我们通过NSIS做一个延时启动的升级版!
1、建一个空内容的VBS脚本文件“延时启动轻狂志.vbs”并在安装时释放到安装目录下。
2、在NSIS脚本中对“延时启动轻狂志.vbs”进行修改。
;修改延时启动文件 FileOpen $1 "$INSTDIR延时启动永恒心锁.vbs" w FileWrite $1 'Dim delayer$r$n' FileWrite $1 'Set delayer = CreateObject("WScript.Shell")$r$n' FileWrite $1 'WScript.sleep 5000$r$n' FileWrite $1 'delayer.Run """$INSTDIR永恒心锁.exe""", 0, FALSE$r$n' FileWrite $1 'Set delayer = Nothing$r$n' FileWrite $1 'WScript.quit$r$n' FileClose $1
3、把修改后的VBS脚本文件移动到操作系统启动文件夹中。
;堆栈模式移动延时启动文件 Push "$SMSTARTUP延时启动永恒心锁.vbs" ;目标文件 Push "$INSTDIR延时启动永恒心锁.vbs" ;来源文件 System::Call "Kernel32::MoveFileExA(t s,t s,i 2)"