找回密码
 加入
搜索
查看: 2754|回复: 13

[网络通信] 程序重启操作系统后加载一次程序需要怎么操作?【已解决】

[复制链接]
发表于 2019-3-4 10:09:35 | 显示全部楼层 |阅读模式
本帖最后由 redapple2008 于 2019-3-4 14:34 编辑

程序强制重启操作系统后加载一次程序需要怎么操作?
发表于 2019-3-6 17:56:14 | 显示全部楼层
任务计划一样可以实现,而且可以不用再删除处理。

参考命令:Run('cmd /c schtasks /create /TN 开机启动 /TR ' & @AutoItExe & ' /RL Highest /SC ONLOGON /DELAY 0000:05 /F', '', @SW_HIDE)
 楼主| 发表于 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 键值只执行一次,操作执行后会被自动删除。

评分

参与人数 1金钱 +50 收起 理由
chishingchan + 50 赞一个!

查看全部评分

 楼主| 发表于 2019-3-4 10:21:09 | 显示全部楼层
RegWrite("HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/RunOnce",@ScriptName,"REG_SZ",@ScriptDir&""&@ScriptName)
这样可以吗?
发表于 2019-3-4 12:06:12 | 显示全部楼层
前期工作做这么充分了,不就差试一下了吗。不过我看了下我的百度网盘自启动项是在 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\StartupApproved\Run
发表于 2019-3-4 12:07:42 | 显示全部楼层
类型是 REG_BINARY
 楼主| 发表于 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))
发表于 2019-3-4 22:03:23 | 显示全部楼层
学习了,谢谢分享
发表于 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,那么就没有仅启动一次的注册表位置可以写入。
只能写入启动项,然后程序自己处理启动项的注册表设置问题。
当然也可以写快捷方式去启动文件夹。
 楼主| 发表于 2019-3-6 16:56:14 | 显示全部楼层
gyp2000 发表于 2019-3-5 22:47
开机加载一次的注册表位置,要看程序权限。
无盾牌的程序可以写入注册表 "HKEY_CURRENT_USER/Software/Mic ...

谢谢了,多谢你帮助!
 楼主| 发表于 2019-3-7 08:54:48 | 显示全部楼层
fybhwsx 发表于 2019-3-6 17:56
任务计划一样可以实现,而且可以不用再删除处理。

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

这个计划任务每次重启都运行,我需要的是软件自己让系统重启后运行一次程序,其他情况下重启系统不运行。
发表于 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)
 楼主| 发表于 2019-3-7 14:28:08 | 显示全部楼层
fybhwsx 发表于 2019-3-7 13:37
那是让你参考的,试下这样呢,还不行就自己百度下schtasks吧。
Run('cmd /c schtasks /create /TN 开机 ...

谢谢了,查了不好用,还是注册表好用。
发表于 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)

怎么方便怎么来吧!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-23 21:43 , Processed in 0.084709 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表