このページの本文へ

前へ 1 2 3 4 次へ

Windows Info第147回

Windows 10「October 2018 Update」でファイル消失の原因になったKnown Foldersって何?

2018年11月18日 10時00分更新

文● 塩田紳二 編集● ASCII編集部

  • この記事をはてなブックマークに追加
  • 本文印刷

 「October 2018 Update(RS5)」こと、Windows 10 Ver.1809の配信が再開された。このアップデートの配信が停止になったのは、Known Foldersに関連してファイルが消失するという問題が起こったためだと言われている。では、Known Foldersとは何なのだろうか?

ユーザーフォルダー以下にあるミュージックなどはKnown Foldersの一種であり、プロパティに「場所」タブがある。ここで実際にファイルが記憶される場所を変更できる
場所を移動する際、旧フォルダーの中身を新フォルダーに移動することを勧められる。この際に移動せずに、旧フォルダーに貯め込み続けたデータがフォルダーごと消滅したようだ

Windows 95以前には決め打ちされていたシステムフォルダー

 Windowsには、一定の役目を果たすように標準で作られるフォルダーがある。たとえば、ユーザーフォルダーやその下にある「ドキュメント」や「ピクチャ」といったフォルダーだ。そのほかにも「Program Files」フォルダーやWindowsフォルダーなど、標準で用意されるフォルダーは少なくない。

 アプリケーションをインストールする場合、Windowsでは、標準のインストール先として「Program Folder」や「Program Folder(x86)」などが指定されている。

 また、一部のアプリケーションは、システム関連モジュールなどをc:\Windows\System32などに配置する。また、インストール時に、スタートメニューなどにショートカットを登録することある。こうした一連の処理では、フォルダーの位置を特定することが問題になる。Windowsが指定するこうしたフォルダーは「システムフォルダー」などと呼ばれることがある。

 Windows 95やNT 4.0以前では、こうした「システムフォルダー」は単純なフォルダーであり、移動させることは誤動作を引き起こすため、一般的には手をつけないでおくことになっていた。変更されることがないので、アプリケーションは直接パスを指定していた。

昔は環境変数によってシステムフォルダーの位置を定義

 しかし、Windows 95やNT 4.0になって、こうしたフォルダーをエクスプローラーが管理するようになり、アプリケーションはなんらか情報を得て、「システムフォルダー」の位置を特定しなければならなくなった。

 そのための仕組みを「CSIDL」(constant special item ID list)といい、個々のシステムフォルダーに番号を付け、APIにより実行時にパスを得るようにしたわけだ。

 また、同種の方法として、一部の「システムフォルダー」は、環境変数にパスが定義されていた。たとえば「windir」はWindowsフォルダーを、「USERPROFILE」はユーザーフォルダーを定義する環境変数だ。

 エクスプローラーからは、シェルショートカットを使うことで、システムフォルダーを絶対パスを指定することなくアクセスできる。たとえば、「shell:Profile」は、実行中のユーザーフォルダーを、「shell:Windows」は、Windowsフォルダーを表し、エクスプローラーのパス欄に入れると、該当フォルダーへ移動できる。

 こうした仕組みは用意されたが、実際にはシステムフォルダーの位置が動くことはあまりないため、相変わらず多くのアプリケーションは、絶対パスをハードコーティング(変更できない形でプログラムに埋め込むこと)しているものがあった。その結果、「システムフォルダー」を移動させていると動かなくなるケースがあった。

 このCSIDLは、Windows Vistaで「Known Folders」という仕組みに変更された。Vistaでは、より多くの「システムフォルダー」が定義され、「コンピューター」に代表される「仮想フォルダー」が多数導入された。また、アプリケーションからもKnown Foldersの変更などが可能になった。

前へ 1 2 3 4 次へ

この連載の記事

注目ニュース

ASCII倶楽部

最新記事

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン