OneDriveバックアップ解除後にピクチャフォルダが削除できなくなった(ユーザーシェルフォルダの不整合)

パソコンのOneDriveのバックアップについてのトラブル相談は多いです。
先日、「OneDriveの『ピクチャ』フォルダが消せず、エクスプローラーのクイックアクセスにピン留めされたも『ピクチャ』OneDrive内に固定されて元に戻せない」という事例がありました。

OneDriveのバックアップ機能を間違えて有効化してしまいました
しかし、容量不足になるので解除しました。

元の状態に戻すために、OneDriveフォルダ内に残った「ピクチャ」フォルダの中身をすべてを、ローカルの「ピクチャ」フォルダに移動し、残ったOneDrive内の「ピクチャ」フォルダを削除しようとしたところ、エラーになりました。
ほかのプロセスが使用中」と表示されて、「ピクチャ」フォルダを削除できないのです。

それだけでなく、エクスプローラーのクイックアクセスにピン留めされた「ピクチャ」もOneDrive内を指したままです。ローカルの「ピクチャ」フォルダに戻したいのですが、削除も新しくピン留めもできません。
エクスプローラで「ピクチャ」フォルダにアクセスしにくくなり、不便です。

ちなみに、コマンドプロンプトのrmdirコマンドで強制的に削除しようとしたのですが、それも同じエラーになりました。そこで、もう一つ奇妙な現象がありました。エクスプローラーでは「ピクチャ」と表示されるフォルダが、コマンドプロンプトでは「画像」と表示されました。

OneDriveの「ピクチャ」フォルダが消せない?

「ピクチャ」フォルダなどの個人用データを入れるためのシステムフォルダには、特別な性質がたくさんあります。OneDriveのバックアップによって勝手に変更されて整合性が取れなくなると、うまく戻せないことがあります。

? トラブルの発見 OneDrive バックアップ有効化 容量不足 バックアップ解除 フォルダ削除不可 発生した問題 OneDrive内のフォルダが削除できない クイックアクセスから消せない 表示名が場所で違う エクスプローラー: 「ピクチャ」 コマンドプロンプト: 「画像」

フォルダの「プロパティ」から「場所」を戻す

システムフォルダの正しい場所は、フォルダの「プロパティ」からも変更できます。

エクスプローラーでユーザーフォルダを開き、正しい場所にある「ピクチャ」フォルダを右クリックして「プロパティ」を開きます。「場所」タブに「標準に戻す」というボタンがあるので、これをクリックします1

「ユーザーシェルフォルダ」という仕組み

なぜフォルダが削除できないのかを理解するには、Windowsの「ユーザーシェルフォルダ」という仕組みを知る必要があります。

ユーザーシェルフォルダという仕組み レジストリ Windows設定DB User Shell Folders フォルダ位置を管理 管理されるフォルダ デスクトップ ドキュメント ピクチャ ダウンロード システムフォルダとして特別に保護される

Windowsには、ドキュメントやピクチャといった特別なフォルダがあります。
これらは単なる普通のフォルダではなく、Windowsが「システムにとって重要なフォルダ」として特別に管理しています。

その管理情報は、「レジストリ」というWindowsの設定データベースに記録されています。
具体的には、
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
という場所に、各フォルダの実際の保存場所が登録されています2

例えば「My Pictures」という項目には、ピクチャフォルダの実際のパスが記録されています。
通常は「C:\Users\ユーザー名\Pictures」のような値です。

クイックアクセスにあるデフォルトフォルダ

削除できない理由はもう一つあります。
それは、エクスプローラーのクイックアクセスの仕組みです。

クイックアクセスの特別な扱い 手動ピン留め 管理場所 AutomaticDestinations バイナリファイル ✓ 削除可能 VS デフォルトフォルダ 管理場所 レジストリ User Shell Folders ✗ 削除不可 デフォルトフォルダはレジストリ管理のため消せない

エクスプローラーの「クイックアクセス」には、

  • システムが自動的に表示するデフォルトフォルダ
  • 手動でピン留めしたフォルダ

があります。

この2種類は、全く異なる方法で管理されています。

手動でピン留めしたフォルダの情報は、「%AppData%\Microsoft\Windows\Recent\AutomaticDestinations\f01b4d95cf55d32a.automaticDestinations-ms」というバイナリファイルに保存されています3。このファイルを削除すれば、手動ピン留めはすべて消えます。

しかし、デスクトップ、ダウンロード、ドキュメント、ピクチャといったデフォルトフォルダは、レジストリに設定されたUser Shell Foldersを指すようになっていて、通常の「ピン留めを外す」操作では消せません

