web-dev-qa-db-ja.com

ウィンドウサービスSystem.Security.SecurityExceptionのインストール中にエラーが発生しました

私はウィンドウサービスを作成し、それをインストールするには、そのデプロイメントプロジェクトを作成してインストールしました。インストール後、それを見つめました。正常に起動しました。

翌日、いくつかの変更を加え、再構築して再インストールしましたが、今はインストールされません。

次に、インストーラーの問題を考え、サービス用のカスタムインストーラーを作成して、いつでもコードを更新できるようにします。

誰かが将来これを必要とする場合に備えて、私はこのように作成しました。

public class MyInstaller : Installer
    {
        ServiceProcessInstaller spi;
        ServiceInstaller si;
        public MyInstaller()
        {            
            spi = new ServiceProcessInstaller();
            spi.Account = ServiceAccount.LocalSystem;

            si = new ServiceInstaller();
            si.StartType = ServiceStartMode.Manual;
            si.ServiceName = "MyService";
            si.DisplayName = "My Service";
            si.Description = "service installed from command line";

            this.Installers.Add(spi);
            this.Installers.Add(si);

        }
}

パラメータの引数を確認することで、メインメソッドから呼び出しました。

                            case "-i":
                            case "-install":
                                ti = new TransactedInstaller();
                                mi = new MyInstaller();
                                ti.Installers.Add(mi);
                                string logPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\install.log";
                                ctx = new InstallContext(logPath, cmdline);
                                ti.Context = ctx; //.Context ( ctx );
                                ti.Install(new Hashtable());
                                break;

インストールしようとしているとき。 エラーSystem.Security.SecurityException:ソースが見つかりませんでしたが、一部またはすべてのイベントログを検索できませんでした。アクセスできないログ:セキュリティ。

私はそれをグーグルで調べて、サービスがアプリケーションのログをインストールしている間にアクセスし、そこにログを書き込むことを知るようになります。

イベントログを書き込みません。ロギング用のlog4netがあります。しかし、それでもデフォルトの動作です。

この問題を解決するにはどうすればよいですか?すべての権限があっても、インストールされません。

ありがとう

23
sunder

「管理者として実行」が必要になる場合があることを発見しました。コマンドプロンプトからインストールする場合は、「管理者として実行」でthatを起動する必要がある場合があります。

71
Eben Roux

メッセージの根本的な原因は別だったかもしれませんが、LocalServiceではなくLocalSystemとして実行するようにサービスを変更することで修正しました(とにかくこれが必要です)。

1
Jay Carlton

「Windows 7 64ビット」および「Windows 10」では、次のことを確認する必要があります。

1)Visual StudioコマンドプロンプトAS ADMINISTRATORを実行します(右クリック..その他..管理者として調整)

enter image description here

2)exeファイルがある「obj」フォルダーに移動します。 (cd [\ objへのすべてのパス])3)installutil [myservice.exe]を起動します

「admin」として実行しないと、古いwin7でも失敗します。 :(

注:MSDNでは説明しています:

(で: https://docs.Microsoft.com/en-us/dotnet/framework/windows-services/walkthrough-creating-a-windows-service-application-in-the-component-designer =)

「Windowsサービスをインストールするには、サービスをインストールするコンピューターの管理者資格情報が必要です。」

:)

0
ingconti