web-dev-qa-db-ja.com

OneDriveは、どのようにして古いバージョンのWindowsでフォルダーを機能させないのですか?

2017年秋以降のWindows 10の作成者向け更新プログラムでは、以前のバージョンのWindowsを使用してOneDriveフォルダーにアクセスできません。この奇妙さは 公式サイト で説明されています:

2017年秋のWindows 10用クリエーターアップデートをインストールし、OneDriveファイルを外部ドライブに同期している場合、Fall 2017クリエーターアップデートより古いオペレーティングシステムを実行しているコンピューターに外部ドライブを移動すると、OneDriveファイルを開けない場合がありますWindows 10の場合。

推奨される回避策は「Windows 10(またはそれ以降)向けの2017年秋のクリエーターアップデートを実行しているコンピューターを使用してコンテンツを開く」です。

以前にWindows 10を使用して作成したOneDriveフォルダーを使用してハードドライブを接続することにより、Windows 7で問題を再現できました。ここで、ディレクトリで何かを実行しようとすると(それを削除するか、またはcdをそこに入れます)、エラーが発生します。

The file cannot be accessed by the system.

FS chkdskによると、論理的なエラーはありません。また、私はフォルダの所有者であり、すべてのセキュリティ権限を持っています。ボリュームを使用しているプロセスはありません。関係なく、この(そして唯一の)フォルダーでは何もできませんブロッキングメカニズムとは何ですか?

58
enkryptor

NTFSには reparse points と呼ばれる機能があり、ファイルまたはディレクトリにオペレーティングシステムによる特別な処理のタグを付けることができます。これは、かなりの数の機能を実装するために使用されます。ボリュームマウントポイント(ドライブ文字の代わりにUnix風)。ジャンクションとシンボリックリンク。 GitVFSスパースディレクトリ。 WIMイメージ内に実際に格納されているファイル。テープまたは他の遅いストレージにオフロードされたファイル。等々。

OneDriveの最近のバージョン は、再解析ポイントを使用して「オンラインファイル」を実装しています。これらは、最初はプレースホルダーですが、オンデマンドでダウンロードされます。以前のバージョンはこれをシェルレベルで行いましたが、多くのプログラムでは機能しませんでした。再解析ポイントを使用して自動ダウンロードをコアOSに移動すると、ローカルファイルとほとんど区別がつかなくなります。

当然のことながら、古いOSを通じてパスにアクセスすると、新しいタグはエラーになります。 NTFSドライバーは、このようなアイテムをどうするかを認識しないため、アクセスを拒否します。たとえば、空のディレクトリですが、古いOSが書き込みを行おうとすると、すぐに被害が大きくなる可能性があります。

Cmdで fsutil reparsepoint を使用して、ファイルまたはディレクトリにアタッチされている再解析ポイントタグを確認できます。

72
user1686