绝大多数使用过 Windows 操作系统的用户都不会对注册表的 Run、RunOnce 键值感到陌生,但你真的了解所有这些键值的细节吗?让我们具体说来。

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

二、Win2000、WinXp

在 2000、Xp下,Windows对这四个注册表键值的处理完全一样。

HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Run:

HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/RunOnce

HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run

1、进程由 Explorer 调起

2、多个项可以同时运行起来,无先后顺序

3、可以直接登录到桌面

HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/RunOnce

1、进程由 Explorer 调起

2、多个项不可以同时运行起来,必须等待一个进程结束后,另外一个进程方可运行起来

3、在所有进程结束前,不能登录到桌面

三、Vista、Win7

在 Vista、Win7 ,Windows 对这四个注册表键值的处理也完全一样,在 Vista、Win7 下,有完整性级别,requireAdministrator manifest(即exe上是否有小盾牌标志)的概念,所以情况稍微复杂些。

无盾牌标志的程序

HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Run

HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run

HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/RunOnce

1、进程由 Explorer 调起

2、多个项可以同时运行起来,无先后顺序

3、可以直接登录到桌面

4、进程的完整级别为Medium Mandatory Level

HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/RunOnce

1、由 runonce.exe 调起,runonce.exe 由 Explorer调起,runonce.exe 的完整级别为High Mandatory Level

2、多个项不可以同时运行起来,必须等待一个进程结束后,另外一个进程方可运行起来

3、在所有进程结束前,不能登录到桌面

4、进程的完整级别为High Mandatory Level

5、进程结束后,runonce.exe 跟着结束

有盾牌标志的程序

HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Run

HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run

HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/RunOnce

1、由于权限问题,进程不会被运行

HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/RunOnce

1、由 runonce.exe 调起,runonce.exe 由 Explorer调起,runonce.exe 的完整级别为High Mandatory Level

2、多个项不可以同时运行起来,必须等待一个进程结束后,另外一个进程方可运行起来

3、在所有进程结束前,不能登录到桌面

4、进程的完整级别为High Mandatory Level

5、进程结束后,runonce.exe 跟着结束

四、额外的 RunOnceEx 键值

在 Win2000、WinXp中,存在一个特例的注册表键值RunOnceEx,注册表全路径为:HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/RunOnceEx。关于这个键值,99%的程序都不会用到,因此不做详细说明,微软官方的文档地址为:http://support.microsoft.com/kb/310593/en-us

https://blog.csdn.net/hellokandy/article/details/74935773

注册表 Run、RunOnce 浅析的更多相关文章

  1. C++ 无法将值写入注册表 HKEY_LOCAL_MACHINE\Sofeware\Microsoft\Windows\CurrentVersion\Run,以实现开机自启动应用程序。

    C++  无法将值写入注册表 HKEY_LOCAL_MACHINE\Sofeware\Microsoft\Windows\CurrentVersion\Run,以实现开机自启动应用程序.但可以写入到H ...

  2. 注册表(regedit)

    注册表(Registry,繁体中文版Windows称之为登录档)是Microsoft Windows中的一个重要的数据库,用于存储系统和应用程序的设置信息. 打开方式:1.开始>>运行.中 ...

  3. delphi 注册表操作(读取、添加、删除、修改)完全手册

    DELPHI VS PASCAL(87)  32位Delphi程序中可利用TRegistry对象来存取注册表文件中的信息. 一.创建和释放TRegistry对象 1.创建TRegistry对象.为了操 ...

  4. Delphi的注册表操作

    转帖:Delphi的注册表操作 2009-12-21 11:12:52 分类: Delphi的注册表操作 32位Delphi程序中可利用TRegistry对象来存取注册表文件中的信息.     一.创 ...

  5. 黑客常用的windows注册表大全

    目录 使系统没有"运行"选项                        1让操作系统无"关闭系统" 选项                    2让操作系统 ...

  6. 入侵检测中需要监控的注册表路径研究(Windows Registry Security Check)

    1. Windows注册表简介 注册表(Registry,繁体中文版Windows称之为登录档)是Microsoft Windows中的一个重要的数据库,用于存储系统和应用程序的设置信息.早在Wind ...

  7. 常用的windows注册表大全

    目录 使系统没有“运行”选项                        1让操作系统无“关闭系统” 选项                    2让操作系统无“注销”选项              ...

  8. Window权限维持(一):注册表运行键

    在红队行动中在网络中获得最初的立足点是一项耗时的任务.因此,持久性是红队成功运作的关键,这将使团队能够专注于目标,而不会失去与指挥和控制服务器的通信.在Windows登录期间创建将执行任意负载的注册表 ...

  9. 详解Windows注册表分析取证

    大多数都知道windows系统中有个叫注册表的东西,但却很少有人会去深入的了解它的作用以及如何对它进行操作.然而对于计算机取证人员来说注册表无疑是块巨大的宝藏.通过注册表取证人员能分析出系统发生了什么 ...

随机推荐

  1. 设计模式六大原则(六): 开闭原则(Open Closed Principle)

    定义: 一个软件实体如类.模块和函数应该对扩展开放,对修改关闭. 问题由来: 在软件的生命周期内,因为变化.升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不 ...

  2. PatentTips - Supporting address translation in a virtual machine environment

    BACKGROUND A conventional virtual-machine monitor (VMM) typically runs on a computer and presents to ...

  3. method initializationerror not found:JUnit4单元測试报错问题

           今天使用JUnit 4进行单元測试时,測试程序一直执行不起来,报method initializationerror not found错误.例如以下:            网上说版本 ...

  4. D3.js中对array的使用

    由于D3类库和array密切相关,我们有必要讨论一下D3中的数据绑定以及在数组内部运算的方法. 1.D3中的数组 和其他编程语言一样,D3的数组元素可以是数字或者字符等类型,例如: someData= ...

  5. OR1200指令Cache使用举例

    下面内容摘自<步步惊芯--软核处理器内部设计分析>一书 12.4 ICache中的特殊寄存器 通过ICache的接口可知其具有特殊寄存器,而且是不可读的特殊寄存器,OR1200处理器中IC ...

  6. 89.hash算法实现CSDN密码处理

    初始化,数据的行数,hash链表结构体,存储头结点 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdl ...

  7. JS截取字符串 charAt(),slice(),substring(),substr()

    1. charAt(i)输出指定下标的字母,长度为1,适用于把字符串切割成单个字符串. 2. slice() 和 substring() 都支持1-2个参数,第一个参数是开始位置,第二个参数是结束位置 ...

  8. vc如何让打开的子窗口默认是最大化的

    vc如何让打开的子窗口默认是最大化的 浏览: 3554 | 更新: 2011-04-09 17:04 1 0     加入杂志加入杂志 摘要:关于vc如何让打开的子窗口默认是最大化的深入研究.   步 ...

  9. Netty系列之Netty可靠性分析--转载

    原文地址:http://www.infoq.com/cn/articles/netty-reliability 1. 背景 1.1. 宕机的代价 1.1.1. 电信行业 毕马威国际(KPMG Inte ...

  10. LeetCode Algorithm 06_ZigZag Conversion

    The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like ...