Ochrana proti zápisu prezentací v C++

Úvod

Heslo pro ochranu proti zápisu omezuje úpravu prezentace, ale nešifruje její obsah. Uživatelé mohou načíst a zobrazit prezentaci chráněnou proti zápisu bez hesla. V závislosti na aplikaci mohou také upravovat obsah a uložit jej pod jiným názvem, takže ochrana proti zápisu by neměla být považována za mechanismus důvěrnosti.

Otevírací heslo slouží k jinému účelu: šifruje prezentaci a je vyžadováno pro načtení jejího obsahu. Pro šifrování prezentace nebo ověření otevíracího hesla viz Password-Protect Presentations.

Postupy v tomto článku platí pro prezentace PPT i PPTX. Příklady používají soubory PPTX; při ukládání do PPT použijte příponu .ppt a odpovídající formát uložení PPT.

Nastavení ochrany proti zápisu v prezentaci

Použijte IProtectionManager::SetWriteProtection k přiřazení hesla pro úpravu prezentace. Uložení prezentace zachová nastavení ochrany.

Následující příklad nastavuje ochranu proti zápisu v prezentaci PPTX:

#include <DOM/IProtectionManager.h>
#include <DOM/Presentation.h>
#include <Export/SaveFormat.h>

using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;

auto presentation = System::MakeObject<Presentation>(u"pres.pptx");

presentation->get_ProtectionManager()->SetWriteProtection(u"modify_password");
presentation->Save(u"write-protected-pres.pptx", SaveFormat::Pptx);

Načtení prezentace chráněné proti zápisu

Protože ochrana proti zápisu nešifruje obsah prezentace, pro načtení prezentace není vyžadováno žádné heslo. Heslo je relevantní pouze při ověřování oprávnění k úpravě chráněné prezentace.

#include <DOM/ISlideCollection.h>
#include <DOM/Presentation.h>
#include <system/console.h>

using namespace Aspose::Slides;
using namespace System;

auto presentation = MakeObject<Presentation>(u"write-protected-pres.pptx");

Console::WriteLine(u"Slide count: {0}", presentation->get_Slides()->get_Count());

Nezadejte heslo pro ochranu proti zápisu do LoadOptions::set_Password. Tato vlastnost přijímá otevírací heslo pro šifrovaný obsah. Pokud má prezentace oba typy ochrany, poskytněte otevírací heslo pro její načtení a heslo ochrany proti zápisu zpracujte samostatně.

Odstranění ochrany proti zápisu z prezentace

Použijte IProtectionManager::RemoveWriteProtection k odebrání omezení úprav a poté prezentaci uložte.

#include <DOM/IProtectionManager.h>
#include <DOM/Presentation.h>
#include <Export/SaveFormat.h>

using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;

auto presentation = System::MakeObject<Presentation>(u"write-protected-pres.pptx");

presentation->get_ProtectionManager()->RemoveWriteProtection();
presentation->Save(u"write-protection-removed.pptx", SaveFormat::Pptx);

Kontrola, zda je prezentace chráněna proti zápisu

Pro prozkoumání souboru bez vytvoření kompletní instance Presentation zavolejte IPresentationFactory::GetPresentationInfo a zkontrolujte IPresentationInfo::get_IsWriteProtected. Tato vlastnost používá NullableBool a vrací NullableBool::True, když je detekována ochrana proti zápisu.

#include <DOM/IPresentationInfo.h>
#include <DOM/NullableBool.h>
#include <DOM/PresentationFactory.h>
#include <system/console.h>

using namespace Aspose::Slides;
using namespace System;

auto presentationInfo = PresentationFactory::get_Instance()->GetPresentationInfo(u"write-protected-pres.pptx");

if (presentationInfo->get_IsWriteProtected() == NullableBool::True)
{
    Console::WriteLine(u"The presentation is write protected.");
}
else
{
    Console::WriteLine(u"Write protection was not detected.");
}

Přetížení pro stream metody IPresentationFactory::GetPresentationInfo poskytuje stejnou informaci pro prezentaci předanou jako stream.

Ověření hesla ochrany proti zápisu

Použijte IPresentationInfo::CheckWriteProtection k ověření hesla pro úpravy bez načtení kompletní prezentace. Nejprve zkontrolujte IPresentationInfo::get_IsWriteProtected, aby aplikace požadovala nebo ověřovala heslo pouze tehdy, když je ochrana proti zápisu přítomna.

#include <DOM/IPresentationInfo.h>
#include <DOM/NullableBool.h>
#include <DOM/PresentationFactory.h>
#include <system/console.h>

using namespace Aspose::Slides;
using namespace System;

auto presentationInfo = PresentationFactory::get_Instance()->GetPresentationInfo(u"write-protected-pres.pptx");

if (presentationInfo->get_IsWriteProtected() != NullableBool::True)
{
    Console::WriteLine(u"The presentation is not write protected.");
}
else if (presentationInfo->CheckWriteProtection(u"modify_password"))
{
    Console::WriteLine(u"The write-protection password is correct.");
}
else
{
    Console::WriteLine(u"The write-protection password is incorrect.");
}

IPresentationInfo::CheckWriteProtection ověřuje pouze heslo ochrany proti zápisu. Neověřuje otevírací heslo ani neurčuje, zda lze načíst šifrovaný obsah. Naopak IPresentationInfo::CheckPassword ověřuje pouze otevírací heslo. Pokud je již načtena kompletní prezentace, IProtectionManager::CheckWriteProtection poskytuje ekvivalentní kontrolu ochrany proti zápisu prostřednictvím svého správce ochrany.

V produkčních aplikacích neukládejte hesla do logů ani je nezahrnujte do diagnostických zpráv. Vyhněte se zbytečným opakovaným pokusům o ověření a uchovávejte hesla v paměti pouze po dobu, kdy jsou potřebná.

Často kladené otázky

Šifruje ochrana proti zápisu prezentaci?

Ne. Omezuje úpravy, ale ponechává obsah prezentace dostupný pro načtení a zobrazení.

Je heslo pro ochranu proti zápisu vyžadováno k otevření prezentace?

Ne. Pouze otevírací heslo je vyžadováno pro načtení šifrovaného obsahu prezentace.

Může mít prezentace jak otevírací heslo, tak heslo ochrany proti zápisu?

Ano. Poskytněte otevírací heslo prostřednictvím možností načtení pro otevření šifrované prezentace a heslo ochrany proti zápisu ověřujte samostatně, když je vyžadováno oprávnění k úpravám.