
シンプルな C# Windows サービスをコーディングしました。 を使用してインストールした場合installutil
、システムのすべてのユーザーがサービスを利用できるようになりますか?
サーバー オペレーティング システムの場合、サーバーの起動時にサービスが自動的に開始されるようにするには、どのアカウントでサービスをインストールする必要がありますか?
これについて少し説明してください。
答え1
はい。 通常の Windows サービスは本質的にグローバルです。サービスのインストールにどのアカウントが使用されたかは関係ありません。私の知る限り、Windows はその情報さえ記録しません。
サービスをインストールするには管理者権限が必要です。
Windowsでサービスが自動的に開始されるように設定するには、サービスの開始タイプを適切に設定します。方法: サービス アプリケーションにインストーラーを追加します。
補遺:サービスがドメイン アカウントで実行されている場合、状況によってはサービスを遅延開始するように構成する必要があることがあります。 この答え.NET でこれを行う方法を説明しています。手動で開始するとサービスが正常に実行されるが、自動的に開始すると「ユーザー名またはパスワードが無効です」というタイプのエラーが発生する場合は、遅延開始を構成すると役立つ場合があります。問題の根本的な原因はまだわかりません。
(サービスがSERVICE_USER_OWN_PROCESS
またはSERVICE_USER_SHARE_PROCESS
タイプを使用する場合、ログオンしたユーザーごとにサービスの個別のインスタンスが存在し、この種のサービスの動作は適切に文書化されていないようです。ただし、答えは同じであると思います。インストールは依然としてグローバルであり、どのアカウントがサービスをインストールしても違いはありません。)