來自自動運行的說明文件:
注意:在發送電子郵件報告您認為被 Autoruns 忽略的自動啟動位置之前,請確保 Autoruns 不會覆蓋它,並驗證該位置是否確實有效。
據我了解,Autoruns 本質上是已知啟動位置的列表,這就是它能夠找到它找到的啟動程序的方式。我不明白的是:如果一個程式在啟動時啟動,那麼 Windows 必須是意識到的該文件需要在啟動時運行並且還必須知道在哪裡啟動檔案的位置是,否則啟動時不可能運作。那麼,為什麼這樣的工具不能在不依賴「已知的可能」位置的情況下了解 Windows 中啟動檔案的位置呢?為什麼不是所有地點已知的在給定設備上?
我的問題是「為什麼會這樣」而不是「我怎麼能解決這個問題」。我發現了很多第二種,而不是第一種。
答案1
自動運行存在的全部原因是,不只是一個具有多個可能位置的「啟動時運行」功能。相反,啟動過程有幾個階段1不同種類的東西,都是出於不同的原因,在各自的環境中。
例如,驅動程式是要載入到作業系統核心中的.sys 檔案; services是以特殊方式啟動的.exe檔;他們的清單的管理方式必須與您放在「啟動」資料夾中的應用程式捷徑完全不同。 (更不用說每個使用者都有自己的啟動資料夾,同時還有一個全域服務清單。)
除此之外,《Autoruns》中看到的許多地點甚至不是意思是在啟動時運行一些東西,而是列出看似不相關的 Windows 元件所使用的模組,這些元件恰好也在啟動期間被呼叫。
- 例如,音訊編解碼器 .dll 檔案不是您認為的「啟動時運行」位置 - 除非 Windows 被告知在啟動時播放聲音並且必須呼叫該編解碼器。
- MSIE Web 瀏覽器的工具列外掛程式不是「啟動時運行」位置 - 但 Windows 資源管理器過去實際上就是 MSIE,因此每次打開本機資料夾時該外掛程式也會載入。
因此,有許多方法可以使 Windows 的不同部分運行某物在啟動過程中的不同時間,並且沒有單一的方法可以要求 Windows 立即產生所有這些的清單。 Autoruns 只是試圖收集大量彼此沒有共同點的清單(除了它們以某種方式指向某個文件,該文件甚至可能不一定是 .exe 文件)。
基本上,Autoruns 是一個惡意軟體查找器它不僅僅是一個啟動經理。
不幸的是,儘管現在可以在 Microsoft 網站上找到 Autoruns,但它仍然是獨立於 Windows 開發的。如果 Windows 中存在可用於(或濫用)在啟動時啟動某些內容的新位置或功能,則 Autoruns 不會自動識別這一點。
1作為「幾個階段」的迂腐旁注,最常用的「shell:startup」位置在 Windows 啟動期間甚至不使用,而是在使用者登入– 這甚至可能發生在作業系統完成啟動後數小時或數天。
答案2
該程式可能已由另一個程式運行。或可從計劃任務啟動。它可能是由另一個啟動程序載入的 dll 運行的。
自動運行只能對運行程序的“標準”位置進行編目。如果程式隨後由代理程式或其他工具或系統操作啟動,則自動運行將不知道。
本質上,Autoruns 只知道那些地方視窗用於啟動程序。如果其中一個程式安裝了以另一種方式啟動程式的東西,那麼自動運行將不知道。