通常は管理者権限を必要とする(UAC経由で)プログラムをそれらなしで実行するように強制できる方法はありますか? (すなわち:UACプロンプトなし、システム全体へのアクセスなし。)
追加:実行ファイル自体を変更することなく。
Jamesの答えにもかかわらず、私はそれがほとんどできるといういくつかの方法を見つけました:
trustInfo
エントリを削除することができます(または、マニフェスト全体、つまり外部のエントリを使用できます)。これにより、プログラムをUACなしで起動できます。残念ながら、これは実行可能ファイルを変更するので、内部チェックサムテストのために間もなく終了します。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プロンプトについて2回質問することがあります。
nonadmin.bat
に保存します。
cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %1"
これでプログラムをこれにドラッグアンドドロップして管理者なしで実行することができます。
このレジストリキーを変更するのと同じように、管理者権限は必要ありません。また、コンテキストメニューが乱雑になることもありません。
Vomの 回答に基づく
更新:名前にスペースが含まれているプログラムでも動作するはずです。
私はパーティーに遅すぎないことを願っていますが、私は同様の質問を探していました、そして答えを見ないでここで私は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.
これは私の場合はうまくいきました。皮肉なことに、昇格なしでプログラムを明示的に開始するには、昇格したコマンドプロンプトが必要です。図に行きます。 :)私はそれがあなたを助けることを願っています。
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
"Compatibility Shim" を追加して呼び出します。
管理(特権)が必要なセットアップ(インストール)exe
ファイルの場合、昇格されたアクセスなしで実行するためのトリックがあります。
ファイルの名前にsetup
やinstall
などの単語が含まれている場合、昇格されたアクセスを必要としない場合でも、昇格されたアクセスで強制的に実行されます。
.exeファイルにマニフェストが含まれている場合、これらの昇格のヒューリスティックは適用されません。
これはUAC(ユーザーアカウント制御)のドキュメントに記載されています。
インストーラー検出はセットアップファイルを検出します。これにより、ユーザーの知らないうちに同意なしでインストールが実行されるのを防ぎます。
インストーラー検出は以下にのみ適用されます。
32ビットの実行可能ファイル。
要求された実行レベル属性のないアプリケーション。
UACが有効な標準ユーザーとして実行されている対話型プロセス。
32ビットプロセスを作成する前に、次の属性をチェックして、それがインストーラーであるかどうかを判断します。
ファイル名には、「インストール」、「セットアップ」、「更新」などのキーワードが含まれます。
...
Andrewは、彼の質問に答えている間に、次のようにはうまくいかなかったと述べました。
実行可能ファイルを修正することによって、マニフェスト(またはマニフェスト全体)からtrustInfoエントリを削除して、UACなしでプログラムを起動できるようにすることができます。残念ながら、これは実行可能ファイルを変更するので、内部チェックサムテストのために間もなく終了します。
使用していたソフトウェアの外部.manifestファイルを変更して変更することができました
<ms_asmv2:requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
に
<ms_asmv2:requestedExecutionLevel level="asInvoker" uiAccess="false" />
私が使っていたソフトウェアは本当に管理者権限を必要としなかったので、私はUACまたは管理者パスワードなしで標準ユーザーアカウントでそれを実行することができました。ありがとうございます。