Windows 设置如何覆盖 RUN 注册表中的条目

Windows 设置如何覆盖 RUN 注册表中的条目

我最近一直在尝试不同的方法来管理启动/登录,我发现了一些我不太明白的东西。

Autoruns将条目HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run视为将要登录时运行。

但是,您可以转到设置 GUI,转到Startup apps,并在那里禁用它们,但它们不会从注册表中消失(或移动)。

同时,如果您通过 禁用它们Autoruns,它们只会被移动到名为 的子项AutorunsDisabled(并且它们会从设置startup apps列表中消失),因此看起来注册表项只是潜在启动命令的列表,并且应该在某处启用或禁用这些命令。

因为我正在尝试了解它们的工作原理,以便我可以通过编程添加或删除它们,设置 GUI 在后台做什么来让计算机知道要运行哪些条目以及要忽略哪些条目?

答案1

我跟踪了从启动选项卡启用和禁用项目时任务管理器的执行情况,并发现了以下内容。

任务管理器通过 Autoruns 以外的另一种机制来实现这一神奇效果。它会更改以下注册表项下的值:

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StartupApproved\Run

对于每个要运行的应用程序,您都会在此注册表项下找到一个条目,其名称是该应用程序的名称,其值为下列之一:

  • 入口是已启用: 02 00 00 00 00 00 00 00 00 00 00 00(十六进制)
  • 入口是已禁用:(63 60 60 60 62 F9 8C 76 C5 3B D9 91十六进制)或者O3 00 00 00 d4 0d 43 8d c8 3b d9 01
    每次我禁用它时,这个值都是不同的。

任务管理器通过修改项目的值来发挥它的魔力。

现在我知道要搜索什么了,我找到了这篇文章 注册表: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\StartupApproved\Run 说的是:

注册表: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\StartupApproved\Run

下面的值 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\StartupApproved\Run 可用于启用或禁用 下的相应值 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

值 02 00 00 ... 或 06 00 00 ... 似乎表示该条目已启用,所有其他值均表示已禁用。(可能,在禁用的情况下,该值是禁用的时间戳)。

这些值可以在 taskmgr.exe 的启动选项卡中修改。

另请参阅
所有用户的对应密钥是:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StartupApproved\Run

答案2

通过调整 SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StartupApproved\Run 设置,看起来可以将值缩小到四个不同的值:

01 - 启动已禁用,具有管理员权限的用户可以启用

02 - 启动已启用,具有管理员权限的用户可以禁用

08 - 启动已启用,用户无法禁用(灰色)

09 - 启动已禁用,用户无法启用(灰色)

它仅使用两个数字即可工作。99 的工作方式与 09 相同,等等。可能还有其他不同的操作,但我只关心这四个。

相关内容