Microsoft 信息保护 SDK - 提取文件的状态

在 MIP SDK 文件 API 中,静态函数允许开发人员提取文件的状态,而无需创建文件引擎对象、身份验证 mip::FileHandler::GetFileStatus() 甚至连接。 需要的就是文件名和 mipContext 的创建以及文件路径和流。

支持的文件类型

  • Office 2010 和更高版本的 OCP (Office文件格式)
  • 2007 Office 2007 (Office 旧版)
  • PDF
  • 泛型 PFILE 支持
  • 支持 Adobe XMP 的文件
  • 电子邮件 - 。MSG 格式

GetFileStatus () 函数

mip::FileHandler::GetFileStatus() 允许开发人员提取文件的状态。 有关完整列表,请参阅 API 参考

本文介绍以下方法:

  • mip::FileHandler::GetFileStatus() static 函数
  • FileStatus 对象,包含文件或容器的标签和保护详细信息
  • IsProtected() 属性
  • IsLabeled() 属性
  • ContainsProtectedObject() 属性

要求

创建 FileHandler 以使用特定文件需要:

  • A mipContext
  • 无需创建文件引擎

提取文件的状态

若要使用静态函数,开发人员需要传递文件路径或文件流和 mip::FileHandler::GetFileStatus() mipContext 来执行此函数。 执行此函数不需要创建文件引擎、身份验证或连接到 Internet。 此函数对于:

  • 在创建引擎之前,获取用于解密方案的文件的保护状态。 如果提前知道保护状态,开发人员可以跳过创建引擎的开销(如果文件已受保护)
  • 在创建引擎之前获取可能已有标签的文件的状态,以尝试读取标签 (节省时间)
  • 获取包含附件且可能需要连同 MSG 文件本身一起分析或解密的 MSG 文件的状态

GetFileStatus()返回具有以下 fileStatus 属性的对象:

  • IsProtected() 属性 - 返回布尔值 - 文件受保护/已加密
  • IsLabeled() 属性 - 返回布尔值 - 文件已标记
  • ContainsProtectedObject() 属性 - 返回布尔值 - File/Container/Message 包含受保护的对象。

建议查询所有三个属性,因为文件之间的所有三个属性和排列可以有零。 此外,由于 函数不需要身份验证或引擎来执行,因此 、 和 方法会反映文件中是否存在标记 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;
    }