次のコードがあります
@echo off
file.reg
pause
これは機能しますが、バッチファイルが昇格されると、ファイルが見つからないというエラーが表示されます。誰かが私が間違っていることを知っていますか?.
@echo off
rem set __COMPAT_LAYER=RunAsInvoker
REGEDIT.EXE /S "%~dp0\file.reg"
pause
これを試して
管理者権限を必要としないレジストリ内の場所にアクセスしている場合は、__COMPAT_LAYER
環境変数を使用できます。regeditを使用する前にこれを実行するだけです。
set __COMPAT_LAYER=RunAsInvoker
スクリプトが管理者として実行されていない場合、UACポップアップが防止されます。
おそらく、昇格された特権でバッチを開始すると、開始ディレクトリが%windir%\system32
(cmd.exe
が配置されているパス)に変更されます。
使用する:
"%~dp0\file.reg"
常にバッチファイルと同じディレクトリにあるfile.reg
を実行します。
レジストリでコンソール操作を実行できるため、REG
コマンドの使用も検討してください(REG /?
を確認してください)。