ユーザーフォルダーの中には、ショートカットファイルを示すオーバーレイアイコン(矢印マーク)を持ったいくつかのフォルダーが存在する。しかし、そのフォルダーをダブルクリック/タップしても、「アクセスが拒否されました」というメッセージが現れるだけ。今回は、ユーザーフォルダー下に並ぶ謎のフォルダーに関して説明する。

「Windows 8.1ミニTips 第17回」より、2014年4月9日にリリースされたWindows 8.1 Updateを適用した環境を対象としています。

「アクセスが拒否されました」と出るフォルダーの正体とは

本来「アクセスが拒否されました」は、そのファイル/フォルダーに対するアクセス権を持たない場合に現れるメッセージだ。Windows 8.1はすべてのオブジェクトに「所有者」や「アクセス許可」と称する権限設定を持ち、標準ユーザーではアクセスできないファイル/フォルダーが存在する。

プロパティダイアログの「セキュリティ」タブからは、そのファイル/フォルダーに対する「アクセス許可」の設定が可能だ

冒頭で述べたユーザーフォルダー下のApplication DataフォルダーやCookiesフォルダーは、ショートカットファイルを示すオーバーレイアイコンが存在し、そのまま参照できるように見える。だが、「アクセスが拒否されました」というメッセージが現れるにとどまるだけだ。

Application Dataフォルダーをダブルクリック/タップすると、アクセスできない旨を示すメッセージが現れる

これは互換性を維持するため、Windows Vistaから導入された仕組みである。その前にアクセス拒否されるフォルダーの実態を確認しておこう。コマンドプロンプトでユーザーフォルダーを開くと分かるように、これらは「ジャンクション」と称するソフトリンクの1種である。

「Shift」キーを押しながらフォルダー内の何もないところを右クリック/長押し。メニューの「コマンドプロンプトをここで開く」をクリック/タップする

プロンプトに「dir /a」と入力して「Enter」キーを押すと、Application Dataフォルダーなどがジャンクションであることが確認できる

アプリケーションの互換性維持のため設けられたジャンクション

ソフトリンクの種別に関しては次回以降に詳しく述べることにして、なぜこのような仕組みが組み込まれたのだろうか。まず、Windows XP以前とWindows Vista以降は、ユーザーデータやアプリケーションデータを格納するフォルダー構造が大きく異なる。

例えばユーザープロファイルのルートフォルダーは、以前なら「Documents and Settings」フォルダーだが、Windows 8.1は「Users」フォルダーだ。ユーザーごとのアプリケーションデータも、以前の「%USERPROFILE%\Application Data」フォルダーから、「%USERPROFILE%\AppData\Roaming」に変更された。

これらは、古いアプリケーションをWindows Vista以降でも正しく動作させるための対応策だ。例えば古いアプリケーションが「%USERPROFILE%\Application Data\App1\Data」ファイルを参照する場合、Windows 8.1はジャンクションを経由し、「%USERPROFILE%\AppData\Roaming\App1\Data」を参照している。つまり、リダイレクト処理を行うためにジャンクションを用意しているのだ。

では、なぜユーザー操作でアクセス拒否されてしまうのか。これらのジャンクションは、ユーザーグループすべてを指す「Everyone」のデータ読み取り拒否を、アクセス権の集合体であるACL(アクセス制御リスト)で設定している。そのためエクスプローラーによる操作が行えないのだ。

セキュリティの詳細設定ダイアログを開くと、あらかじめデータの読み取り拒否が有効になっている

このアクセス制御情報を削除すれば、Application Dataなどジャンクションをエクスプローラーで開くこともできる。確かにこの方が使い勝手はよいかもしれないが、ユーザーは「%USERPROFILE%\Application Data」フォルダーと「%APPDATA%」フォルダーという、同一ながらも2つのアクセス方法を手にしてしまうため、実際の操作はおすすめしない。

Everyoneに対する読み取り拒否設定を削除した状態。Application Dataフォルダーを「Ctrl」キーを押しながらダブルクリック/タップすると、そのままフォルダーを参照できる

それでもアクセス拒否設定を削除する場合は、対象となるジャンクションのプロパティダイアログを開き、「セキュリティ」タブの「詳細設定」ボタンをクリック/タップして、セキュリティの詳細設定ダイアログを開く。「アクセス許可」タブに並ぶ拒否エントリを選択した状態で「削除」ボタンをクリック/タップし、その後は「OK」ボタンを順にクリック/タップしてダイアログを閉じればよい。

阿久津良和(Cactus)