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

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

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

Re[9]: 提供するsetup.exeを常に管理者権限で実行したい


(過去ログ 171 を表示中)

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

■98437 / inTopicNo.1)  提供するsetup.exeを常に管理者権限で実行したい
  
□投稿者/ Issa (2回)-(2021/11/16(Tue) 10:48:39)

分類:[.NET 全般] 

VS2013のセットアッププロジェクトでインストーラーを作成しています。
これを実行すると、主に以下のようなことを行います。
・インストール先(デフォルトはProgram Files配下の指定フォルダ)にソフト関連のファイルを配置
・HKEY_LOCAL_MACHINE\SOFTWARE配下の対象ソフトのレジストリに必要情報を書込

通常であれば、このインストーラーを実行すると、途中でUAC画面が出て、
然るべき対応(管理者実行時は可否を選択、管理者でなければ管理者情報を入力)によって
インストールが完了します。

ただ、ごく一部の環境では、このインストーラーの実行に失敗してしまうとのことです。
(UAC画面は出たり出なかったら?出ても失敗するらしい)
その代わり、このインストーラーを右クリックメニューの「管理者として実行」で起動すると
インストールに成功するとのことです。

そもそも、このインストーラーには管理者権限が必要なので、常に管理者権限で実行させたいのですが、
セットアッププロジェクト側でそのような設定は可能でしょうか?
セットアッププロジェクトで作成されるのはexeとmsiですが、exeだけでも常に管理者権限で実行させたいです。
(exeのアイコンに盾マークが付いた状態、でしょうか)

よろしくお願いします。

引用返信 編集キー/
■98438 / inTopicNo.2)  Re[1]: 提供するsetup.exeを常に管理者権限で実行したい
□投稿者/ ぶなっぷ (280回)-(2021/11/16(Tue) 11:19:37)
通常、セットアップであれば、何もしなくても盾マーク付きになりそうなものですが...
どうにも駄目なら、以下の方法はどうでしょうか?

https://dobon.net/vb/dotnet/system/asadmin.html
「マニフェストファイルを使用して、起動時に自動で管理者に昇格させるようにする」
の 「Visual Studioの機能を使用しない方法」
になります。
引用返信 編集キー/
■98439 / inTopicNo.3)  Re[2]: 提供するsetup.exeを常に管理者権限で実行したい
□投稿者/ Issa (3回)-(2021/11/16(Tue) 12:58:22)

> https://dobon.net/vb/dotnet/system/asadmin.html
> 「マニフェストファイルを使用して、起動時に自動で管理者に昇格させるようにする」
> の 「Visual Studioの機能を使用しない方法」
> になります。

ありがとうございます。
とりあえず、setup.exe.manifestというものを作成し、
setup.exeの所に置いてからsetup.exeを実行しましたが、
これがない時と特に変わりなく、setup.exe.manifestが効いているのか判りません。
「管理者として実行」だと、setup.exeの画面が出る前にUAC画面が出て来ますが、
マニフェストファイルを配置した時も、UAC画面の出るタイミングは従来と同じでした。

セットアッププロジェクトで、setup.exeにマニフェストファイルを埋め込むことは出来るのでしょうか?
引用返信 編集キー/
■98440 / inTopicNo.4)  Re[3]: 提供するsetup.exeを常に管理者権限で実行したい
□投稿者/ とっちゃん (747回)-(2021/11/16(Tue) 13:10:33)
No98439 (Issa さん) に返信
>
> セットアッププロジェクトで、setup.exeにマニフェストファイルを埋め込むことは出来るのでしょうか?

すでに、manifest が埋まってると思うので(手元にないので詳細不明)、リソースエディタで既存のマニフェストを抽出し
それにぶなっぷさんの提示してくれた requireAdministrator の分を追加すればいけるのかな?という気がします。

リソースエディタは、Visual Studio のファイル開くからsetup.exeを指定して開くことで起動します(ツリー画面が出る)。
引用返信 編集キー/
■98445 / inTopicNo.5)  Re[4]: 提供するsetup.exeを常に管理者権限で実行したい
□投稿者/ Issa (4回)-(2021/11/17(Wed) 09:59:24)

> すでに、manifest が埋まってると思うので(手元にないので詳細不明)、リソースエディタで既存のマニフェストを抽出し
> それにぶなっぷさんの提示してくれた requireAdministrator の分を追加すればいけるのかな?という気がします。
>
> リソースエディタは、Visual Studio のファイル開くからsetup.exeを指定して開くことで起動します(ツリー画面が出る)。

目的は達成できました。ありがとうございました。

