「アクセスが拒否されました」とエラーが出てファイルやフォルダへアクセスできない問題への対処

winFAQ - Windows を再インストール後、元からあるファイルにアクセスできません
OKWeb - フォルダの削除ができません ANo.8


Windows の再インストール後,個人のファイルやフォルダ(例えば,C:\Documents and Settings\ユーザ名 以下のフォルダ)のバックアップにアクセスしようとすると「アクセスが拒否されました」とエラーが出てアクセスできない問題への対処.

問題をぐぐると cacls.exe を使えばよいといった話がよく引っかかるが,これだけではうまくいかない.実際,ただ cacls.exe を使った場合,たとえ Administrator や「コンピュータの管理者」 (Administrators Group) に属するユーザから

C:\WINDOWS>cacls "G:\backup\c\Documents and Settings\rero\Application Data" /c /e /g rero:f

などとしても

 ACCESS_DENIED: G:\backup\c\Documents and Settings\rero\Application Data

と表示されてうまくいかない.


この問題を解決する手順は以下の通り.

  • まず,ファイルやフォルダのプロパティに「セキュリティ」タブが表示されるようにする.Windows XP Pro の場合,「フォルダオプション>表示>簡易ファイルの共有を使用する」のチェックを外す.ここまでで,ファイルのプロパティに「セキュリティ」タブが表示されるようになる.Windows XP Home の場合,セーフモードから Administrator でログインすればいいらしい(未確認).Windows 2000 の場合,最初から「セキュリティ」タブが表示されるので,この手順は不要.
  • アクセスが拒否されるフォルダ(あるいは,そのフォルダより上の階層のフォルダ)に対して,「プロパティ>セキュリティ>詳細設定>所有者>所有者の変更」で自分のユーザ名(もちろん,Administrators Group に属するもの)を選択.同時に,「サブコンテナとオブジェクトの所有者を置き換える」にチェックして,OK ボタンを押す.

ディレクトリ \??\G:\backup\c\Documents and Settings\rero\Application Data の内容を読み取るのに必要なアクセス許可がありません。ディレクトリのアクセス許可を変更して、フル コントロールで利用できるようにしますか?
 
[はい] をクリックすると、すべてのアクセス許可が変更されます。

というダイアログが出るので,「はい」を選ぶ.

  • いったんプロパティを閉じた後,「プロパティ>詳細設定>アクセス許可>子オブジェクトすべてのアクセス許可エントリを、ここに表示されているエントリで子オブジェクトに適用するもので置換する」にチェックして OK ボタンを押す.

すべての子オブジェクトに対して明示的に定義されたアクセス許可を削除して、その子オブジェクトに継承可能なアクセス許可を伝達できるようにします。Templates から伝達された継承可能なアクセス許可だけが有効になります。

続行しますか?

というダイアログが出るので,「はい」を選ぶ.

ここまでで,アクセスが拒否されていたフォルダの内部にアクセスできるようになる.最後の手順は,cacls.exe を用いて

C:\WINDOWS>cacls "G:\backup\c\Documents and Settings\rero\Application Data" /t /e /g rero:f

でも代替できるが,途中まで GUI で処理しておいて,最後だけコマンドラインから実行する必要もないだろう.