Windows10用WinHlp32.exeインストールバッチファイル というものを見つけて、Windows10 で実行してうまく行ったので、バッチファイルを読んでみたら面白い処理があったので、環境変数を使わないパターンで整理してみました。
@echo off :check1 for /f "tokens=1 delims=," %%i in ('whoami /groups /FO CSV /NH') do ( if "%%~i"=="BUILTIN\Administrators" goto :check2 ) echo 管理者グループではありません goto :end :check2 for /f "tokens=1 delims=," %%i in ('whoami /groups /FO CSV /NH') do ( if "%%~i"=="Mandatory Label\High Mandatory Level" goto :admin ) echo 管理者権限で実行してください goto :end :admin echo 管理者権限で実行しています :end
/f はファイルを読み込んだりするスイッチですが、コマンドの実行結果も使えるので、ここでのコマンドは whoami です。 引数の /groups /FO CSV /NH は、実行中のユーザが属するグループの一覧を CSV 形式で タイトルヘッダー無しで表示という意味です。 "tokens=1 delims=," は、CSV 形式なので、カンマで分解して先頭の文字列を使うという意味で、結果が %%~i に入るので文字列としてチェックする為に " で挟んで右辺と比較しています。 二つの条件を両方満たしたら、管理者グルーブのユーザが管理者権限で実行している事になります。 管理者権限のチェックはそれほど重要ではありませんが、バッチファイルでどうしてもいろいろ分岐したい場合に使われるテクニックで、コマンドの結果で判断できるので、レジストリの内容を REG QUERY で取り出して利用も可能です。 ※ 管理者権限でないと、High Mandatory Level では無く、Medium Mandatory Level でした。
|
【コマンド : バッチファイルの最新記事】
- バッチファイル内で、実行中のファイルと引数のファイルを扱う特殊変数
- バッチファイル(コマンドプロンプト)で使用できる特殊な3つの環境変数
- デスクトップのアイコン表示を切り替えるバッチファイル
- バッチファイルで、二つのファイルが同じファイルかどうかチェックして if errorlevel で処理を分岐する
- バッチファイル内の Call コマンドによるサブルーチンの呼び出し( errorlevel を戻して if で判断する )
- あらかじめ指定しておいたフォルダの中を探して Excel のドキュメントを開くバッチファイル
- バッチファイル自身をフルパスで展開する変数 : %~f0
- バッチファイル : ファイル順のシャッフル
- コマンドプロンプト : 指定回数だけループ処理を行うバッチファイル
- SET /P : バッチファイルで入力した値を環境変数に設定して使用する
- バッチファイル : コマンドプロンプトの表示幅の変更
- バッチファイル : VS9.0のMicrosoft純正バッチ処理 : For /F : バッチファイルでレジストリの値を判断材料にする
- コマンドプロンプト : バッチファイルで使う for コマンドの変数展開のテスト( vtest.bat )
- バッチファイルで、FOR に渡すパラメータの妥当性チェックを行う
- バッチファイルで、ファイルの中の行を指定してその行の文字列を実行する