hostsファイルを管理者権限で開くコマンドが便利だったのでメモ

Webサイトを運営/構築している人なら、ローカル(LAN)環境でもテスト用のWebサーバーを用意していることが多いと思いますが、その際、hostsファイルの編集って必須ですよね?

1サイトしか構築する必要がなく、常にlocalhostでアクセスする、というなら別ですが、複数サイトを運営するとなると、テスト用のドメイン名を用意するのが普通かなと思います。仮にぜんぶ自分のPC内で完結させていても、

http://test1.localhost
http://test2.localhost
http://test3.localhost

みたいな。

hostsファイルの編集には管理者権限が必要

テスト用にわざわざDNSサーバー立ち上げるのも面倒くさいですし、うちもhostsファイルで済ませているのですが、notepadなどのテキストエディターでhostsファイルを直接開いても保存する際にエラーが発生します。

管理者権限が必要だよ、と。

なので、管理者モードで起動しなおして、またhostsを開いて…とやるのですが、これが面倒くさいったらない。

そこで以前「OS初期化前に作っておくと便利なバッチファイル」で紹介したように、hosts_copy.batというhostsファイルをコピーするだけのバッチファイルを

用意しています。

■バッチファイルの中身

copy hosts %SystemRoot%\System32\drivers\etc

ぼくはしょっちゅうPCを初期化するので、こうしたバッチファイルをUSBメモリに入れておき、PC初期化した後にはバッチファイルを右クリックして[管理者として実行]で上書きコピーしていました。

notepadを管理者権限で起動しつつhostsファイル開く方法があった

しかしあるとき、先程のバッチファイルをネットワークドライブ上から起動しようとして失敗。

そりゃそうです。ユーザー権限と管理者権限ではUACが異なるのでネットワークドライブを使いたいならバッチファイルを起動する前に管理者モードでコマンドプロンプトを起動して、ネットワークドライブを再マッピングしなければなりません。……………めんどくさ。

そんなことするくらいなら、notepad.exeのショートカットを作って、詳細設定から[管理者権限で実行する]のチェックを付けたほうが楽です。
(バッチファイルのプロパティでは管理者権限の設定はできないため)

ただなぁ… 自分ひとりなら良いのだけれど、同じ環境で働いている人に使ってもらうこともあって、そういうときにバッチファイルって楽なんですよね。「このバッチファイル実行すれば環境設定終わるから~」って言って簡単に渡せるじゃないですか。

ネットワークドライブ上にバッチファイルを置きつつも、管理者権限でhostsファイルを編集する方法はないものか。

そのまんまのキーワードでググったら、面白い方法がありましたw

■notepadを管理者権限で起動しつつhostsファイルを開くコマンド

powershell -Command "start notepad %SystemRoot%\System32\drivers\etc\hosts -verb runas"

へえ~~~。powershell経由なら管理者権限で実行できるんだねー。

もちろん、確認のダイアログは出ますが、それは全然構いません。

Windowsの下の~System32の下の~driversの~~~などとディレクトリを辿って開くのに比べたら全然らくちんですし。

……………って、これだと「このバッチファイル実行しといて~」では済まないので、最初の目的は達成していないのですが、普通はショートカットのプロパティから設定しなければならない管理者としての実行が、バッチファイルで出来ることを知って目から鱗だったので備忘録として投稿してみました。