各サービスは、ユーザー アカウントのセキュリティ コンテキストで実行されます。 アカウントのユーザー名とパスワードは、サービスのインストール時に CreateService 関数によって指定されます。 ユーザー名とパスワードは、ChangeServiceConfig 関数を使用して変更できます。 QueryServiceConfig 関数を使用して、サービス オブジェクトに関連付けられているユーザー名 (パスワードではなく) を取得できます。 サービス コントロール マネージャー (SCM) は、ユーザー プロファイルを自動的に読み込みます。
サービスを開始すると、SCM はサービスに関連付けられているアカウントにログオンします。 ログオンが成功すると、システムはアクセス トークンを生成し、新しいサービス プロセスにアタッチします。 このトークンは、セキュリティ保護可能なオブジェクト (セキュリティ記述子が関連付けられているオブジェクト) との後続のすべての対話でサービス プロセスを識別します。 たとえば、サービスがパイプへのハンドルを開こうとすると、システムはアクセスを許可する前に、サービスのアクセス トークンをパイプのセキュリティ記述子と比較します。
SCM では、サービス ユーザー アカウントのパスワードは保持されません。 パスワードの有効期限が切れている場合、ログオンは失敗し、サービスの開始に失敗します。 サービスにアカウントを割り当てるシステム管理者は、無期限のパスワードを持つアカウントを作成できます。 管理者は、サービス構成プログラム を使用してパスワードを定期的に変更することで、有効期限が切れたパスワードを持つアカウントを管理することもできます。
サービスが情報を共有する前に別のサービスを認識する必要がある場合、2 番目のサービスは最初のサービスと同じアカウントを使用するか、最初のサービスによって認識されるエイリアスに属するアカウントで実行できます。 ネットワーク全体で分散された方法で実行する必要があるサービスは、ドメイン全体のアカウントで実行する必要があります。
サービスのユーザー アカウントを指定する代わりに、次のいずれかの特別なアカウントを指定できます。