バッチファイルがどのような環境で実行されているかチェックする方法です。
「管理者として実行されているかのチェック」と「32bitOSか 64bitOSかを判別する」の2つです。
管理者として実行されているかのチェック
サンプル
for /f "tokens=3 delims=\ " %%i in ('whoami /groups^|find "Mandatory"') do set LEVEL=%%i if NOT "%LEVEL%"=="High" ( echo エラー:管理者として実行して下さい pause > NUL exit ) echo OK-管理者として実行中 pause
32bitOSか 64bitOSかを判別する
環境変数で判別する場合
32bitOS、64bitOS、64bitOS上の32bit環境(WOW64)かを区別します。
サンプル
if "%PROCESSOR_ARCHITECTURE%" == "x86" ( if "%PROCESSOR_ARCHITEW6432%" == "AMD64" ( echo 32bit(WOW64) ) else ( echo 32bit ) ) else ( echo 64bit ) pause
レジストリで判別する場合
32bitOS か 64bitOS かを区別します。
サンプル
set REGKEY=HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment set REGVALUE=PROCESSOR_ARCHITECTURE set PA= rem reg query "%REGKEY%" /v %REGVALUE% for /F "usebackq tokens=1,2,*" %%I in (`reg query "%REGKEY%" /v %REGVALUE% 2^>nul`) do if "%%I"=="%REGVALUE%" set PA=%%K if "%PA%"=="x86" ( echo 32bit ) else if "%PA%"=="AMD64" ( echo 64bit ) pause
以上、バッチファイルがどのような環境で実行されているかチェックする方法でした。
ここで紹介した方法は以下の記事のバッチファイルでも使用しています。
Windows で bash や sshサーバを利用する パソコン鳥のブログ
Windows用Xサーバ Cygwin/X パソコン鳥のブログ
参考
バッチファイルで、「管理者として実行」されているか?「整合性レベル:低」か?を判定する。(その2): Windows Script Programming
環境変数を使ってプロセスが 64bit か 32bit か判別する : もやもやプログラミング
PROCESSOR_ARCHITECTURE | フリーエンジニア開発雑記
コメント