Írásvédett bemutatók C++-ban

Bevezetés

Egy írásvédelem jelszó korlátozza a bemutató módosítását, de nem titkosítja a tartalmát. A felhasználók jelszó nélkül is betölthetik és megtekinthetik az írásvédett bemutatót. Az alkalmazástól függően szerkeszthetik a tartalmat és más néven menthetik, így az írásvédelmet nem szabad titoktartási mechanizmusként kezelni.

A megnyitási jelszó más cél szolgál: titkosítja a bemutatót, és a tartalom betöltéséhez szükséges. Egy bemutató titkosításához vagy a megnyitási jelszó érvényesítéséhez lásd a Password-Protect Presentations cikket.

Az ebben a cikkben leírt munkafolyamatok mind a PPT, mind a PPTX bemutatókra vonatkoznak. A példák PPTX fájlokat használnak; PPT mentéskor a .ppt kiterjesztést és a megfelelő PPT mentési formátumot kell használni.

Írásvédelem beállítása egy bemutatón

Használja az IProtectionManager::SetWriteProtection metódust a módosítási jelszó hozzárendeléséhez. A bemutató mentése elmenti a védelmi beállítást.

Az alábbi példa írásvédelmet állít be egy PPTX bemutatón:

#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);

Írásvédett bemutató betöltése

Mivel az írásvédelem nem titkosítja a bemutató tartalmát, a betöltéshez nem szükséges jelszó. A jelszó csak akkor releváns, amikor a védett bemutató módosítási engedélyét ellenőrzik.

#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());

Ne adjon meg írásvédelmi jelszót a LoadOptions::set_Password metódusnak. Ez a tulajdonság titkosított tartalomhoz szükséges megnyitási jelszót vár. Ha egy bemutatónak mindkét típusú védelem van, adja meg a megnyitási jelszót a betöltéshez, és kezelje külön az írásvédelmi jelszót.

Írásvédelem eltávolítása egy bemutatóból

Használja az IProtectionManager::RemoveWriteProtection metódust a módosítási korlátozás megszüntetéséhez, majd mentse a bemutatót.

#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);

Annak ellenőrzése, hogy egy bemutató írásvédett-e

Egy Presentation példány létrehozása nélkül egy fájl vizsgálatához hívja meg az IPresentationFactory::GetPresentationInfo metódust, és ellenőrizze az IPresentationInfo::get_IsWriteProtected tulajdonságot. A tulajdonság a NullableBool típust használja, és NullableBool::True értéket ad, ha írásvédelem észlelhető.

#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.");
}

Az IPresentationFactory::GetPresentationInfo adatfolyam túlterhelése ugyanazt az információt nyújtja egy adatfolyamként megadott bemutatóhoz.

Írásvédelmi jelszó érvényesítése

Használja az IPresentationInfo::CheckWriteProtection metódust a módosítási jelszó ellenőrzéséhez a teljes bemutató betöltése nélkül. Először ellenőrizze az IPresentationInfo::get_IsWriteProtected értéket, hogy az alkalmazás csak akkor kérjen vagy ellenőrizzen jelszót, ha írásvédelem van jelen.

#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.");
}

Az IPresentationInfo::CheckWriteProtection csak az írásvédelmi jelszót ellenőrzi. Nem ellenőrzi a megnyitási jelszót, és nem állapítja meg, hogy titkosított tartalom betölthető-e. Ezzel szemben az IPresentationInfo::CheckPassword csak egy megnyitási jelszót ellenőriz. Ha egy teljes bemutató már be van töltve, az IProtectionManager::CheckWriteProtection a védelmi menedzserén keresztül biztosítja az ekvivalens írásvédelmi ellenőrzést.

Éles alkalmazásokban ne naplózzon jelszavakat, és ne helyezze őket diagnosztikai üzenetekbe. Kerülje a felesleges ismételt ellenőrzési kísérleteket, és a jelszavakat csak a szükséges ideig tartsa memóriában.

GYIK

Titkosítja-e az írásvédelem a bemutatót?

Nem. A módosítást korlátozza, de a bemutató tartalma továbbra is betölthető és megtekinthető.

A bemutató megnyitásához szükséges-e az írásvédelmi jelszó?

Nem. Csak a megnyitási jelszó szükséges a titkosított bemutató tartalmának betöltéséhez.

Lehet-e egy bemutatónak egyszerre megnyitási és írásvédelmi jelszava?

Igen. A megnyitási jelszót a betöltési beállításokkal adja meg a titkosított bemutató megnyitásához, és a módosítási engedélyhez külön ellenőrizze az írásvédelmi jelszót.