Microsoft Information Protection SDK – Načtení stavu souboru

V rozhraní FILE API mip::FileHandler::GetFileStatus() sady MIP umožňuje statická funkce vývojáři načíst stav souboru bez nutnosti vytvářet objekty souborového stroje, ověřování a dokonce připojení. Vše, co je požadováno, je název souboru a vytvoření mipContext spolu s cestou k souboru a datovým proudem.

Podporované typy souborů

  • Formáty souborů Office založené na OCP (Office 2010 a novější)
  • Starší formáty souborů Office (Office 2007)
  • soubor PDF
  • Obecná podpora PFILE
  • Soubory, které podporují Adobe XMP
  • E-mail – formát .MSG

GetFileStatus() – funkce

mip::FileHandler::GetFileStatus() umožňuje vývojáři načíst stav souboru. Úplný seznam najdete v referenčních informacích k rozhraní API.

V tomto článku jsou popsány následující metody:

  • mip::FileHandler::GetFileStatus() statická funkce
  • Objekt FileStatus obsahující popisky a podrobnosti o ochraně souboru nebo kontejneru
  • IsProtected() Vlastnost
  • IsLabeled() Vlastnost
  • ContainsProtectedObject() Vlastnost

Požadavky

Vytvoření FileHandler pro práci s konkrétním souborem vyžaduje:

  • A mipContext
  • Není vyžadováno vytvoření modulu pro soubory.

Načtení stavu souboru

Pokud chcete použít mip::FileHandler::GetFileStatus() statickou funkci, musí vývojář předat cestu k souboru nebo stream souborů a mipContext ke spuštění této funkce. Spuštění této funkce nevyžaduje vytvoření souborového stroje, ověřování ani připojení k internetu. Tato funkce je užitečná zejména pro:

  • Získání stavu ochrany souboru pro scénáře dešifrování před vytvořením modulu Znalost stavu ochrany předem může vývojáři umožnit vyhnout se režii spojené s vytvořením enginu, pokud je soubor již chráněn.
  • Zjištění stavu souboru, který už může mít štítek, před vytvořením modulu pro pokus o přečtení štítku (úspora času)
  • Získání stavu souboru MSG, který obsahuje přílohy a který může být potřeba analyzovat nebo dešifrovat spolu se samotným souborem MSG

GetFileStatus() vrací objekt fileStatus s následujícími vlastnostmi:

  • IsProtected() Vlastnost – vrátí logickou hodnotu – Soubor je chráněný nebo zašifrovaný.
  • IsLabeled() Vlastnost – vrací hodnotu typu bool – Soubor je označen
  • ContainsProtectedObject() Vlastnost – vrátí logickou hodnotu – Soubor, kontejner nebo zpráva obsahuje chráněný objekt.

Doporučuje se ověřovat všechny tři vlastnosti, protože soubor může mít žádnou až všechny tři vlastnosti i libovolnou kombinaci mezi tím. Navíc, protože funkce GetFileStatus() nevyžaduje ověření ani modul pro spuštění, metody IsProtected(), IsLabeled() a ContainsProtectedObject() indikují, zda je v souboru přítomno označení nebo ochrana. Neověřuje, jestli popisování a ochrana existuje v rámci tenanta nebo jestli ho uživatel může použít. Ověření štítku a/nebo ochrany by vyžadovalo projít procesem ověřování a vytvoření enginu, aby bylo možné provést validaci.

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