程序重启操作系统后加载一次程序需要怎么操作?【已解决】
本帖最后由 redapple2008 于 2019-3-4 14:34 编辑程序强制重启操作系统后加载一次程序需要怎么操作?
任务计划一样可以实现,而且可以不用再删除处理。
参考命令:Run('cmd /c schtasks /create /TN 开机启动 /TR ' & @AutoItExe & ' /RL Highest /SC ONLOGON /DELAY 0000:05 /F', '', @SW_HIDE) 本文在Win2000,WinXp、Vista、Win7系统中讲解Run、RunOnce注册表键值,涉及如下四个:
HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Run
HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/RunOnce
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/RunOnce
一、总述
HKEY_CURRENT_USER 代表当前用户,当前用户登录后才执行的操作。
HKEY_LOCAL_MACHINE 代表当前机器,所有操作在用户登录前就执行了。
Run 键值代表着开机启动项,也就是说在这个项下的键值会随着开机启动(这里的开机是指用户登录,也就是说只要有登录操作就会执行,注销然后登录,也会执行这个键值)。
RunOnce 键值类似于 Run 键值,唯一的区别在于,RunOnce 键值只执行一次,操作执行后会被自动删除。
RegWrite("HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/RunOnce",@ScriptName,"REG_SZ",@ScriptDir&"\"&@ScriptName)
这样可以吗? 前期工作做这么充分了,不就差试一下了吗。不过我看了下我的百度网盘自启动项是在 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\StartupApproved\Run 类型是 REG_BINARY 解决的办法为:
重启前运行:
RegWrite("HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Run", @ScriptName, "REG_SZ", @ScriptDir & "\" & @ScriptName)
Shutdown(6)
程序运行后退出:
Exit (RegDelete("HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Run", @ScriptName)) 学习了,谢谢分享 本帖最后由 gyp2000 于 2019-3-5 22:51 编辑
开机加载一次的注册表位置,要看程序权限。
无盾牌的程序可以写入注册表 "HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/RunOnce"
有盾牌的高权限程序,如果运行后无UI而且会立即退出可以写入注册表:
"HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/RunOnce"
如果是需要驻留的高权限程序,或者有UI,那么就没有仅启动一次的注册表位置可以写入。
只能写入启动项,然后程序自己处理启动项的注册表设置问题。
当然也可以写快捷方式去启动文件夹。 gyp2000 发表于 2019-3-5 22:47
开机加载一次的注册表位置,要看程序权限。
无盾牌的程序可以写入注册表 "HKEY_CURRENT_USER/Software/Mic ...
谢谢了,多谢你帮助! fybhwsx 发表于 2019-3-6 17:56
任务计划一样可以实现,而且可以不用再删除处理。
参考命令:Run('cmd /c schtasks /create /TN 开机启 ...
这个计划任务每次重启都运行,我需要的是软件自己让系统重启后运行一次程序,其他情况下重启系统不运行。 redapple2008 发表于 2019-3-7 08:54
这个计划任务每次重启都运行,我需要的是软件自己让系统重启后运行一次程序,其他情况下重启系统不运行。
那是让你参考的,试下这样呢,还不行就自己百度下schtasks吧。
Run('cmd /c schtasks /create /TN 开机启动 /TR ' & @AutoItExe & ' /RL Highest /SC ONCE /F', '', @SW_HIDE) fybhwsx 发表于 2019-3-7 13:37
那是让你参考的,试下这样呢,还不行就自己百度下schtasks吧。
Run('cmd /c schtasks /create /TN 开机 ...
谢谢了,查了不好用,还是注册表好用。 redapple2008 发表于 2019-3-7 14:28
谢谢了,查了不好用,还是注册表好用。
嗯嗯,又看了一下。如果要设置成只启动一次,还必须要 /ST(开始时间)参数。加上这个参数还得用和时间相关的宏指令(@SEC),考虑到时间错时,可能导致重启后程序不运行。还是用简单粗暴方式,跟删除注册表一样,删除该计划任务。
创建
Run('cmd /c schtasks /create /TN 开机启动 /TR ' & @AutoItExe & ' /RL Highest /SC ONLOGON /F', '', @SW_HIDE)
删除
Run('cmd /c schtasks /Delete /TN 开机启动 /F', '', @SW_HIDE)
怎么方便怎么来吧!
页:
[1]