Kit de développement logiciel (SDK) Microsoft Information Protection - Récupération du statut d’un fichier

Dans l’API File du SDK MIP, la fonction statique mip::FileHandler::GetFileStatus() permet au développeur d’extraire l’état d’un fichier sans avoir à créer un objet de moteur de fichier, l’authentification et même la connectivité. Tout ce qui est requis est le nom de fichier et la création de mipContext, ainsi qu’un chemin d’accès et un flux de fichier.

Types de fichiers pris en charge

  • Formats de fichiers Office basés sur OCP (Office 2010 et versions ultérieures)
  • Formats de fichiers Office hérités (Office 2007)
  • PDF
  • Support générique de PFILE
  • Fichiers qui prennent en charge Adobe XMP
  • Courriel - Format .MSG

Fonction GetFileStatus()

mip::FileHandler::GetFileStatus() permet au développeur d’extraire l’état d’un fichier. Pour obtenir la liste complète, consultez la référence de l’API.

Dans cet article, nous allons aborder les méthodes suivantes :

  • fonction statique mip::FileHandler::GetFileStatus()
  • Objet FileStatus contenant des détails d’étiquetage et ou de protection d’un fichier ou d’un conteneur
  • Propriété IsProtected()
  • Propriété IsLabeled()
  • Propriété ContainsProtectedObject()

Spécifications

La création d’un FileHandler pour travailler avec un fichier spécifique nécessite :

  • Un mipContext
  • Aucune création de moteur de fichier n’est requise

Extraction de l’état d’un fichier

Pour utiliser la fonction statique mip::FileHandler::GetFileStatus(), le développeur doit fournir un chemin d'accès de fichier ou un flux de fichier, ainsi que mipContext, pour exécuter cette fonction. L’exécution de cette fonction ne nécessite pas la création d’un moteur de fichier, d’une authentification ou d’une connexion à Internet. Cette fonction est particulièrement utile pour :

  • Obtention de l’état de protection d’un fichier pour les scénarios de déchiffrement avant de créer un moteur. Connaître l’état de protection à l’avance peut permettre au développeur d’ignorer le traitement de création d’un moteur si le fichier est déjà protégé
  • Obtention de l’état d’un fichier qui peut déjà avoir une étiquette avant de créer un moteur pour essayer de lire l’étiquette (économiseur de temps)
  • Obtention de l’état d’un fichier MSG qui contient des pièces jointes et qui peut avoir besoin d’être analysé ou déchiffré avec le fichier MSG lui-même

La méthode GetFileStatus() renvoie un objet fileStatus avec les propriétés suivantes :

  • Propriété IsProtected() - retourne un bool - Le fichier est protégé/chiffré
  • Propriété IsLabeled() - retourne un bool - Le fichier est étiqueté
  • Propriété ContainsProtectedObject() - retourne un bool - Le fichier/conteneur/message contient un objet protégé.

La recommandation est que les trois propriétés soient interrogées, car un fichier peut avoir zéro pour les trois propriétés et les permutations entre elles. En outre, étant donné que la fonction GetFileStatus() ne nécessite pas d’authentification ou un moteur pour s'exécuter, les méthodes IsProtected(), IsLabeled() et ContainsProtectedObject() reflètent si l’étiquetage ou la protection sont présents dans un fichier. Elle ne valide pas si l’étiquetage et/ou la protection existent au sein d’un client ou sont utilisables par un utilisateur. La validation de l’étiquette et/ou de la protection nécessiterait de passer par le processus d’authentification et de création du moteur pour valider.

    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;
    }