記事検索

検索ワードを入力してください。
Sky Tech Blog
Windowsの​OneDriveの​ファイルの​状態

Windowsの​OneDriveの​ファイルの​状態

WindowsのOneDriveのファイルの状態についての説明です。WindowsのOneDriveのファイルには「クラウドのみ」「ローカルにある」「常にローカル」の3つがあり、エクスプローラー上で異なるアイコンが表示されます。

WindowsのOneDriveのファイルには、以下の3つの状態があります。

  • 今はクラウド上にしかないもの
  • 今はローカルにあるもの
  • 常にローカルにあるもの

エクスプローラー上の[状態]カラムには、それぞれの状態で異なったアイコンが表示されます。

ファイルを右クリックしてメニューから「空き容量を増やす」を行うと、の状態になります。

「今はクラウド」のファイルは、アプリケーションからアクセスを受けると自動的にダウンロードされ、開かれます。
プログラムからはCreateFileするだけです。特別な処理は要りません。

ただし、ファイルにアクセスするアプリケーションの状況によっては、ファイルをダウンロードできず、オープンエラーになる場合があります。

OneDriveの使用ユーザー権限とSYSTEM権限からのプロセスの違いを比べてみたところ、以下のようになりました。

  • ユーザーセッションに起動した、ユーザー権限のプロセスからアクセスすると、アクセスできる。(通常の操作)
  • ユーザーセッションに起動した、SYSTEM権限のプロセスからアクセスすると、アクセスできる。(通常の操作)
  • セッション0に起動した、ユーザー権限のプロセスからアクセスすると、ERROR_CLOUD_FILE_ACCESS_DENIED (395)。
  • セッション0に起動した、SYSTEM権限のプロセスからアクセスすると、ERROR_CLOUD_FILE_ACCESS_DENIED (395)。


基本的にセッション0からOneDriveのファイルを自動的にダウンロードすることはできないようです。

ネットワーク越しにOneDriveのファイルにアクセスすると、アクセスできましたが、該当ユーザーがログオフ状態の場合は、ERROR_CLOUD_FILE_PROVIDER_NOT_RUNNING(362)というエラーが返ります。「クラウド ファイル プロバイダーが実行されていません」という意味です。

クラウド ファイル プロバイダーというのは、実はユーザーセッションに起動している「OneDrive.exe」プロセスのことです。
ログオンしていないと、もちろんOneDrive.exeプロセスも起動していないのでエラーになるというわけです。
ログオンしていても、OneDrive.exeがアプリケーションエラーなどでクラッシュしていたり、プロセスを強制終了してしまうと、ローカルからの操作でも同じERROR_CLOUD_FILE_PROVIDER_NOT_RUNNING(362)エラーになります。

の状態のファイルには、
FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS (0x00400000)
という属性が付いています。

それぞれの状態のファイル属性を調べてみると、

「今はクラウド」
FILE_ATTRIBUTE_UNPINNED (0x00100000)
FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS (0x00400000)

「常にローカル」
FILE_ATTRIBUTE_PINNED (0x00080000)

「今はローカル」の状態では、上記のフラグのどれもついていませんでした。

ファイル属性ということは、コマンドプロンプトのattribコマンドとか、SetFileAttributes APIで簡単に状態を変えられるということです。

「今はクラウド」

attrib [ファイルパス] +U

「常にローカル」

attrib [ファイルパス] +P

「今はクラウド」

DWORD dwAttr = GetFileAttributes(pFileName);
dwAttr &= ~FILE_ATTRIBUTE_PINNED;
dwAttr |= FILE_ATTRIBUTE_UNPINNED;
SetFileAttributes(pFileName, dwAttr);

「常にローカル」

DWORD dwAttr = GetFileAttributes(pFileName);
dwAttr &= ~FILE_ATTRIBUTE_UNPINNED;
dwAttr |= FILE_ATTRIBUTE_PINNED;
SetFileAttributes(pFileName, dwAttr);

属性は変えられますが、OneDrive.exeが起動していないとダウンロードやアップロードは行われないところは同じです。


XFacebookLINE
キャリア採用募集中!

入社後にスキルアップを目指す若手の方も、ご自身の経験を幅広いフィールドで生かしたいベテランの方も、お一人おひとりの経験に応じたキャリア採用を行っています。

Sky株式会社のソフトウェア開発や製品、採用に関するお問い合わせについては、下記のリンクをご確認ください。
お問い合わせ
ホーム