2009-08-05 14 views
8

アカウントをuserに設定したWindowsサービスを作成しました。つまり、サービスをインストールすると、ユーザー名とパスワードを渡す必要があります。おそらくBeforeInstallイベントでこれらをProjectInstallerクラスに設定する方法はありますか?もしそうなら、どのように?Windowsサービスのユーザーアカウントをプログラムで設定することはできますか?

答えて

3

を見てみましょう。

+0

コンパイル時ではなく、実行時にユーザー名とパスワードを設定できますか?既にサービス実行可能ファイルにコンパイルされているインストーラにアクセスできる必要はありませんか?おそらく、代わりにWMIルートに行く必要があります。 –

+0

あなたのサービスは、 "System.Configuration.Install.Installer"を継承する独自のインストーラクラスを持つことができます。この継承されたクラスを使用してフォームを関連付けます。このフォームは、インストール中に表示され、ユーザー/パスワードを含むさまざまなものの入力を促します。その後、InstallerクラスでOnBeforeInstallをオーバーライドしてMeを設定します。ServiceProcessInstaller1.Username。 – MattH

+0

まだ存在するWinServiceのWindowsサービスアカウントを変更しますか? – Kiquenet

-1

通常、これらの資格情報をInstallerクラスに渡すことができます。ハードコーディングすることも、コマンドライン引数として渡すこともできます。 2番目の方法がより適切ですが、コマンドライン引数を不必要に解析する必要があります。

私はあなたに第三の手法を提案する...

<ShamelessPlug>

こんにちは!私はオープン ソースWindowsサービスの開発者です フレームワークDaemoniqと呼ばれる。コマンドラインで の資格情報を渡すのは、 の機能の1つです。 CommonServiceLocator経由

  • コンテナにとらわれないサービス場所
  • はapp.configを
  • 経由serviceNameのは、displayName、説明 とserviceStartModeのような一般的なサービスのプロパティを設定します。あなたは、現在の機能が含まれ http://daemoniq.org

    からダウンロードすることができます

  • 複数のWindowsサービスを同じプロセスで実行する
  • app.configで復旧オプションを設定する
  • セットサービスは、コマンドラインを介して
  • は、installコマンドライン、アンインストール、デバッグサービスを経由してapp.configを
  • セットサービスプロセスの資格を経て上の依存

</ShamelessPlug >

乾杯!

+0

これ以上ないもののために恥知らずのプラグ。 – Grubsnik

4

以下にプロジェクトインストーラを追加すると、インストール中にサービスログオン情報が割り当てられます。

public ProjectInstaller() 
    { 
     InitializeComponent(); 

     serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.<account type>; 
     serviceProcessInstaller1.Username = <domain\userId>; 
     serviceProcessInstaller1.Password = <password>; 
    } 
+0

コードでアカウントを指定せず、アカウントのServiceProcessInstallerプロパティを[ユーザー]に設定すると、インストール中にフォームのダイアログが開き、インストールを実行する個人がドメインユーザーアカウントとパスワードを指定できるようになります。 – JohnL

関連する問題