我們希望在登入過程的早期就運行軟體。該軟體修改或隱藏了用戶桌面的某些元素,用戶永遠不應該看到未修改的桌面。
現在,在 Windows 7 上,只需透過自動啟動來啟動軟體就可以了;顯示桌面時軟體已處於作用中狀態。
但對於 Windows 10,該軟體會在桌面首次顯示後幾秒鐘啟動,因此對於我們的目的來說為時已晚。
有沒有辦法提前啟動軟體或延遲桌面?
PS:我們正在做類似資訊亭的嵌入式機器,所以我們真的很想這麼做。
答案1
從這個計算器問題,最好的選擇是將程式作為服務運行。一種選擇是使用國家安全局。答案中的相關部分:
Windows 7 的正常啟動順序是:
- 開機自我檢測 (POST) 階段
- 初始啟動階段
- Windows 啟動管理員階段
- Windows 開機載入程式階段
- 核心載入階段
- 登入階段
核心載入階段 Windows Boot Loader 負責將 Windows 核心 (
Ntoskrnl.exe
) 和 HAL 載入到記憶體中。核心和 HAL 一起初始化一組稱為 Windows 執行程式的軟體功能。 Windows 執行程式處理儲存在登錄中的設定資訊HKLM\SYSTEM\CurrentControlSet
並啟動服務和驅動程式。以下部分提供有關內核載入階段的更多詳細資訊。登入階段
Windows 子系統啟動
Winlogon.exe
,這是一項允許您登入和登出的系統服務。Winlogon.exe
然後執行以下操作:
- 啟動服務子系統 (
Services.exe
),也稱為 SCM。 SCM 初始化登錄項目 Start 在登錄子項目中指定為 Autoload 的服務HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Servicename
。- 啟動本地安全機構 (LSA) 進程 (
Lsass.exe
)。- 分析開始登入提示時的Ctrl+ Alt+Delete組合鍵(如果電腦是 AD DS 網域的一部分)。
登入使用者介面 (LogonUI) 功能和憑證提供者(可以是標準憑證提供者或第三方憑證提供者)收集使用者名稱和密碼(或其他憑證),並將此資訊安全地傳遞給 LSA 進行驗證。如果使用者提供了有效的憑證,則使用預設的 Kerberos V 5 驗證協定或 Windows NT LAN Manager (NTLM) 授予存取權限。
Winlogon 初始化安全性和驗證功能,而 PnP 初始化自動載入服務和驅動程式。使用者登入後,登錄項目
LastKnownGood
(位於HKLM\SYSTEM\Select
)引用的控制集將使用子項目中的內容進行更新CurrentControlSet
。預設情況下,Winlogon 然後啟動Userinit.exe
Windows 資源管理器 shell。然後 Userinit 可能會啟動其他進程,包括:
- 群組原則設定生效應用於使用者和電腦的群組原則設定生效。
啟動程式運行當群組原則設定未覆蓋時,Windows 啟動以下登錄子項目和檔案系統資料夾中引用的登入腳本、啟動程式和服務:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Runonce HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows\Run HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce SystemDrive\Documents and Settings\All Users\Start Menu\Programs\Startup SystemDrive\Documents and Settings\username\Start Menu\Programs\Startup
多個應用程式可能會配置為在安裝 Windows 後預設啟動,其中包括 Windows Defender。電腦製造商或 IT 部門可能會配置其他啟動應用程式。
使用者成功登入電腦後,Windows 啟動才完成。如果在登入階段啟動失敗,則表示配置為自動啟動的服務或應用程式出現問題。