Visual Studio(C#)で作成したアプリケーションを管理者権限で実行する
Visual C#で書いているアプリに簡易httpサーバーを乗せようとしたら若干嵌まったのでメモ。
経緯
HttpListenerクラスを使ってHttpサーバーを起動しようとしたら「アクセスが拒否されました」と怒られる
環境
- Visual Studio 2013
- Windows 8.1 Enterprise x64
原因
管理者権限で実行しないと穴が開けられないっぽい
HttpListenerを使うときに「アクセスが拒否されました」と怒られる話 - うなてっくろぐ
解決策
netshで穴を開けておくといいらしい
「System.Net.HttpListenerException: アクセスが拒否されました。」と表示されてしまう
リリースとかした時に毎回netshで穴開けさせる訳にはいかないので今回は却下アプリケーションを管理者権限で実行させる
どうやらマニフェストファイルに権限を書けばいいらしい
マニフェストファイルを作成する
たぶんデフォルトではマニフェストファイルが作成されていないようなので、新しく追加する。
「UACマニフェストオプション」を編集
作成したマニフェストファイルの、「UACマニフェストオプション」の部分を編集する。
ご丁寧に書き換え方がコメントに書いてあるので、素直に従う。
<!-- 変更前 --> <requestedExecutionLevel level="asInvoker" uiAccess="false" />
<!-- 変更後 --> <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
完了
無事管理者権限で実行されるようになりました。