通常は管理者権限を必要とするプログラムを(UAC経由で)強制的に管理者権限なしで実行させる方法はありますか?(例: UAC プロンプトがなく、システム全体にアクセスできない)
追加: 実行ファイル自体を変更せずに
ジェームスさんの回答にもかかわらず、私はそれがほぼ可能な方法をいくつか見つけました
- 実行ファイルを変更することで、マニフェスト(またはマニフェスト全体)から
trustInfo
エントリを削除することができ、UACなしでプログラムを起動できるようになります。残念ながら、これは実行ファイルを変更するので、内部チェックサムテストのためにすぐに終了してしまいます - プロセスエクスプローラを使用することで、制限付きユーザとして起動することができます。しかし、これは私が望む以上にかなり制限しているようです(保護モードのIEのように実行されるので、私の標準的な非昇格ユーザができるものよりもかなり少ないアクセスしかできません)
132 None 2010-08-04
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\forcerunasinvoker]
@="Run without privilege elevation"
[HKEY_CLASSES_ROOT\*\shell\forcerunasinvoker\command]
@="cmd /min /C \"set __COMPAT_LAYER=RUNASINVOKER && start \"\" \"%1\"\""
このテキストを<name_of_file>.reg
に保存し、Windowsレジストリに追加します。(これをダブルクリックするとトリックが実行されるはずです)
その後、管理者権限なしで実行したいアプリを右クリックして「権限昇格なしで実行」を選択します
いくつかのケースでは – プログラムの少量0.1%は、UACプロンプトについて二度尋ねることがあります
83 Vom 2012-07-18
nonadmin.bat
に保存します
cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %1"
これでプログラムをドラッグ&ドロップして、管理者なしで実行できるようになりました
レジストリキーの変更のように管理者権限を必要としません。また、コンテキストメニューを乱雑にすることもありません
Vomの回答に基づいています
更新: 名前にスペースがあるプログラムでも動作するようになりました
61 Hjulle 2015-10-02
遅ればせながら、似たような質問を探していて、ここで答えを見ずに、Windowsの組み込みのRunAs
コマンドは、管理者として実行すると、/trustlevel
スイッチでそれができることを知りました
RUNAS /trustlevel:<TrustLevel> program
/showtrustlevels displays the trust levels that can be used
as arguments to /trustlevel.
/trustlevel <Level> should be one of levels enumerated
in /showtrustlevels.
これは私の場合はうまくいきました。皮肉なことに、昇格せずに明示的にプログラムを起動すると、昇格したコマンドプロンプトが必要になります。図解してみましょう。)私はそれがあなたの助けになることを願っています
36 Mxx 2012-01-05
UACなしで常に実行したい特定のアプリケーションがある場合は、レジストリを使ってターゲットにすることができます(REGファイルにテキストを追加してレジストリにインポートする)
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
"C:\\example\\application.exe"="RunAsInvoker"
この回答とは異なり、このソリューションでは、代替のクリックやユーザーインタラクションへの変更は必要ありません
Microsoft はこのプロセスを RunAsInvoker
“互換性シム” の追加と呼んでいます
23 palswim 2016-09-09
管理者権限が必要なセットアップ(インストール)exe
ファイルであれば、昇格アクセスなしで実行するコツがあります
ファイル名に setup
や install
のような単語が含まれている場合、昇格アクセスが必要ない場合でも、windows は強制的に昇格アクセスで実行します
.exeファイルにマニフェストが含まれている場合,これらの昇降ヒューリスティックは適用されません.
たとえば、マニフェストでexeが昇格を必要としないことが示されている場合、ファイル名にこれらの単語を含めても昇格として実行されません
もう一つのキーワードは、Mgamerzがコメントで述べているように、patch
です
これは、UAC (User Account Control) ドキュメントに記載されています
インストーラの検出によりセットアップファイルが検出されるため、ユーザーの知識や同意なしにインストールが実行されるのを防ぐことができます
インストーラの検出のみが対象となります
32ビットの実行可能ファイル
要求された実行レベル属性を持たないアプリケーション
UAC を有効にした標準ユーザーとして実行されているインタラクティブなプロセス
32ビットプロセスが作成される前に、以下の属性をチェックしてインストーラであるかどうかを判断します
ファイル名には、”インストール”、”セットアップ”、”アップデート “などのキーワードが含まれています
…
5 Shayan 2019-01-25
今日はMSアプリケーションのカスタマイズツールキットを使ってこの問題を解決しました
私はテックリパブリックの記事の指示に従った
Basically:
1) MS こちら からツールキットを入手します
2) クリックして修正
3) RunAsInvoker オプションを選択します
4) 修正プログラムを右クリックし、「インストール」を選択します
3 user53639 2011-05-18
彼の質問の中でアンドリューは次のように述べている間はかなり動作しませんでした
実行ファイルを変更することで、マニフェスト(またはマニフェスト全体)からtrustInfoエントリを削除することができ、UACなしでプログラムを起動できるようになりました(外部のマニフェストを使用することもできます)。残念ながら、これは実行ファイルを変更するので、内部チェックサムテストのためにすぐに終了します
使用していたソフトウェアの外部の.manifestファイルを修正して変更することができました
<ms_asmv2:requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
to
<ms_asmv2:requestedExecutionLevel level="asInvoker" uiAccess="false" />
私が使用していたソフトウェアは管理者権限を必要としないことが判明したので、UACや管理者パスワードなしで標準ユーザーアカウントで実行することができました。ありがとうございます
2 Aurimas 2013-07-21
私はプログラムが含まれているフォルダのパーミッションを変更しに行くことによって、この問題を修正しました
私は、そのプログラムを実行する各ユーザを追加し、「フルコントロール」の権限を与えました。これで問題が解決したので、「管理者として実行」のチェックを外したままにしました
プログラムを実行するユーザーには、セキュリティ上の心配はありません
-3 Tim D 2012-04-20
いいえ、プログラムが UAC を必要とする場合、それはサンドボックスの外にあるものにアクセスしようとしています。そのプログラムは、昇格したアクセスがないと正しく実行されません
通知をなくしたいだけなら、UACを無効にすることができます
Windows VistaでUACを無効にします。スタートし、「ユーザー」と入力します。ユーザーアカウント」をクリックします。ポップアップされたウィンドウで、「ユーザーアカウント制御の設定」をクリックし、UACをオフにします
Windows 7でUACを無効にする:スタート、「ユーザー」と入力します。ユーザーアカウント制御の設定」をクリックします。選択バーを下までドラッグして “通知しない “にします
-6 James Watt 2010-08-04