リソースエディターでmanifestの内容を確認したところ、
<trustInfo><security><requestedPrivileges>タグの配下に
<requestedExecutionLevel level="asInvoker" uiAccess="false"/>というタグがすでにありました。
このタグのlevel属性を"asInvoker" から"requireAdministrator"に変更して保存したところ、
setup.exeのアイコンに盾マークが表示され、setup.exe起動時すぐにUACが表示されるようになりました。

ただ、ソフトのバージョンアップの度にsetup.exeをリソースエディターで編集、っていうのも面倒な気がします。
上記設定はセットアッププロジェクトでは設定できないんですかねぇ?

引用返信 編集キー/
■98446 / inTopicNo.6)  Re[5]: 提供するsetup.exeを常に管理者権限で実行したい
□投稿者/ KOZ (169回)-(2021/11/17(Wed) 10:34:11)
No98445 (Issa さん) に返信
> ただ、ソフトのバージョンアップの度にsetup.exeをリソースエディターで編集、っていうのも面倒な気がします。
> 上記設定はセットアッププロジェクトでは設定できないんですかねぇ?

VS2010 ですが、stackoverflow に .vdproj を編集する方法と、起動条件を追加する方法が紹介されています。
試してはいませんが・・・

「VS2010 Setup Project - Run As Administrator」
https://stackoverflow.com/questions/11496746/vs2010-setup-project-run-as-administrator

引用返信 編集キー/
■98449 / inTopicNo.7)  Re[6]: 提供するsetup.exeを常に管理者権限で実行したい
□投稿者/ Issa (5回)-(2021/11/17(Wed) 14:14:14)
2021/11/17(Wed) 14:55:33 編集(投稿者)

※以下「前者」「後者」の定義を追加しました。

> VS2010 ですが、stackoverflow に .vdproj を編集する方法と、起動条件を追加する方法が紹介されています。
> 試してはいませんが・・・
>
> 「VS2010 Setup Project - Run As Administrator」
> https://stackoverflow.com/questions/11496746/vs2010-setup-project-run-as-administrator
>

ありがとうございます。
直接.vdprojの内容を書き換える方法でも、起動時にUAC表示ができました。
実際には、

"MsiBootstrapper"
{
"LangId" = "3:1041"
"RequiresElevation" = "11:FALSE"
}

の"11:FALSE"の部分を"11:TRUE"に変更して、セットアッププロジェクトをビルドしました。

ところで、前者・後者のいずれの方法でもUACを表示出来ましたが、
それぞれsetup.exeのアイコンやUAC画面の表示内容が異なります。

前者(setup.exe内のmanifestの内容をリソースエディターで編集)
 setup.exeのアイコン:盾マークあり
 UAC画面:黄色の背景に「この不明な発行元のアプリがデバイスに変更を加えることを許可しますか?」

後者(セットアッププロジェクトの.vdprojの内容をテキストエディター等で編集)
 setup.exeのアイコンに盾マークなし
 UAC画面:水色の背景に「このアプリがデバイスに変更を加えることを許可しますか?」

この違いは何でしょうか?
あまり気にしなくても良いのであればそれでいいのですが、
後学のために知りたいなと思いました。
引用返信 編集キー/
■98450 / inTopicNo.8)  Re[6]: 提供するsetup.exeを常に管理者権限で実行したい
□投稿者/ ぶなっぷ (281回)-(2021/11/17(Wed) 14:20:44)
セットアッププロジェクトはVisualStudioのバージョンによって違っていて、
私は2019環境しかないので、以下、見当はずれな回答かもしれません。

このようなセットアッププロジェクトだとして、
 https://knkomko.hatenablog.com/entry/2019/09/15/033608

ビルドして出来上がるはずの、マニフェストを直接編集する方法は、私が
調査した限りでは見つかりませんでした。

で、別案ですが、mt.exeを使用して、自作manifestを組み込む方法はどうでしょう?
  https://docs.microsoft.com/ja-jp/cpp/build/how-to-embed-a-manifest-inside-a-c-cpp-application?view=msvc-170

このコマンドをセットアッププロジェクトのPostBuildEventに設定するわけです。

引用返信 編集キー/
■98453 / inTopicNo.9)  Re[7]: 提供するsetup.exeを常に管理者権限で実行したい
□投稿者/ KOZ (170回)-(2021/11/17(Wed) 15:10:07)
No98449 (Issa さん) に返信
> 前者(setup.exe内のmanifestの内容をリソースエディターで編集)
>  setup.exeのアイコン:盾マークあり
>  UAC画面:黄色の背景に「この不明な発行元のアプリがデバイスに変更を加えることを許可しますか?」
>
> 後者(セットアッププロジェクトの.vdprojの内容をテキストエディター等で編集)
>  setup.exeのアイコンに盾マークなし
>  UAC画面:水色の背景に「このアプリがデバイスに変更を加えることを許可しますか?」
>
> この違いは何でしょうか?
> あまり気にしなくても良いのであればそれでいいのですが、
> 後学のために知りたいなと思いました。