フォルダ名が違って見える理由(desktop.ini)

ちなみに、エクスプローラとコマンドプロンプトで表示名が異なる理由は、Windowsには、実際のフォルダ名とは別に「表示用の名前」を設定する仕組みがあるからです。

フォルダ名が違って見える理由 desktop.ini 表示名を定義 エクスプローラー ピクチャ コマンドプロンプト 画像 実際のフォルダ名: 「画像」 / 表示名: 「ピクチャ」

この設定はそれぞれのフォルダ内にある「desktop.ini」という隠しファイルで管理されています4。 desktop.iniは、エクスプローラ上は表示オプションの「保護されたオペレーティングシステムファイルを表示しない」を無効にすると表示されます。

エクスプローラーはこのファイルを読み取って、一部のシステムフォルダの表示名を決めています。


[.ShellClassInfo]
LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21779
InfoTip=@%SystemRoot%\system32\shell32.dll,-12688
IconResource=%SystemRoot%\system32\imageres.dll,-113
IconFile=%SystemRoot%\system32\shell32.dll
IconIndex=-236

たとえば、 LocalizedResourceNameは、「shell32.dllの中のリソースID -21779」 を参照しています。
これは、言語設定に応じて自動的に切り替わり、日本語では「ピクチャ」に対応しています。
そのほか、フォルダーのアイコン(IconResource)やマウスをホバーしたときに表示される説明文(ツールチップ、InfoTip)もここで設定されています。IconFile と IconIndexは、古いWindows(Vista以前)との互換性のための設定で、現在はIconResourceが優先されます。

一方、コマンドプロンプトはこのような装飾を無視して、実際のフォルダ名をそのまま表示します。
つまり、OneDrive内の実際のフォルダ名は「画像」なのに、エクスプローラー上では「ピクチャ」と自動変換して表示されているということです。

OneDriveがレジストリを書き換えてしまった

OneDriveのバックアップ機能を有効にすると、フォルダ名が英語名から日本語名に勝手に変更されます5。例えば「Pictures」は「画像」に、「Documents」は「ドキュメント」になります。それだけでなく、OneDriveアプリはレジストリのユーザーシェルフォルダの値も勝手に書き換えます。

OneDriveがレジストリを書き換える バックアップ前 My Pictures C:\Users\ユーザー名\Pictures バックアップ有効化 バックアップ後 My Pictures C:\Users\ユーザー名\OneDrive\画像 すべてのアプリがOneDrive内を参照

バックアップ前の状態は次のようになっています。

My Pictures = C:\Users\ユーザー名\Pictures

バックアップを開始すると、OneDriveはこれを次のように変更します。

My Pictures = C:\Users\ユーザー名\OneDrive\画像

この変更により、Windowsは「ピクチャフォルダはOneDrive内にある」と認識するようになります。すべてのアプリケーションがスクリーンショットなどを保存する際、この新しい場所を参照するようになります。

バックアップ解除にある不具合

理論上、OneDriveのバックアップを停止すると、レジストリも元の状態に戻るはずです。しかし実際には、この処理が完全には実行されないことがあります6

バックアップを停止しても、レジストリがOneDriveフォルダを指したままになっているのです。Windowsは依然として「C:\Users\ユーザー名\OneDrive\画像」をシステムの正式なピクチャフォルダだと認識しています。

ここに問題の核心があります。Windowsがシステムフォルダとして認識しているフォルダは、簡単には削除できないように保護されているのです。

OneDriveバックアップ機能の注意点

この問題は、OneDriveのバックアップ機能の設計に起因しています。この機能は、ユーザーの重要なフォルダをクラウドと同期させる便利な機能ですが、Windowsの深い部分まで変更を加えます。

頻繁にOneDriveのフォルダバックアップに誘導するのに影響は甚大

バックアップを有効にする前と後では、システムの構造が大きく変わります。特にフォルダのパスが変更されることで、バッチファイルなどフルパスを使用するプログラムに影響が出る可能性があります。

また、バックアップを停止する際も、単に解除するだけでなく、ファイルを手動で移動させる必要があります。自動的には元の場所に戻らないのです。

レジストリエディタでの変更

