1つのウィンドウアプリケーションを開発し、1つのサービスも作成しています。ウィンドウアプリケーションでコーディングを使用してサービスを開始しましたが、コンピューターでウィンドウサービスを開けないなどのエラーが発生します'.'
以下のコードを使用しました。
ServiceController controller = new ServiceController("SeoMozScheduleService");
if (controller.Status == ServiceControllerStatus.Stopped)
{
controller.Start();
}
アプリケーションを右クリックして、管理者として実行をクリックすると、正常に機能します...
C:// Program Files/ApplicationFolder/.exeに移動します。
アプリケーションを開くたびにこれを自動化するには、ソリューションに マニフェストファイルを追加 する必要があります。次に、ファイル内のrequestedExecutionLevel
ノードを次のように更新します。
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
</requestedPrivileges>
ただし、UACが有効になっている場合、この設定を変更すると、システムを毎回管理者としてアプリケーションを実行するように求められます。
visual Studioを使用している場合は、それを閉じ、管理者として実行してVisual Studioを再度開きます。
これらの解決策はどれも役に立ちませんでした。なぜなら、最初に対象のコンピューターで管理者アクセス権があることを実際に確認した場合、それは役に立ったからです!私はドメイン管理者アカウントを使用して、メインアカウントへの管理者アクセス権を奪って戻しました。ドメイン管理者アカウントで、リモートコンピューターでサービスが実行されているかどうかを確認するいくつかのServiceController
コードを実行したところ、問題はありませんでした。メインアカウントとして実行した場合、Visual Studioを管理者として実行していても機能しませんでした。ローカル管理者グループのメインアカウントなしでテストしていたことがわかりました...
私はサーバーでスケジュールされたタスクでこれに遭遇しました-「最高の特権で実行」をチェックしてそれを解決しました。 (もちろん、これを機能させるには、サービスアカウントに管理者権限が必要です。)
アプリケーションは、require管理者権限を必要としない可能性があります。 Microsoft管理コンソール(MMC)(サービススナップインを含む)にはありません。 MMCのマニフェストには、
<requestedExecutionLevel
level="highestAvailable"
uiAccess="false"
/>
level="requireAdministrator"
。
プロジェクトにマニフェストを追加する方法については、 c#-マニフェストファイルを作成/編集するにはどうすればよいですか?-スタックオーバーフロー を参照してください。
最小特権の原則については、次のような非常に多くの記事があります。
App.confのフレームワークバージョンをシステムにインストールされているバージョンに変更すると、問題が解決しました。