前者は、setup.exe そのものが管理者権限を要求しています。
先のスレッドを見ると、後者は、setup.exe が起動する MSI インストーラを昇格しようとしているっぽいです。

引用返信 編集キー/
■98454 / inTopicNo.10)  Re[7]: 提供するsetup.exeを常に管理者権限で実行したい
□投稿者/ Issa (6回)-(2021/11/17(Wed) 15:15:30)

> で、別案ですが、mt.exeを使用して、自作manifestを組み込む方法はどうでしょう?
> https://docs.microsoft.com/ja-jp/cpp/build/how-to-embed-a-manifest-inside-a-c-cpp-application?view=msvc-170
>
> このコマンドをセットアッププロジェクトのPostBuildEventに設定するわけです。

ありがとうございます。
これも後で試してみようと思います。
元々あったmanifestが自作manifestに置き換わるのか、差分の追加となるのかは試してみようと思います。
ただし、今の所、直接.vdprojの内容を書き換える方法が一番楽なように思いました。
引用返信 編集キー/
■98455 / inTopicNo.11)  Re[8]: 提供するsetup.exeを常に管理者権限で実行したい
□投稿者/ とっちゃん (748回)-(2021/11/17(Wed) 15:19:21)
No98449 (Issa さん) に返信

> ところで、前者・後者のいずれの方法でもUACを表示出来ましたが、
> それぞれsetup.exeのアイコンやUAC画面の表示内容が異なります。
>
> 前者
>  setup.exeのアイコン:盾マークあり
>  UAC画面:黄色の背景に「この不明な発行元のアプリがデバイスに変更を加えることを許可しますか?」
>
> 後者
>  setup.exeのアイコンに盾マークなし
>  UAC画面:水色の背景に「このアプリがデバイスに変更を加えることを許可しますか?」
>
> この違いは何でしょうか?
> あまり気にしなくても良いのであればそれでいいのですが、
> 後学のために知りたいなと思いました。

水色の背景は、署名済みアプリですね。
手動修正の後、別途署名付け作業を行えば、水色になります。

水色の画面で詳細を出すと証明書の詳細などが表示できるのでもう少し詳しいことがわかると思います。


黄色のほうは、自分で修正した後に署名していないと思います。
その場合署名がないので、黄色になります。


確認ですが、盾マークなしの場合でも起動時に昇格画面が出ていますか?
KOZさんも書いていますが、起動後、途中で昇格する(盾マークがついたインストールボタン)なら
事前昇格ではありません。形的には今までと同じになります。

もしかしたら、MSIEXEC を昇格実行しようとしているのかもしれません。
昇格画面で詳細を見るとどのプログラムを昇格実行しようとしているかなどが確認できると思います。
そこで、自分の用意した setup.exe かどうかを確認してみるのが良いと思います。

引用返信 編集キー/
■98456 / inTopicNo.12)  Re[8]: 提供するsetup.exeを常に管理者権限で実行したい
□投稿者/ Issa (7回)-(2021/11/17(Wed) 15:26:55)
2021/11/17(Wed) 15:27:19 編集(投稿者)

> 前者は、setup.exe そのものが管理者権限を要求しています。
> 先のスレッドを見ると、後者は、setup.exe が起動する MSI インストーラを昇格しようとしているっぽいです。
>

ありがとうございます。
後者の件、英語の部分をナナメ読みしていました。
(ナナメ読みは英語ができる人しかやっちゃダメですね。)
確かに、MSI インストーラを昇格しようとしているっぽいですね。

一応、こちらの問題は解決済みとさせて頂きます。
皆様、お付き合いいただきまして誠にありがとうございました。
ただし、何か新たな情報があれば、どうぞ書き込みお願い致します。

梅里
解決済み
引用返信 編集キー/
■98457 / inTopicNo.13)  Re[9]: 提供するsetup.exeを常に管理者権限で実行したい
□投稿者/ Issa (8回)-(2021/11/17(Wed) 15:37:52)

>
> もしかしたら、MSIEXEC を昇格実行しようとしているのかもしれません。

ありがとうございます。
後者のUAC画面をよく見ると、UACの対象ソフト名は「Windows Installer」でした。
(ここもナナメ読みでした。スミマセン。。。)
なので、No98453でKOZさまご指摘の通り、MSI インストーラを昇格させているようです。
ちなみに、最初に上記UAC画面が出ると、それ以降はUAC画面は出て来ません。

一応、こちらの問題は解決済みとさせて頂きます。
皆様、お付き合いいただきまして誠にありがとうございました。
ただし、何か新たな情報があれば、どうぞ書き込みお願い致します。

梅里
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -