27

最近、システムが「管理者権限を付与しますか?」と尋ねることなく、アプリケーションの管理者権限を付与しようとしました。そして、私は完全に機能する方法を見つけました。

私が見つけた解決策

nonadmin.batという名前のバッチ ファイルを作成し、その中に以下のコードを記述しました。

cmd min C set __COMPAT_LAYER=RunAsInvoker && start "" %1

そして、その上にexeをドラッグすると、管理者権限が与えられます(それなしでは環境変数にアクセスできないようになる前でしたが、バットでファイルをドラッグした後は機能しました)。

質問

今私の質問は: -

  1. 「__COMPAT_LAYER」は実際には何を意味し、何をしますか?
  2. 管理者権限を再度要求するように、そのようなものを削除するにはどうすればよいですか?
  3. これによりシステムのセキュリティが低下しますか?
4

1 に答える 1

42

__COMPAT_LAYER とその使用方法
__COMPAT_LAYER は、実行可能ファイルを右クリックして [プロパティ] を選択し、[互換性] タブに移動すると調整できる設定である、互換性レイヤーを設定できるシステム環境変数です。

イムグル

知っているものに加えて、いくつかのオプションから選択できます。

  • 256Color - 256 色で実行
  • 640x480 - 640x480 の画面解像度で実行
  • DisableThemes - ビジュアル テーマを無効にします
  • Win95 - Windows 95 の互換モードでプログラムを実行します
  • Win98 - Windows 98/ME の互換モードでプログラムを実行します。
  • Win2000 - Windows 2000 の互換モードでプログラムを実行します
  • NT4SP5 - Windows NT 4.0 SP5 の互換モードでプログラムを実行します。

スペースで区切って複数のオプションを使用できます。set "__COMPAT_LAYER=Win98 640x480"

__COMPAT_LAYER 変数
の設定解除 これらの設定は、変数が存在する限り維持されます。変数が設定されたコマンド プロンプトが閉じられるか、変数がコマンドで手動で設定解除されると、変数は存在しなくなりますset __COMPAT_LAYER=

バッチ スクリプトを介して変数を設定しているため、ドラッグした実行可能ファイルが完了し、スクリプトが閉じられると、変数は自動的に設定解除されます。変数の設定は、選択した実行可能ファイルによって生成されるすべての子プロセスに保持されることに注意してください。

__COMPAT_LAYERを使用する場合のセキュリティ
__COMPAT_LAYER を RunAsInvoker に設定しても、管理者権限がない場合は実際には付与されません。UACポップアップが表示されないようにし、ユーザーが呼び出したとおりにプログラムを実行します。管理者権限を魔法のように取得するわけではないので、これを使用しても安全です。

変数をRunAsHighest (管理者権限がある場合のみ UAC をトリガーし、管理者権限がない場合は付与しない) または RunAsAdmin (常に UAC をトリガーする) に設定することもできます。

于 2016-06-17T12:21:04.300 に答える