redapple2008 发表于 2019-3-4 10:09:35

程序重启操作系统后加载一次程序需要怎么操作?【已解决】

本帖最后由 redapple2008 于 2019-3-4 14:34 编辑

程序强制重启操作系统后加载一次程序需要怎么操作?

fybhwsx 发表于 2019-3-6 17:56:14

任务计划一样可以实现,而且可以不用再删除处理。

参考命令:Run('cmd /c schtasks /create /TN 开机启动 /TR ' & @AutoItExe & ' /RL Highest /SC ONLOGON /DELAY 0000:05 /F', '', @SW_HIDE)

redapple2008 发表于 2019-3-4 10:16:12

本文在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 键值只执行一次,操作执行后会被自动删除。

redapple2008 发表于 2019-3-4 10:21:09

RegWrite("HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/RunOnce",@ScriptName,"REG_SZ",@ScriptDir&"\"&@ScriptName)
这样可以吗?

fybhwsx 发表于 2019-3-4 12:06:12

前期工作做这么充分了,不就差试一下了吗。不过我看了下我的百度网盘自启动项是在 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\StartupApproved\Run

fybhwsx 发表于 2019-3-4 12:07:42

类型是 REG_BINARY

redapple2008 发表于 2019-3-4 14:33:39

解决的办法为:
重启前运行:
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))

zhiguang123 发表于 2019-3-4 22:03:23

学习了,谢谢分享

gyp2000 发表于 2019-3-5 22:47:22

本帖最后由 gyp2000 于 2019-3-5 22:51 编辑

开机加载一次的注册表位置,要看程序权限。
无盾牌的程序可以写入注册表 "HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/RunOnce"
有盾牌的高权限程序,如果运行后无UI而且会立即退出可以写入注册表:
"HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/RunOnce"
如果是需要驻留的高权限程序,或者有UI,那么就没有仅启动一次的注册表位置可以写入。
只能写入启动项,然后程序自己处理启动项的注册表设置问题。
当然也可以写快捷方式去启动文件夹。

redapple2008 发表于 2019-3-6 16:56:14

gyp2000 发表于 2019-3-5 22:47
开机加载一次的注册表位置,要看程序权限。
无盾牌的程序可以写入注册表 "HKEY_CURRENT_USER/Software/Mic ...

谢谢了,多谢你帮助!

redapple2008 发表于 2019-3-7 08:54:48

fybhwsx 发表于 2019-3-6 17:56
任务计划一样可以实现,而且可以不用再删除处理。

参考命令:Run('cmd /c schtasks /create /TN 开机启 ...

这个计划任务每次重启都运行,我需要的是软件自己让系统重启后运行一次程序,其他情况下重启系统不运行。

fybhwsx 发表于 2019-3-7 13:37:56

redapple2008 发表于 2019-3-7 08:54
这个计划任务每次重启都运行,我需要的是软件自己让系统重启后运行一次程序,其他情况下重启系统不运行。

那是让你参考的,试下这样呢,还不行就自己百度下schtasks吧。
Run('cmd /c schtasks /create /TN 开机启动 /TR ' & @AutoItExe & ' /RL Highest /SC ONCE /F', '', @SW_HIDE)

redapple2008 发表于 2019-3-7 14:28:08

fybhwsx 发表于 2019-3-7 13:37
那是让你参考的,试下这样呢,还不行就自己百度下schtasks吧。
Run('cmd /c schtasks /create /TN 开机 ...

谢谢了,查了不好用,还是注册表好用。

fybhwsx 发表于 2019-3-7 17:02:53

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]
查看完整版本: 程序重启操作系统后加载一次程序需要怎么操作?【已解决】