the glue

やってみたことで忘れそうなこと、役立ちそうなことなどをまとめています。たまに何気ない日常の話もします。

Visual Studio(C#)で作成したアプリケーションを管理者権限で実行する

Visual C#で書いているアプリに簡易httpサーバーを乗せようとしたら若干嵌まったのでメモ。

経緯

HttpListenerクラスを使ってHttpサーバーを起動しようとしたら「アクセスが拒否されました」と怒られる
f:id:sweep3092:20141227155125p:plain

環境

原因

管理者権限で実行しないと穴が開けられないっぽい
HttpListenerを使うときに「アクセスが拒否されました」と怒られる話 - うなてっくろぐ

解決策

マニフェストファイルを作成する

たぶんデフォルトではマニフェストファイルが作成されていないようなので、新しく追加する。

  1. ソリューションエクスプローラーでプロジェクトを右クリックし、新しい項目を追加
  2. 「アプリケーション マニフェストファイル」を選択し、追加

f:id:sweep3092:20141227154841p:plain

UACマニフェストオプション」を編集

作成したマニフェストファイルの、「UACマニフェストオプション」の部分を編集する。
ご丁寧に書き換え方がコメントに書いてあるので、素直に従う。

<!-- 変更前 -->
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
<!-- 変更後 -->
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

完了

f:id:sweep3092:20141227155634p:plain
無事管理者権限で実行されるようになりました。