Zabezpieczanie prezentacji przed zapisem w C++
Wprowadzenie
Hasło zabezpieczające przed zapisem ogranicza modyfikację prezentacji, ale nie szyfruje jej treści. Użytkownicy mogą wczytać i wyświetlić prezentację chronioną przed zapisem bez podania hasła. W zależności od aplikacji mogą również edytować treść i zapisać ją pod inną nazwą, więc ochrona przed zapisem nie powinna być traktowana jako mechanizm poufności.
Hasło otwierające ma inny cel: szyfruje prezentację i jest wymagane do wczytania jej treści. Aby zaszyfrować prezentację lub zweryfikować hasło otwierające, zobacz Password-Protect Presentations.
Procedury opisane w tym artykule dotyczą zarówno prezentacji PPT, jak i PPTX. Przykłady używają plików PPTX; przy zapisywaniu jako PPT należy używać rozszerzenia .ppt oraz odpowiedniego formatu zapisu PPT.
Ustaw ochronę przed zapisem w prezentacji
Użyj IProtectionManager::SetWriteProtection, aby przypisać hasło do modyfikacji prezentacji. Zapisanie prezentacji zachowuje ustawienie ochrony.
Poniższy przykład ustawia ochronę przed zapisem w prezentacji 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);
Wczytaj prezentację chronioną przed zapisem
Ponieważ ochrona przed zapisem nie szyfruje treści prezentacji, nie jest wymagane żadne hasło do wczytania prezentacji. Hasło jest istotne tylko przy weryfikacji uprawnień do modyfikacji chronionej prezentacji.
#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());
Nie przekazuj hasła ochrony przed zapisem do LoadOptions::set_Password. Właściwość ta przyjmuje hasło otwierające dla zaszyfrowanej treści. Jeśli prezentacja posiada oba rodzaje ochrony, podaj hasło otwierające, aby ją wczytać, a hasło ochrony przed zapisem obsłuż osobno.
Usuń ochronę przed zapisem z prezentacji
Użyj IProtectionManager::RemoveWriteProtection, aby usunąć ograniczenie modyfikacji, a następnie zapisz prezentację.
#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);
Sprawdź, czy prezentacja jest chroniona przed zapisem
Aby zbadać plik bez tworzenia pełnej instancji Presentation, wywołaj IPresentationFactory::GetPresentationInfo i sprawdź IPresentationInfo::get_IsWriteProtected. Właściwość używa NullableBool i zwraca NullableBool::True, gdy wykryto ochronę przed zapisem.
#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.");
}
Przeciążenie strumieniowe IPresentationFactory::GetPresentationInfo dostarcza te same informacje dla prezentacji podanej jako strumień.
Zweryfikuj hasło ochrony przed zapisem
Użyj IPresentationInfo::CheckWriteProtection, aby zweryfikować hasło modyfikacji bez wczytywania pełnej prezentacji. Najpierw sprawdź IPresentationInfo::get_IsWriteProtected, aby aplikacja żądała lub weryfikowała hasło tylko wtedy, gdy istnieje ochrona przed zapisem.
#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 weryfikuje tylko hasło ochrony przed zapisem. Nie weryfikuje hasła otwierającego ani nie określa, czy zaszyfrowana treść może zostać wczytana. Natomiast IPresentationInfo::CheckPassword weryfikuje wyłącznie hasło otwierające. Jeśli pełna prezentacja została już wczytana, IProtectionManager::CheckWriteProtection zapewnia równoważną weryfikację ochrony przed zapisem poprzez jego menedżer ochrony.
W aplikacjach produkcyjnych nie zapisuj haseł w logach ani nie umieszczaj ich w komunikatach diagnostycznych. Unikaj niepotrzebnych wielokrotnych prób weryfikacji i przechowuj hasła w pamięci tylko tak długo, jak jest to konieczne.
FAQ
Czy ochrona przed zapisem szyfruje prezentację?
Nie. Ogranicza modyfikację, ale pozostawia treść prezentacji dostępną do wczytania i przeglądania.
Czy hasło ochrony przed zapisem jest wymagane do otwarcia prezentacji?
Nie. Tylko hasło otwierające jest wymagane do wczytania zaszyfrowanej treści prezentacji.
Czy prezentacja może mieć jednocześnie hasło otwierające i hasło ochrony przed zapisem?
Tak. Podaj hasło otwierające za pomocą opcji wczytywania, aby otworzyć zaszyfrowaną prezentację, oraz osobno zweryfikuj hasło ochrony przed zapisem, gdy wymagana jest autoryzacja do modyfikacji.