2017-06-22 90 views
0

據我所知,一個服務應用程序的主要入口點調用StartServiceCtrlDispatcher帶有一個條目數組(其中包含要運行的服務的入口點)。爲什麼必須安裝Windows服務?

沒有關於該設置特別需要任何類型的安裝:那麼爲什麼必須安裝Windows服務呢?

我假設它是一個訪問管理/安全的事情,但我無法找到任何網絡上。

+0

如果您要求Windows啓動服務,並且該服務尚未安裝,Windows如何知道要使用的可執行文件? –

+0

服務由OS啓動。它需要知道做這件事的東西,這需要註冊表中的密鑰。沒有太多,即使sc.exe可以做到這一點。鍵入sc.exe創建/?基本信息。 –

回答

1

服務沒有連接到特定的用戶,服務的主要賣點是沒有用戶登錄時運行的能力。如果沒有用戶啓動服務,Windows如何知道要怎麼做如果沒有可以諮詢的中央清單,請開始使用?

服務列表存儲在註冊表中,這是服務管理器獲取已安裝服務及其配置的列表的位置。

大多數第三方服務每個.exe只包含一個服務,傳遞給StartServiceCtrlDispatcher的數組只包含一個服務。着名的svchost.exe可以在一個進程中擁有多個服務,在這種設計中,每個服務都在由svchost.exe加載的.dll中實現。

Microsoft使用svchost.exe設計來減少系統上的進程總數。系統上仍然會有多個svchost進程,每個配置類型都有一個(網絡訪問vs僅限本地等)。

服務管理員需要了解的每項服務的其他配置詳細信息包括在服務死亡時應該採取的操作以及是否應該延遲啓動等。這些設置在服務本身中沒有硬編碼,因此管理員可以更改配置。