RunServicesOnce 注册表项在哪里

kha*_*osh 6 windows windows-registry

我有一个应用程序可以更新本地机器上的软件。我需要在用户登录之前更新软件,并且读到通过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?

Vom*_*yle 8

RunServicesOnce 注册表项在哪里

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

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

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

  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. 所有用户的这 2 个注册表项中的程序条目接下来开始: HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 和 \RunOnce
  7. CURRENT USER 的这 2 个注册表项中的程序条目接下来开始: HKCU\Software\Microsoft\Windows\CurrentVersion\Run 和 \RunOnce
  8. 所有用户和当前用户的启动文件夹中的程序都是最后启动的。

像防病毒和防火墙这样的重要程序作为服务在序列的早期启动。出现在通知区域(屏幕右下方)的图标只是它们的用户界面,即选项和首选项。

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

运行键和搜索顺序

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

  1. HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\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\Software\Microsoft\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\Software\Microsoft\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 帐户运行您的服务,除非该帐户需要访问网络资源,此时您将创建域服务帐户,授予它访问适用资源的权限,然后硬编码其凭据以供服务运行。在本地机器上,它将拥有对所有内容的管理权限,并且不需要任何服务凭据的密码。

本地系统帐户

本地系统帐户是由所使用的预定义的本地帐户 的服务控制管理器。安全子系统无法识别此帐户,因此您无法在调用LookupAccountName函数时指定其名称 。它在本地计算机上拥有广泛的特权,并充当网络上的计算机。它的令牌包括NT AUTHORITY\SYSTEMBUILTIN\Administrators SID;这些帐户可以访问大多数系统对象。所有语言环境中的帐户名称都是.\LocalSystem。也可以使用名称LocalSystemComputerName\LocalSystem此帐户没有密码. 如果您在调用CreateServiceChangeServiceConfig函数时指定 LocalSystem 帐户,则 您提供的任何密码信息都将被忽略。

  • “_如果您希望它在用户登录之前启动,则必须将其作为服务启动。_”代替`schtasks` 怎么样? (3认同)