RunServicesOnce 注册表项在哪里

RunServicesOnce 注册表项在哪里

我有一个应用程序可以更新本地计算机上的软件。我需要在用户登录之前更新软件,并且了解到通过注册表项运行应用程序RunServicesOnce可能是最适合此目的的方法。

但是我无法使用找到此项regedit,并且它没有出现在与 HKLM RunOnce 项相同的位置HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce

  1. 此密钥位于何处?Windows XP \ Vista \ 7 \ 8 \ 8.1 \ 10 中也一样吗?
  2. 如何使用它,有任何可选参数吗?
  3. 如何确定应用程序以哪个用户身份运行?它是由创建密钥的用户运行的吗?如果服务LocalSystem创建了密钥,它会以哪个用户身份运行LocalSystem

答案1

RunServicesOnce 注册表项在哪里

我有一个应用程序可以更新本地计算机上的软件。我需要在用户登录之前更新软件

在用户登录 Windows 7 之前启动程序

如果您希望它在用户登录之前启动,则必须将其作为服务启动。以下是主要注册表项的启动顺序,在读取 bootmgr 后立即启动,并以两个启动文件夹中的程序快捷方式条目结束。

  1. HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\BootExecute。这可以包括安排 chkdsk 运行的指令,但不包括用户程序。
  2. 接下来启动服务,然后启动 RunServicesOnce 和 RunServices 注册表项(如果存在)
  3. 然后用户登录系统
  4. HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\UserInit。这指向程序 C:\WINDOWS\system32\userinit.exe,条目以逗号结尾。可以通过附加其他程序并用逗号分隔来从此键启动它们。
  5. HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell。这应该只包含一个条目,explorer.exe。
  6. 所有用户的这两个注册表项中的程序条目接下来开始:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 和 \RunOnce
  7. 当前用户的这两个注册表项中的程序条目接下来启动:HKCU\Software\Microsoft\Windows\CurrentVersion\Run 和 \RunOnce
  8. 所有用户和当前用户的启动文件夹中的程序最后启动。

防病毒和防火墙等重要程序在序列中以服务形式提前启动。通知区域(屏幕右下角)中显示的图标只是它们的用户界面,即选项和首选项。

64 位计算机中 32 位软件的附加位置是 HKLM\SOFTWARE\Wow6432Node 和 HKCU。

运行键和搜索顺序

注册表甚至在加载 NT 内核之前就被访问,因此了解计算机在启动时配置为加载的内容非常重要。以下注册表项列表在系统启动期间按不同 Windows 组件的使用顺序进行访问:

  1. HKLM\SYSTEM\CurrentControlSet\控制\会话管理器\BootExecute
  2. HKLM\System\CurrentControlSet\Services(起始值 0 表示内核驱动程序,在内核启动之前加载)
  3. HKLM\System\CurrentControlSet\Services(启动值为 2,自动启动;3,通过 SCM 手动启动)
  4. HKLM\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
  5. HKCU\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
  6. HKLM\Software\Microsoft\Windows\CurrentVersion\RunServices
  7. HKCU\Software\Microsoft\Windows\CurrentVersion\RunServices
  8. HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify
  9. HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
  10. HKCU\软件\微软\Windows NT\CurrentVersion\Winlogon\Shell
  11. HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell
  12. HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\ShellServiceObjectDelayLoad
  13. HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce
  14. HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnceEx
  15. HKLM\Software\Microsoft\Windows\CurrentVersion\Run
  16. HKCU\Software\Microsoft\Windows\CurrentVersion\Run
  17. HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce
  18. HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
  19. HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
  20. HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows\load
  21. HKLM\软件\微软\Windows NT\CurrentVersion\Windows
  22. HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\SharedTaskScheduler(仅限 XP、NT、W2k)
  23. HKLM\Software\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs

笔记:在运行 64 位架构和 64 位 Windows 版本的系统上,其中一些键也反映在 HKLM\Software\wow6432node 下。我不会在这篇文章中逐一介绍这些内容。

以 LocalSystem 帐户运行您的服务,除非该帐户需要访问网络资源,此时您需要创建一个域服务帐户,授予其访问适用资源的权限,然后硬编码其凭据以供服务以该帐户运行。在本地计算机上,它将拥有所有内容的管理权限,并且不需要任何服务凭据密码。

本地系统帐户

本地系统account 是预定义的本地帐户,由 服务控制管理器。安全子系统无法识别此帐户,因此您无法在调用 查找帐户名称功能。它在本地计算机上拥有广泛的权限,并充当网络上的计算机。其令牌包括NT 权限\系统内置\管理员SID;这些帐户可以访问大多数系统对象。所有区域设置中的帐户名称都是.\本地系统。 名字,本地系统或者 计算机名\本地系统也可以使用。此帐户没有密码。如果您在调用中指定 LocalSystem 帐户 创建服务或者变更服务配置功能,您提供的任何密码信息都会被忽略。

相关内容