【C#】自分自身を管理者権限に昇格して起動する

プログラミング プログラミング
プログラミング

アプリケーションを管理者権限で起動するにはコンテキストメニューから「管理者として実行」を行う必要があります。
しかし、起動時に毎回「管理者として実行」をするにはいささか面倒です。そこで、プログラムを実行したときに自動的に自分自身で管理者権限に昇格する方法を記載します。
マニフェストファイルに定義する方法が一般的のようですがコンソールアプリで簡単に記述できたら便利なので今回のような方法を採用しています。

Sponsored links
Sponsored links

開発環境

テスト環境

PC : NiPoGi AK1PULS
OS : Windows11 Pro 23H2

Microsoft Visual Studio Community 2022 Version 17.7.6

管理者権限の確認と昇格方法

自分自身で管理者権限に昇格するのは難しいので、管理者権限で起動されていなかったら、管理者権限をつけた別プロセスを起動し、自分は終了します
今回は、コンソールアプリで作成しています。コンソールウィンドウを隠して2重起動防止をしています。

「ユーザーアカウント制御」が有効になっている場合は、起動時に「アプリがデバイスに変更・・・」のダイアログが表示されますが、これはしょうがないでしょうか。

いままでは「ユーザーアカウント制御(UAC)」を無効にして利用していましたが、Windows11にしてからはデフォルトのまま利用しています。
こまごまとしたアプリケーションを作成し、他の人に利用していただいていると、やはりデフォルトの設定で利用されている方に合わせないといけないな、と感じることが多くなってきましたので。

タイトルとURLをコピーしました