質問

自分で作成した .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」をオーバーライドしてください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top