C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

管理者権限で実行する方法

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■96504 / inTopicNo.1)  管理者権限で実行する方法
  
□投稿者/ ATTOK (1回)-(2020/12/03(Thu) 11:20:27)

分類:[.NET 全般] 

VB.NETに関する質問です。

プログラムが上からレジストリを操作したいのですが、
そのためにはプログラムを右クリックして、管理者権限で実行する必要があります。

一方で、市販のインストールプログラムの場合、
起動時には管理者権限で実行する必要がないのですが、
レジストリを変更する箇所だけ

https://316-jp.com/wp-content/uploads/2016/06/windows-uac_01.png
このアプリがデバイスに変更を加えることを許可しますか

こういうダイアログが表示され、OKするとプログラムを再起動することなく
インストールを続行することができるものがあるのですが、
こういうものをVB.NETを作るにはどうしたら良いですか?

検索してはみたのですが、
意外と情報が見つかりませんでしたので
よろしくお願いいたします。

引用返信 編集キー/
■96505 / inTopicNo.2)  Re[1]: 管理者権限で実行する方法
□投稿者/ 魔界の仮面弁士 (2932回)-(2020/12/03(Thu) 11:47:44)
2020/12/03(Thu) 13:10:26 編集(投稿者)

No96504 (ATTOK さん) に返信
> 起動時には管理者権限で実行する必要がないのですが、
> レジストリを変更する箇所だけ
アプリ自体は一般ユーザー権限として動作させたいけれども、
特定の機能を実行する時にだけ、管理者権限にしたい、という事でしょうか?

それとも、常に管理者権限にして良いのでしょうか?
後者であれば、アプリケーション マニフェストで
requestedExecutionLevel を指定することができます。


> こういうダイアログが表示され、OKするとプログラムを再起動することなく
> インストールを続行することができるものがあるのですが、
> こういうものをVB.NETを作るにはどうしたら良いですか?

普段は一般ユーザーとして権限昇格の画面無しで実行させ、
特定の機能を呼び出した時だけ、UAC の昇格確認画面
(および、必要であれば管理者パスワードの入力)を求めたい場合には、
Verb = "runas" を指定した上で、自分自身を Process.Start しなおします。
https://dobon.net/vb/dotnet/system/asadmin.html
https://dobon.net/vb/dotnet/system/displayshieldicon.html


管理者モードで再実行する場合には、独自のコマンドライン引数を付与するようにし、
起動時にそのパラメーターが付与された時には、昇格後に行いたい処理
(今回はレジストリの変更作業)だけを行い、即時終了という
動作にすれば良いかと思います。


単一インスタンスのアプリケーション設定にしている場合は、
追加の対処が必要になるかも知れません。
https://dobon.net/vb/dotnet/process/checkprevinstance.html#vb


> 一方で、市販のインストールプログラムの場合、
> 起動時には管理者権限で実行する必要がないのですが、

大抵のインストーラーでは、管理者権限が要求されるはずなのですけれどね。
XCOPY 配置なアプリとかは別として。

もし、requestedExecutionLevel 指定が無かったとしても、
それが 32bit アプリであり、かつ、ファイル名に
"install"、"setup"、"update" などのキーワードが含まれていた場合には、
自動的にインストーラーとして判定され、管理者権限への昇格が求められます。
引用返信 編集キー/
■96506 / inTopicNo.3)  Re[1]: 管理者権限で実行する方法
□投稿者/ KOZ (158回)-(2020/12/03(Thu) 12:10:40)
No96504 (ATTOK さん) に返信
> こういうダイアログが表示され、OKするとプログラムを再起動することなく
> インストールを続行することができるものがあるのですが、
> こういうものをVB.NETを作るにはどうしたら良いですか?

マニュフェストを組み込む方法はどうでしょう?

「アプリケーション実行時に常にAdministratorとして実行する」
https://www.ipentec.com/document/csharp-run-as-administrator-using-manifest-file
引用返信 編集キー/
■96507 / inTopicNo.4)  Re[2]: 管理者権限で実行する方法
□投稿者/ ぶなっぷ (263回)-(2020/12/03(Thu) 15:27:22)
秀丸エディタの「関連付け」設定画面みたいなやつでしょうか?
であれば、関連付け画面(秀丸エディタのセットアップ)は別exeとして起動してますよ。
タスクマネージャ開いた状態で起動してみると分かります(Hmsetup.exe)。

で、Hmsetup.exeには、ほかの皆さんが言われているようなマニフェストが組み込まれて
います。

引用返信 編集キー/
■96511 / inTopicNo.5)  Re[3]: 管理者権限で実行する方法
□投稿者/ ATTOK (2回)-(2020/12/04(Fri) 11:44:58)
魔界の仮面弁士さん

まさにこれが求めていたものでした。

どうもありがとうございました。

非常に助かりました。
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