web-dev-qa-db-ja.com

バッチファイルにregファイルを実行させる方法

次のコードがあります

@echo off
file.reg
pause

これは機能しますが、バッチファイルが昇格されると、ファイルが見つからないというエラーが表示されます。誰かが私が間違っていることを知っていますか?.

9
09stephenb
 @echo off
 rem  set __COMPAT_LAYER=RunAsInvoker  
 REGEDIT.EXE  /S  "%~dp0\file.reg"
 pause

これを試して

管理者権限を必要としないレジストリ内の場所にアクセスしている場合は、__COMPAT_LAYER環境変数を使用できます。regeditを使用する前にこれを実行するだけです。

set __COMPAT_LAYER=RunAsInvoker

スクリプトが管理者として実行されていない場合、UACポップアップが防止されます。

14
npocmaka

おそらく、昇格された特権でバッチを開始すると、開始ディレクトリが%windir%\system32cmd.exeが配置されているパス)に変更されます。

使用する:

"%~dp0\file.reg"

常にバッチファイルと同じディレクトリにあるfile.regを実行します。

レジストリでコンソール操作を実行できるため、REGコマンドの使用も検討してください(REG /?を確認してください)。

8
LS_ᴅᴇᴠ