バッチの管理者実行とダブルクリックの違い
管理者実行周りの説明
Windowsに管理者権限を持ったユーザでログインし、GUIで操作を行います。そのとき、管理者権限が不要な操作は標準ユーザー権限で実行され、管理者権限が必要な操作は、ダイアログで確認が行われた上で、管理者権限で実行される仕様です。
これは、マルウェアなどがOSに変更を加えないようにするための仕様で、Windows Vista以降の標準になっています。
では、バッチの場合はどうなるのでしょうか?
バッチは無人で実行されるので、管理者権限が必要な操作が出てくるたびに確認ダイアログを表示しても、確認できる人がいません。そのため、管理者実行を行うかどうかをバッチ起動時に決めます。
になります。
バッチの管理者実行のメリット
以下に挙げるのは、バッチの管理者実行ではできるが、ダブルクリックではエラーになる操作です。
管理者(Administratorsグループ)のアクセス権で処理ができる
C:\Windows、C:\Program Filesなどの配下は、Administratorsグループはフルコントロールですが、Usersグループは読み取りと実行権限しか与えられていないケースが多いです。
したがって、C:\Program Files内の設定ファイルを上書きコピーしようとした場合などは、バッチを管理者で実行する必要があります。
レジストリ操作ができる
管理者実行だとレジストリ操作ができます。
例)最近使ったファイルの表示を有効化
reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer" /v "ShowRecent" /t "REG_DWORD" /d "1" /f
管理者コマンドが使える
その他、管理者しか実行できないコマンドが使えます。
例)windows updateで使うプロキシ設定をieからインポート
netsh winhttp import proxy source=ie
なお、管理者実行を強制させる方法については、以下の記事を参照ください。
管理者権限でbatを実行したい時にやッた事
バッチの管理者実行のデメリット
以下に挙げるのは、バッチの管理者実行ではできないが、ダブルクリックではできる操作です。回避策についても説明します。
カレントフォルダがバッチのフォルダにならない
管理者実行の場合、カレントフォルダがC:\Windows\System32になります。
ダブルクリックの場合、カレントフォルダはバッチのフォルダになります。
そのため、以下のtest.batを管理者実行すると正しく動作しません。ダブルクリックだと正しく動作します。
D:\test\test.bat
D:\test\test.ps1
test.bat
powershell -NoProfile -ExecutionPolicy Unrestricted .\test.ps1 > .\test.log
test.ps1
write-host "test"
管理者実行で動作できるようにするには、バッチにバッチのあるフォルダへの移動を追加します(ただし、jmeter.batなどダブルクリックで起動するしかないバッチもあります。)
test.bat
pushd %~dp0
powershell -NoProfile -ExecutionPolicy Unrestricted .\test.ps1 > .\test.log
popd
Author And Source
この問題について(バッチの管理者実行とダブルクリックの違い), 我々は、より多くの情報をここで見つけました https://qiita.com/boma/items/6430a081f23e4af9ca01著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .