web-dev-qa-db-ja.com

ホストファイルウィンドウを置き換えるバッチ

次のホストファイルを置き換えるバッチスクリプトを作成しています。

%WinDir%\system32\drivers\etc\hosts

特定のパスにある backup に置き換えます。

バッチスクリプト(管理者権限で実行):

%homedrive%\test\hosts-replace.bat

コンテンツ:

attrib -s -h -r "%WinDir%\system32\drivers\etc\hosts"
copy /v /y "%HOMEDRIVE%\test\hosts" "%WinDir%\system32\drivers\etc\hosts"
attrib +s +h +r "%WinDir%\system32\drivers\etc\hosts"

問題は、これで十分かどうかわからないbleepingcomputer.com が実行を推奨しているためです交換前のこのコマンド(ただし、サイトではコマンドを元に戻す方法やその目的については説明されていません)。

echo,Y|cacls "%WinDir%\system32\drivers\etc\hosts" /G everyone:f

質問:hostsファイルをバッチスクリプトに置き換え、hostsファイルのアクセス許可をデフォルトにリセットする正しい方法は何ですか?

前もって感謝します

1
ajcg

権限の質問に答えるには、次の方法でeveryoneアクセスを取り消すことができます。

echo,Y|cacls "%WinDir%\system32\drivers\etc\hosts" /e /r everyone

これには、全員がグループであるため、すべての権限が取り消されるという副作用があります。そのため、権限を完全にリセットする必要があります。簡単な方法は、hostsファイルをコピーする代わりに削除することです。これにより、親フォルダーによって割り当てられたアクセス許可がリセットされます。 etcフォルダーのアクセス許可も変更されていない限り、次の問題に問題はありません。

del /f "%WinDir%\system32\drivers\etc\hosts"
copy /v "%HOMEDRIVE%\test\hosts" "%WinDir%\system32\drivers\etc\hosts"

copy /yのみを使用しても、ファイルが削除および再作成されないため、アクセス許可がデフォルトにリセットされません。

2
shawn

どれも必要ありません。管理者はhostsファイルを変更できます。attribまたはcaclsは必要ありません。

使用するだけ:

copy /v /y "%HOMEDRIVE%\test\hosts" "%WinDir%\system32\drivers\etc\hosts"
3
harrymc