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. 所有使用者的這 2 個登錄項目中的程式條目接下來開始: HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 和 \RunOnce
  7. 接下來啟動目前使用者的這 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 帳戶執行您的服務,除非該帳戶需要存取網路資源,此時您需要建立一個網域服務帳戶,授予其對適用資源的存取權限,然後硬編碼其憑證以供該服務運作。在本機上,它將擁有所有內容的管理權限,並且不需要任何服務憑證密碼。

本機系統帳戶

本地系統帳戶是預先定義的本機帳戶,由 服務控制經理。安全子系統無法識別此帳戶,因此您無法在呼叫中指定其名稱 尋找帳戶名功能。它在本地電腦上擁有廣泛的權限,並充當網路上的電腦。其代幣包括NT當局\系統內建\管理員SID;這些帳戶可以存取大多數系統物件。所有區域設定中的帳戶名稱都是.\本地系統。名字,本地系統或者 電腦名稱\本機系統也可以使用。該帳戶沒有密碼。如果您在呼叫中指定 LocalSystem 帳戶 創建服務或者變更服務配置函數時,您提供的任何密碼資訊都會被忽略。

相關內容