サービス ユーザー アカウント

各サービスは、ユーザー アカウントのセキュリティ コンテキストで実行されます。 アカウントのユーザー名とパスワードは、サービスのインストール時に CreateService 関数によって指定されます。 ユーザー名とパスワードは、 ChangeServiceConfig 関数を使用して変更できます。 QueryServiceConfig 関数を使用すると、サービス オブジェクトに関連付けられているユーザー名 (パスワードではなく) を取得できます。 サービス 制御マネージャー (SCM) は、ユーザー プロファイルを自動的に読み込みます。

サービスを開始すると、SCM はサービスに関連付けられているアカウントにログオンします。 ログオンが成功した場合、システムはアクセス トークンを生成し、新しいサービス プロセスにアタッチします。 このトークンは、セキュリティ保護可能なオブジェクト (セキュリティ記述子が関連付けられているオブジェクト) との後続のすべての相互作用におけるサービス プロセスを識別します。 たとえば、サービスがパイプへのハンドルを開こうとすると、システムはサービスのアクセス トークンをパイプのセキュリティ記述子と比較してからアクセスを許可します。

SCM では、サービス ユーザー アカウントのパスワードは保持されません。 パスワードの有効期限が切れている場合、ログオンは失敗し、サービスの開始に失敗します。 サービスにアカウントを割り当てるシステム管理者は、有効期限のないパスワードを使用してアカウントを作成できます。 管理者は、 サービス構成プログラム を使用してパスワードを定期的に変更することで、有効期限が切れるパスワードを持つアカウントを管理することもできます。

サービスが情報を共有する前に別のサービスを認識する必要がある場合、2 番目のサービスは最初のサービスと同じアカウントを使用するか、最初のサービスによって認識されるエイリアスに属するアカウントで実行できます。 ネットワーク全体で分散した方法で実行する必要があるサービスは、ドメイン全体のアカウントで実行する必要があります。

サービスのユーザー アカウントを指定する代わりに、次のいずれかの特別なアカウントを指定できます。