レジストリエディタを直接使う方法もあります。
ただし、レジストリの直接編集は慎重に行う必要があります。修正を始める前に、念のために現状を確認しておいた方がよいです。

  • まず「C:\Users\ユーザー名\Pictures」というフォルダが存在するか確認します。
    次に「C:\Users\ユーザー名\OneDrive\画像」も存在するか確認します。
    そして、実際に使用しているファイルがどちらに保存されているかを把握しておきます。
  • OneDriveが起動している場合は、タスクトレイのOneDriveアイコンを右クリックして終了させておくことも重要です。OneDriveが動作していると、同期処理が干渉する可能性があります。
  • 最も安全なのは、PC全体を再起動してから作業することです。再起動により、中途半端に残っているプロセスがすべてクリアされます。

レジストリエディタで「HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders」を開き、「My Pictures」の値を正しいパスに修正します。
あるいは、PowerShellを使ったコマンドによる変更も可能です。

レジストリを正しく修正されると、OneDrive内のフォルダが通常のフォルダとして扱われるようになり、削除が可能になります。クイックアクセスの表示も正常に戻り、正しいローカルのピクチャフォルダが表示されます。アプリケーションも正しい場所にファイルを保存するようになります。スクリーンショットやダウンロードしたファイルが、意図した場所に保存されるようになります。

レジストリとシステムフォルダの関係と問題の構造

状況を整理すると、次のような悪循環が起きていました。

  • レジストリがOneDrive内のフォルダを「システムの正式なピクチャフォルダ」として記録している。
  • そのため、Windowsはこのフォルダを重要なシステムフォルダとして保護し、削除を許可しない。
  • 同時に、クイックアクセスにもデフォルトフォルダとして固定表示され消せない。

User Shell Foldersのレジストリ設定は、Windowsの基本的な動作を決める重要な設定です。
多くのアプリケーションは「ピクチャフォルダに保存」という指示を実行する際、このレジストリを参照して保存先を決定します。

例えば、スクリーンショット機能、ペイントソフト、カメラアプリなどは、すべてこのレジストリの値に従って動作します。設定が間違っていると、ファイルが意図しない場所に保存されたり、存在しないフォルダへのアクセスを試みてエラーになったりします。

バックアップソフトウェアも同様です。「ピクチャフォルダをバックアップする」という設定がある場合、レジストリを参照して対象フォルダを決定します。設定が中途半端だと、空のフォルダや存在しないフォルダをバックアップしようとする可能性があります。

中途半端な柔軟性と透過的統合の複雑さ(おせっかい)

この背景には、Windowsのシェルフォルダシステムの歴史があります。古いバージョンのWindowsでは、システムフォルダの場所は固定されていました。しかし、ユーザーが保存場所を自由に選べるように、レジストリで管理する方式に変更されました。

OneDriveのようなクラウドストレージサービスは、この柔軟性を利用して、ローカルフォルダとクラウドフォルダを「透過的に統合」しようとします。違いを意識せずに使えるようにする工夫なのですが、統合と解除の処理に不具合があって、システムが矛盾した状態に陥ってしまうことがあるのです。

  1. Windowsのシステムフォルダのプロパティには「場所」タブがあり、「標準に戻す」ボタンからフォルダの保存場所をデフォルトに戻すことができます。この方法なら、Windowsが自動的にレジストリも正しく書き換えてくれます。 – Windows 10の個人用フォルダーでよくあるトラブルと対処方法 – 4thsight.xyz
  2. User Shell Foldersレジストリキーは、Windowsの特殊フォルダ(デスクトップ、ドキュメント、ピクチャなど)の実際の保存場所を管理するためのレジストリキーです。 – Windows で個人用フォルダーの場所を変更する操作が失敗します – Microsoft サポート
  3. クイックアクセスのピン留め情報は、automaticDestinations-msというバイナリファイルで管理されています。このファイルを削除すると手動ピン留めは消えますが、デフォルトのシステムフォルダは消えません。 – クイックアクセスをリセットしたい|佐々木 健一
  4. desktop.iniファイルは、フォルダのアイコンや表示名をカスタマイズするためのWindowsの設定ファイルです。エクスプローラーはこのファイルを読み取ってフォルダの見た目を変更します。 – Microsoft OneDrive フォルダー アイコン不具合 修正 | AMK 情報館
  5. OneDriveのバックアップ機能を有効にすると、「Pictures」フォルダは「画像」に、「Documents」フォルダは「ドキュメント」に変更されます。これはOneDriveが自動的に行う仕様です。 – 要注意「Microsoft OneDrive でファイルをバックアップして保護する」について | AMK 情報館
  6. OneDriveのバックアップを停止すると、ファイルはOneDrive内に残り、ローカルフォルダは空になります。また、レジストリが完全に元に戻らず、中途半端な状態になることが報告されています。 – OneDrive を使用してフォルダーをバックアップする – Microsoft サポート