ServiceProcessInstaller.NET Windows サービスをインストールする があります。
次のいずれかの場合、インストール プロセスは完全に機能します。
- サービスを SYSTEM (
serviceProcessInstaller1.Account = ServiceAccount.LocalSystem) として実行するように設定します。 - およびプロパティ
serviceProcessInstaller1.Account = ServiceAccount.Userを指定するか、インストール プロセスでプロンプトが表示されるようにして、サービスを通常のユーザー ( ) として実行するように設定します。UsernamePassword
ただし、サービスを仮想ユーザーa la として実行したいと思いますNT Service\ServiceName。一部の SQL Server サービスを見ると、デフォルトで独自の仮想ユーザー アカウントとしてログオンすることがわかります。http://technet.microsoft.com/en-us/library/dd548356.aspxには、限定的ではありますが、さらに多くの情報があります。
を設定しようとしserviceProcessInstaller1.Username = @"NT Service\ServiceName"ましたが、パスワードとして何を指定しても、インストーラーは次のエラーをスローします (対話型ダイアログを表示するためString.Emptyに、ユーザー名、自分のパスワード、nullさらにはランダムなジャンクを表示しようとしました):
アカウント名とセキュリティ ID の間のマッピングは行われませんでした
ただし、サービスを通常どおりにインストールすると (例: SYSTEM として実行)、スナップインからサービスのプロパティに移動services.mscし、ログオン ページでユーザーをNT Service\ServiceNameに変更すると、問題なく動作します。
私もChangeServiceConfig2関数を調べましたが、何も変更できないようです。
NT Service\ServiceName内のコードからログオン ユーザーを仮想ユーザーに設定するにはどうすればよいServiceProcessInstallerですか?