ServiceInstall テーブル
ServiceInstall テーブルは、サービスのインストールに使用され、次の列があります。
コラム | 種類 | 鍵 | 許容 |
---|---|---|---|
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 |
形容 | 書式設定された | N | Y |
列
-
ServiceInstall
-
これはテーブルの主キーです。
-
名
-
この列は、インストールするサービス名を指定する文字列です。 文字列の最大長は 256 文字です。 サービス コントロール マネージャー データベースでは、サービス名の文字の大文字と小文字が保持されますが、サービス名の比較では大文字と小文字が区別されません。 スラッシュ (/) とバックスラッシュ (\) は無効なサービス名文字です。
-
DisplayName の
-
この列は、ユーザー インターフェイス プログラムがサービスを識別するために使用するローカライズ可能な文字列です。 文字列の最大長は 256 文字です。 サービス コントロール マネージャーは表示名の大文字と小文字を区別しませんが、表示名の比較では大文字と小文字が区別されません。
-
ServiceType
-
この列は、サービスの種類を指定するビット フラグのセットです。 この列では、次のいずれかのサービスの種類を指定する必要があります。
サービスの種類 価値 形容 SERVICE_WIN32_OWN_PROCESS 0x00000010 独自のプロセスを実行する Microsoft Win32 サービス。 SERVICE_WIN32_SHARE_PROCESS 0x00000020 プロセスを共有する Win32 サービス。 SERVICE_INTERACTIVE_PROCESS 0x00000100 デスクトップと対話する Win32 サービス。 この値は単独では使用できず、前の 2 つの型のいずれかに追加する必要があります。このフラグを使用する場合は、StartName 列を LocalSystem または null に設定する必要があります。 次の種類のサービスはサポートされていません。
サービスの種類 価値 形容 SERVICE_KERNEL_DRIVER 0x00000001 ドライバー サービス。 SERVICE_FILE_SYSTEM_DRIVER 0x00000002 ファイル システム ドライバー サービス。 -
StartType
-
この列は、サービスを開始するタイミングを指定するビット フラグのセットです。 この列では、次のいずれかの種類のサービス開始を指定する必要があります。
サービス開始の種類 価値 形容 SERVICE_AUTO_START 0x00000002 システムの起動時にサービスが開始されます。 SERVICE_DEMAND_START 0x00000003 サービス コントロール マネージャーが StartService 関数を呼び出すと、サービスが開始されます。 SERVICE_DISABLED 0x00000004 開始できなくなったサービスを指定します。 Windows インストーラーでは、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 を挿入します。 グループへの依存関係は、グループのすべてのメンバーを開始しようとした後に、グループの少なくとも 1 つのメンバーが実行されている場合に、このサービスを実行できることを意味します。
たとえば、システムが service1 と service2 を開始することを要求するには、ServiceInstall 列に一覧表示されているサービスを開始する前に、依存関係列に「service1[~]service2[~][~]」と入力します。 識別子 service1 と service2 は、テーブルの主キーに含まれているか、既にインストールされているサービスの名前である必要があります。
サービス名と区別できるように、グループ名の前に + を付ける必要があります。 ServiceInstall 列に一覧表示されているサービスを開始する前に、システムが service1 と注文グループ MyGroup の少なくとも 1 つのメンバーを開始するように要求するには、「service1[~]+MyGroup[~][~]」と入力します。
-
StartName
-
サービスは、この列の文字列によって指定された名前としてログオンします。 サービスの種類がSERVICE_WIN32_OWN_PROCESS場合は、DomainName\UserName という形式でアカウント名を使用します。 アカウントが組み込みドメインに属している場合は、.\UserName を指定できます。 サービスの種類がSERVICE_WIN32_SHARE_PROCESSまたはSERVICE_INTERACTIVE_PROCESS場合は、LocalSystem アカウントを使用する必要があります。 CreateService 関数は、StartName が null として指定されていて、ほとんどのサービスがこの列を空白のままにした場合に LocalSystem アカウントを使用します。
-
パスワード
-
この文字列は、StartName 列で指定されたアカウント名のパスワードです。 ユーザーには、サービスとしてログオンするためのアクセス許可が必要です。 StartName が null または空の文字列の場合、サービスにはパスワードがありません。 LocalSystem の Startname は null であるため、このインスタンスのパスワードは null であるため、ほとんどのサービスではこの列は空白のままにします。
ユーザー名とパスワードを使用してインストールされたサービスを削除した後、インストーラーは、最初にカスタム アクションを使用してパスワードを取得しないと、サービスをロールバックできないことに注意してください。 インストーラーは、システムの保護された部分に格納されているパスワードを除き、サービスに関するすべての必要な情報を取得できます。 カスタム アクションは、ユーザーにプロンプトを表示するか、データベースからプロパティを読み取るか、ファイルを読み取ることによって、パスワードを取得します。 カスタム アクションでは、サービスを再インストールする前に、ChangeServiceConfigを呼び出してパスワードを指定する必要があります。
Windows インストーラーでは、パスワード フィールドに入力された値はログ ファイルに書き込まれません。
-
引数
-
この列には、サービスを実行するために必要なコマンド ライン引数またはプロパティが含まれています。
-
Component_
-
コンポーネント テーブルの列 1 への外部キー。 InstallService テーブルを使用してこのサービスをインストールするには、このコンポーネントの KeyPath がサービスの実行可能ファイルである必要があることに注意してください。
-
の説明
-
この列には、構成されているサービスのローカライズ可能な説明が含まれています。 この列を空白のままにすると、インストーラーはサービスの既存の説明 (存在する場合) を使用します。 詳細については、Microsoft Windows ソフトウェア開発キット (SDK) のSERVICE_DESCRIPTIONを参照してください。 既存の説明を消去するには、この列に「[~]」と入力します。 これにより、新規または既存のサービスの説明が空白になります。
備考
InstallServices アクション シーケンス テーブルで、このテーブル内の情報 処理されます。 シーケンス テーブル 使用の詳細については、「シーケンス テーブル の使用を参照してください。
この表には、Win32 CreateService 関数のほとんどのパラメーターがあります。
ユーザー インターフェイスを使用して、サービスをソースからの実行としてインストールするように指定することはできますが、インストーラーは実際にはこの種類のインストールをサポートしていません。 ローカル ハード ドライブから実行するには、ローカル システムの特権レベルで実行されるサービスをインストールする必要があります。 セキュリティ データがログまたはシステム レジストリに書き込まれる可能性があるため、特定のユーザーの権限を借用するサービスをインストールしないでください。 これにより、セキュリティの問題、パスワードの競合、またはシステムの再起動時の構成データの損失が発生する可能性があります。
アンインストール中にサービスを削除するには、ServiceControl テーブル にサービスの対応するレコードが存在し、msidbServiceControlEventUninstallDelete フラグがイベント列に表示されている必要があります。 インストーラーは、アンインストール中に ServiceInstall テーブル内のサービスを削除しません。このエントリは ServiceControl テーブルにありません。
サービスをセキュリティで保護する方法については、MsiLockPermissionsEx Tableを参照してください。
検証