stylesheet

2011-04-22

Windows7 保護されたシステムファイルの編集方法

Windows7の保護されたシステムファイルを編集するためのメモ。
システムファイルの編集時に必要になる、TrustedInstallerからファイルの所有者を横取りする方法やアクセス権限を追加する手順について記載。

システムファイルの編集手順

以下の手順は管理者権限のコマンドプロンプトから行う。

  1. takeownコマンドを使用してファイルの所有者を変更する。
    takeown /f c:\windows\notepad.exe
  2. Administratorsグループへフルアクセス権限を追加する。caclsコマンドはdeprecatedなのでかわりにicaclsコマンドを使用するとよい。
    icacls c:\windows\notepad.exe /grant Administrators:(F)
  3. winsxs内のファイルは変更したくないので、ハードリンクから実ファイルへと変更したい。一度リネームして元のファイル名へコピーすることにする。(ダサいので他の方法があるかも...)
    rename c:\windows\notepad.exe c:\windows\notepad.backup.exe
    copy c:\windows\notepad.backup.exe c:\windows\notepad.exe

以上で、システムファイル編集の準備が整った。リソースを変更するなりパッチを当てるなり好きにできる。

オリジナルのファイルへ戻したくなったらシステムファイルチェッカー(sfc)を使用する。ファイルを削除していてもちゃんと復元される。

sfc /scanfile=c:\windows\notepad.exe

無茶してWindowsが起動すらしなくなった場合は、とりあえずセーフモードのcommand prompt onlyで試す。それでもだめならWindowsのDVDからブートして修復する。
それでもだめなら...。素直にバックアップしとこう。

Windows7のシステムファイル保護について

Windows7のシステムファイル保護は、Vistaから変わっていない。
ハードリンクやACLで実現しているのでいろいろな方法で状況を把握しやすく、XPの頃のものと比べて扱いやすくなっていると思う。

  • 保護対象のシステムファイルはTrustedInstallerという特権ユーザーが所有しており、Administratorsグループでさえ書き込み権限を持たない状態になっている。
  • system32内のシステムファイルはハードリンクであり、%systemroot%\winsxsディレクトリ内にも同じ実体を指すハードリンクが存在する。 system32内のハードリンクを削除しても実体が削除されるわけではないので容易に修復できる。