ServiceInstall 資料表

ServiceInstall 資料表是用來安裝服務,並具有下列資料行。

資料行 類型 答案 Nullable
ServiceInstall 識別碼 Y N
名稱 格式 化 N N
DisplayName 格式 化 N Y
ServiceType DoubleInteger N N
StartType DoubleInteger N N
ErrorControl DoubleInteger N N
LoadOrderGroup 格式 化 N Y
相依性 格式 化 N Y
StartName 格式 化 N Y
密碼 格式 化 N Y
引數 格式 化 N Y
元件_ 識別碼 N N
Description 格式 化 N Y

 

資料行

ServiceInstall

這是資料表的主鍵。

名字

此資料行是提供要安裝之服務名稱的字串。 字串的長度上限為 256 個字元。 服務控制管理員資料庫會保留服務名稱中的字元大小寫,但服務名稱的比較不區分大小寫。 正斜線 (/) 和反斜線 (\) 不正確服務名稱字元。

DisplayName

此資料行是使用者介面程式用來識別服務的可當地語系化字串。 字串的長度上限為 256 個字元。 服務控制管理員會保留顯示名稱的大小寫,但顯示名稱比較不區分大小寫。

ServiceType

此資料行是一組指定服務類型的位旗標。 必須在此資料行中指定下列其中一個服務類型。

服務類型 Description
SERVICE_WIN32_OWN_PROCESS 0x00000010 執行其本身進程的 Microsoft Win32 服務。
SERVICE_WIN32_SHARE_PROCESS 0x00000020 共用進程的 Win32 服務。
SERVICE_INTERACTIVE_PROCESS 0x00000100 與桌面互動的 Win32 服務。 這個值不能單獨使用,而且必須加入至上述兩種類型之一。使用這個旗標時,StartName 資料行必須設定為 LocalSystem 或 null。

 

不支援下列類型的服務。

服務類型 Description
SERVICE_KERNEL_DRIVER 0x00000001 驅動程式服務。
SERVICE_FILE_SYSTEM_DRIVER 0x00000002 檔案系統驅動程式服務。

 

StartType

此資料行是一組位旗標,可指定何時啟動服務。 下列其中一種服務啟動類型必須在此資料行中指定。

服務啟動類型 Description
SERVICE_AUTO_START 0x00000002 在啟動系統期間啟動服務。
SERVICE_DEMAND_START 0x00000003 服務控制管理員呼叫 StartService 函式時啟動服務。
SERVICE_DISABLED 0x00000004 指定無法再啟動的服務。

 

Windows Installer 無法使用SERVICE_BOOT_START和SERVICE_SYSTEM_START選項。

ErrorControl

如果服務無法在啟動期間啟動,此資料行會指定啟動程式所採取的動作。 這些值會影響已安裝服務的 ServiceControl StartService 事件。 必須在此資料行中指定下列其中一個錯誤控制旗標。

將常數 msidbServiceInstallErrorControlVital (值 = 0x08000) 新增至下表中的旗標,指定如果無法將服務安裝到系統中,整體安裝應該會失敗。

錯誤控制旗標 啟動程式的動作
SERVICE_ERROR_IGNORE 0x00000000 記錄錯誤,並繼續啟動作業。
SERVICE_ERROR_NORMAL 0x00000001 記錄錯誤,顯示訊息方塊並繼續啟動作業。
SERVICE_ERROR_CRITICAL 0x00000003 如果可能,而且系統已重新開機,且已知最後一個設定良好,則會記錄錯誤。 如果啟動最後一個已知良好的組態,啟動作業就會失敗。

 

LoadOrderGroup

此資料行包含字串,此字串會命名此服務所屬的載入順序群組。 如果服務不屬於群組,請指定 null 或空字串。

依賴

此資料行是服務名稱的清單,或載入排序群組的清單,系統必須在此服務之前啟動。 以 Null 分隔清單中的名稱。 如果服務沒有相依性,請指定 Null 或空字串。 使用語法 [~] 插入 Null。 群組的相依性表示,如果嘗試啟動群組的所有成員之後,至少有一個群組成員正在執行,則此服務可以執行。

