InstallUtil を使用した .NET サービスのインストール
-
09-06-2019 - |
質問
自分で作成した .NET サービスをインストールしようとしています。MSDN の推奨に従って、InstallUtil を使用しています。しかし、コマンドラインまたはサービス自体でデフォルトのサービスユーザーを設定する方法を見逃していました。これで、InstallUtil を実行すると、ユーザーの資格情報を求めるダイアログが表示されます。サービスのインストールを大規模なインストールに統合しようとしていますが、サービスのインストールをサイレントのままにする必要があります。
解決
たぶん見つけられたと思います。サービス自体には、自動的に作成された ServiceProcessInstaller コンポーネントに「Account」プロパティがあり、「LocalService」、「LocalSystem」、「NetworkService」、または「User」に設定できます。デフォルトは「User」になっており、プロンプトが表示されたはずです。
他のヒント
お気づきのように、カリム、「アカウント」プロパティが解決策です。このプロパティによって設定されるセキュリティ コンテキスト間の違いに興味がある方は、次の手順を実行してください。
http://msdn.microsoft.com/en-us/library/system.serviceprocess.serviceaccount.aspx
InstallUtil または SC を使用する上で、 セルフインストーラー:
http://www.codeproject.com/KB/dotnet/WinSvcSelfInstaller.aspx
.Net 1.1 ドキュメントでこれを見つけましたが、次のようになります。
の 管理対象インストーラークラス 種類 .NET Framework をサポート インフラストラクチャであり、意図されたものではありません コードから直接使用できます。
また、次のことにも留意してください。 SC.exeユーティリティ Visual Studio をインストールする必要はありません。このexeファイルをサービスを作成したいサーバーにコピーするだけで済みます。 リモートで実行する. 。使用 オブジェクト ユーザーを指定するパラメータ。
このツールにはGUIがあるようですが、私は使用したことがありません。
サービスを実行するためのアカウント、またはサービスをインストールする権限を求められていますか?2 つ目については、管理者としてインストールすると、そのような事態は起こらなくなります。まず、ServiceProcessInstaller をインストーラーに追加する必要があります。
サービスのデザイン画面には、プロジェクト インストーラーを作成するためのリンクがあると思います。そのデザイナーで、System.ServiceProcess.ServiceProcessInstaller タイプのプロセス インストーラーを追加できます。このオブジェクトのプロパティを使用すると、サービスに使用するアカウントを設定できます。
InstallUtil には、アカウント タイプとして「ユーザー」を使用するときにプロンプトを回避できるコマンド ライン スイッチがあります。 /username
そして /password
インストール時にアカウントを構成するために使用されます。
使用法:
installutil.exe /username=user /password=password yourservice.exe
インストーラーがサービスを読み取ってインストールできる構成ファイルが必要になる場合があります。
これを行うには、サービス インストーラーをプロジェクトに追加し、インストール メソッドをオーバーロードします。このメソッドでは、ユーザー名とパスワードを設定します。
public override void Install(IDictionary stateSaver)
{
serviceProcessInstaller1.Username="<username>";
serviceProcessInstaller1.Password="<password>";
base.Install(stateSaver);
}
コンストラクターでユーザー名とパスワードを設定しようとすると、それらの値は上書きされるため、そのためには必ず「Install」をオーバーライドしてください。