次の方法で共有


Microsoft Information Protection SDK - ファイルの状態のフェッチ

MIP SDK File API では、mip::FileHandler::GetFileStatus() 静的関数を使用すると、開発者は、ファイル エンジン オブジェクトの作成、認証、さらには接続性を必要とせずに、ファイルの状態をフェッチできます。 必要なのは、ファイル名と mipContext の作成、およびファイルパスとストリームだけです。

サポートされているファイルの種類

  • OCP に基づく Office ファイル形式 (Office 2010 以降)
  • 従来の Office ファイル形式 (Office 2007)
  • PDF
  • 汎用PFILEサポート
  • Adobe XMPをサポートするファイル
  • 電子メール -。MSG 形式

GetFileStatus() 関数

mip::FileHandler::GetFileStatus() 開発者がファイルの状態をフェッチできるようにします。 完全なリストについては、API リファレンスを参照してください。

この記事では、次の方法について説明します。

  • mip::FileHandler::GetFileStatus() 静的関数
  • ファイルまたはコンテナーのラベル付けまたは保護の詳細を含む FileStatus オブジェクト
  • IsProtected() プロパティ
  • IsLabeled() プロパティ
  • ContainsProtectedObject() プロパティ

要件

特定のファイルを操作するための FileHandler を作成するには、以下が必要です。

  • mipContext
  • ファイル エンジンの作成は必要ありません

ファイルの状態をフェッチしています

mip::FileHandler::GetFileStatus() 静的関数を使用するには、 開発者がファイル パスまたはファイル ストリームおよび mipContext を渡し、この関数を実行する必要があります。 この関数を実行する場合、ファイル エンジンの作成、認証、またはインターネットへの接続は必要ありません。 この関数は、次の場合に特に役立ちます。

  • エンジンを作成する前に、暗号化解除シナリオ用のファイルの保護状態を取得する。 保護の状態を事前に把握しておくと、ファイルが既に保護されている場合に、開発者がエンジンを作成する際のオーバーヘッドをスキップできます
  • エンジンを作成してラベルを読み取ろうとする前に、既にラベルがある可能性のあるファイルの状態を取得する (時間の節約)
  • 添付ファイルがあり、MSG ファイル自体と共に解析または暗号化解除する必要がある可能性のある MSG ファイルの状態を取得する

GetFileStatus() は次のプロパティを持つ fileStatus オブジェクトを返します。

  • IsProtected() プロパティ - ブール値を返します - ファイルは保護/暗号化されています
  • IsLabeled() プロパティ - ブール値を返します。ファイルはラベル付けされています
  • ContainsProtectedObject() プロパティ - ブール値を返します。ファイル/コンテナー/メッセージには、保護されたオブジェクトが含まれています。

3 つのプロパティすべてを 1 つのファイルとして調査することをお勧めします。3 つのプロパティすべてに 0 を設定し、その間に順列を設定できます。 さらに、GetFileStatus() 関数は認証やエンジンの実行を必要としないため、IsProtected()IsLabeled()ContainsProtectedObject() メソッドは、ラベル付けや保護がファイルに存在するかどうかを反映します。 ラベル付けや保護がテナント内に存在するか、またはユーザーが使用できるかどうかは検証されません。 ラベルや保護の検証を行うには、認証およびエンジン作成プロセスを実行して検証する必要があります。

    if (options.count("getfilestatus")) {
      auto fileStatus = GetFileStatus(filePath, fileStream, mipContext);
      if (fileStatus->IsProtected()) {
        cout << "File is protected" << endl;
      } 
      if (fileStatus->IsLabeled()) {
        cout << "File is labeled" << endl;
      } 
      if (fileStatus->ContainsProtectedObjects()) {
        cout << "File contains protected objects" << endl;
      }    
      GetLabel(fileHandler);
      return EXIT_SUCCESS;
    }
    if (options.GetFileStatus) {
      var fileStatus = FileHandler.GetFileStatus(options.FilePath, mipContext);
      if (fileStatus.IsProtected()) {
        Console.WriteLine("The file is protected.");
      }
      if (fileStatus.IsLabeled()) {
        Console.WriteLine("The file is labeled.");
      }
      if (fileStatus.ContainsProtectedObjects()) {
        Console.WriteLine("The file contains protected objects.");
      }
      return true;
    }
 if (options.count("getfilestatus")) {
      auto fileStatus = GetFileStatus(filePath, fileStream, mipContext);
      if (fileStatus->IsProtected()) {
        cout << "File is protected" << endl;
      } 
      if (fileStatus->IsLabeled()) {
        cout << "File is labeled" << endl;
      } 
      if (fileStatus->ContainsProtectedObjects()) {
        cout << "File contains protected objects" << endl;
      }    
      GetLabel(fileHandler);
      return EXIT_SUCCESS;
    }