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 資料表。
驗證