ビルドした「TopShelf」Windowsサービスをインストールするために使用しようとしている「高度なインストーラ」プロジェクトがあります。アドバンストインストーラのインストールフォルダに「ローカルシステム」のアクセス権を付与する
アドバンストインストーラで、インストールフォルダにアクセス許可を与えることがわかりましたが、「ローカルシステム」アカウントにアクセス許可を与える方法はありません。
手動では、フォルダのプロパティでセキュリティオプションに移動し、コンピュータ名と同じ名前のユーザーを追加して、末尾に$
を追加します。例えば、MyNiceComputer$
。 (ああ、types
エリアの「コンピュータ」オプションを選択する必要があります。)
しかし、これを高度なインストーラで行う方法はありません。私がMyNiceComputer$
のようなものを作れば、それは単にセキュリティタブで空のエントリを作るだけです。 (フルコントロール用に設定しても、権限はありません)
高度なインストーラでこれを行う必要がある人はいますか?
追加の詳細:
私は、Windowsサービスとして実行されますアプリをインストールしています。 (これはTopShelfで構築されたコンソールアプリケーションです)。
当社の方針は、次のようになりますフォルダにすべての私たちのアプリケーションをインストールすることです:私はインストーラを作成する場合
C:\OurCompanyApps\MyApp
、それが正常に動作しますが、その後、私は私がWindowsサービスを起動したときに、I
Windows could not start the MyApp service on Local Computer
Error 5: Access is denied.
をしかし、私は(のMyAppフォルダにmyNiceComputer$
にフルコントロールの権限を与えることによって)、ローカルシステムへのアクセスを許可する場合、このエラーが表示されなくなり、アプリが正常に動作:次のエラーを取得します。私が読んだところでは、これはアプリケーションがローカルシステムとして実行されているためです。
フルコントロールが必要なのは奇妙に思えますが、それがなければ機能しません。 (しかし私が見る限り、フォルダの内容は変更されていない)。
@Bogdan Mitracheは、Advanced Installerを使用してローカルシステムにアクセス許可を与えることができないようです。これは知っておくと良い(私は見てより多くの時間を無駄にしない)です。システム管理者に私のサービスを実行するための専用のシステムアカウントを要求するでしょう。理想的ではありませんが、回避策として役立ちます。
AI(私のグループの1人がSYSTEMユーザーを示していますが、それはMSSQLグループであり、まだSIDを確認するのに気にしていませんでした)が、確かにカスタムアクションを書く(私はそれを処理するためにC#をお勧めしたい)。 BogdanはSOに答えてもいいですが、定期的に回答するフォーラムもあります。 – adamdc78
申し訳ありませんが、私は何かが不足している必要があります。なぜ特定のアクセス許可を与える必要がありますか?LocalSystemアカウントは、デフォルトでマシン特有のリソースにアクセスするのに十分な特権を持っていませんか? http://stackoverflow.com/questions/510170/the-difference-between-the-local-system-account-and-the-network-service-acco –
また、これらのアクセス許可をインストールフォルダに書き込む場合は代わりに、インストーラ/アプリケーションを再考する必要があります。まずインストールフォルダの中で、AppDataとUserDataフォルダを持っているため、アプリケーションの実行時には何も書いてはいけません。または、実際にインストーラフォルダに書き込む必要がある場合は、特別な権限を必要としないデフォルトの場所を選択してください。 –