バッチファイルの実行環境をチェックする

ALL
スポンサーリンク

バッチファイルがどのような環境で実行されているかチェックする方法です。
「管理者として実行されているかのチェック」と「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 | フリーエンジニア開発雑記

コメント