例如,若要要求系統啟動 service1 和 service2,在啟動 ServiceInstall 資料行中列出的服務之前,請在 [相依性] 資料行中輸入 service1[~]service2[~][~]。 識別碼 service1 和 service2 必須發生在資料表的主鍵中,或是已安裝的服務名稱。

您必須使用 + 來前置組名,才能區分它們與服務名稱。 若要要求系統啟動 service1 和至少一個排序群組 MyGroup 成員,再啟動 ServiceInstall 資料行中列出的服務,請輸入 service1[~]+MyGroup[~][~]。

StartName

服務會以這個資料行中的字串所指定的名稱登入。 如果服務類型SERVICE_WIN32_OWN_PROCESS請使用帳戶名稱格式:DomainName\UserName。 如果帳戶屬於內建網域,則允許指定 .\UserName。 如果服務類型SERVICE_WIN32_SHARE_PROCESS或SERVICE_INTERACTIVE_PROCESS,則必須使用 LocalSystem 帳戶。 如果 StartName 指定為 null, 則 CreateService 函式會使用 LocalSystem 帳戶,因此大部分服務都會將此資料行保留空白。

密碼

此字串是 StartName 資料行中指定的帳號名稱密碼。 請注意,使用者必須具有以服務身分登入的許可權。 如果 StartName 為 null 或空字串,則服務沒有密碼。 LocalSystem 的 Startname 為 null,因此此實例中的密碼為 Null,因此大部分服務會將此資料行保留空白。

請注意,刪除已安裝使用者名稱和密碼的服務之後,安裝程式必須先使用自訂動作來取得密碼,就無法復原服務。 安裝程式可以取得服務的所有必要資訊,但密碼是儲存在系統受保護部分。 自訂動作會提示使用者、從資料庫讀取屬性或讀取檔案,以取得密碼。 然後,自訂動作必須呼叫 ChangeServiceConfig,才能提供密碼,再重新安裝服務。

Windows Installer 不會將輸入的值寫入記錄檔的 [密碼] 欄位中。

參數

此資料行包含執行服務所需的任何命令列引數或屬性。

元件_

元件資料表第一欄的外部索引鍵。 請注意,若要使用 InstallService 資料表安裝此服務,此元件的 KeyPath 必須是服務的可執行檔。

描述

此資料行包含所設定服務的可當地語系化描述。 如果此資料行保留空白,則安裝程式會在有服務時使用服務的現有描述。 如需詳細資訊,請參閱 Microsoft Windows 軟體發展工具組 (SDK) 中的SERVICE_DESCRIPTION。 若要清除現有描述,請在此資料行中輸入 「[~]」。 這會導致新服務或現有服務的空白描述。

備註

循序資料表中的InstallServices巨集指令會處理此資料表中的資訊。 如需使用 時序表的詳細資訊,請參閱 使用序列資料表

此資料表具有 Win32 CreateService 函式的大部分參數。

雖然可以使用使用者介面來指定服務安裝為從來源執行,但安裝程式實際上不支援這種類型的安裝。 必須安裝以本機系統許可權等級執行的服務,才能從本機硬碟執行。 請避免安裝模擬特定使用者許可權的服務,因為這可能會將安全性資料寫入記錄或系統登錄。 這可能會在系統重新開機時建立安全性問題、密碼衝突或遺失組態資料。

若要在卸載期間刪除服務, ServiceControl 資料表 中的服務必須有對應的記錄, msidbServiceControlEventUninstallDelete 旗標必須出現在 [事件] 資料行中。 安裝程式不會在卸載期間刪除 ServiceInstall 資料表中的服務,而不需要 ServiceControl 資料表中的這個專案。

如需如何保護服務的資訊,請參閱 MsiLockPermissionsEx 資料表

驗證

ICE03
ICE06
ICE32
ICE45
ICE46
ICE66
ICE69