محافظت نوشتن ارائه‌ها در C++

مقدمه

رمز عبور محافظت از نوشتن، تغییر یک ارائه را محدود می‌کند اما محتویات آن را رمزنگاری نمی‌کند. کاربران می‌توانند یک ارائه محافظت‌شده از نوشتن را بدون رمز عبور بارگذاری و مشاهده کنند. بسته به برنامه، ممکن است بتوانند محتوا را ویرایش کرده و تحت نامی دیگر ذخیره کنند، بنابراین محافظت از نوشتن نباید به عنوان یک مکانیزم محرمانگی در نظر گرفته شود.

یک رمز عبور باز کردن هدف متفاوتی دارد: ارائه را رمزنگاری می‌کند و برای بارگذاری محتوا نیاز است. برای رمزنگاری یک ارائه یا اعتبارسنجی رمز عبور باز کردن، به محافظت با رمز عبور از ارائه‌ها مراجعه کنید.

جریان‌های کاری در این مقاله برای هر دو نوع ارائه PPT و PPTX اعمال می‌شود. مثال‌ها از فایل‌های PPTX استفاده می‌کنند؛ هنگام ذخیره به PPT، از پسوند .ppt و قالب ذخیره‌سازی PPT مربوطه استفاده کنید.

تنظیم محافظت نوشتن برای یک ارائه

از IProtectionManager::SetWriteProtection برای اختصاص یک رمز عبور برای تغییر یک ارائه استفاده کنید. ذخیره‌سازی ارائه، تنظیم محافظت را حفظ می‌کند.

مثال زیر محافظت نوشتن را برای یک ارائه 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);

بارگیری یک ارائه محافظت‌شده از نوشتن

از آنجا که محافظت نوشتن محتوا را رمزنگاری نمی‌کند، برای بارگذاری ارائه نیازی به رمز عبور نیست. رمز عبور فقط زمانی که اعتبارسنجی مجوز تغییر ارائه محافظت‌شده انجام می‌شود، مورد نیاز است.

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

رمز عبور محافظت نوشتن را به LoadOptions::set_Password پاس ندهید. این ویژگی یک رمز عبور باز کردن برای محتوای رمزنگاری‌شده می‌پذیرد. اگر یک ارائه هر دو نوع محافظت را داشته باشد، رمز عبور باز کردن را برای بارگذاری ارائه ارائه دهید و رمز عبور محافظت نوشتن را به‌طور جداگانه مدیریت کنید.

حذف محافظت نوشتن از یک ارائه

از IProtectionManager::RemoveWriteProtection برای حذف محدودیت تغییر استفاده کنید، سپس ارائه را ذخیره کنید.

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

بررسی اینکه آیا یک ارائه محافظت نوشتن دارد یا نه

برای بررسی یک فایل بدون ایجاد یک نمونه کامل از Presentation، IPresentationFactory::GetPresentationInfo را فراخوانی کنید و IPresentationInfo::get_IsWriteProtected را بررسی کنید. این ویژگی از NullableBool استفاده می‌کند و هنگام یافتن محافظت نوشتن مقدار NullableBool::True را برمی‌گرداند.

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

بارگذاری جریان‌وار از IPresentationFactory::GetPresentationInfo همان اطلاعات را برای ارائه‌ای که به‌صورت جریان (stream) فراهم می‌شود، ارائه می‌دهد.

اعتبارسنجی رمز عبور محافظت نوشتن

از IPresentationInfo::CheckWriteProtection برای اعتبارسنجی رمز عبور تغییر بدون بارگذاری کامل ارائه استفاده کنید. ابتدا IPresentationInfo::get_IsWriteProtected را بررسی کنید تا برنامه فقط زمانی که محافظت نوشتن موجود است، درخواست یا اعتبارسنجی رمز عبور را انجام دهد.

#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 فقط رمز عبور محافظت نوشتن را اعتبارسنجی می‌کند. این روش رمز عبور باز کردن را اعتبارسنجی نمی‌کند و تعیین نمی‌کند که آیا محتوای رمزنگاری‌شده می‌تواند بارگذاری شود یا نه. در مقابل، IPresentationInfo::CheckPassword فقط یک رمز عبور باز کردن را اعتبارسنجی می‌کند. اگر یک ارائه کامل قبلاً بارگذاری شده باشد، IProtectionManager::CheckWriteProtection بررسی معادل محافظت نوشتن را از طریق مدیر محافظت خود ارائه می‌دهد.

در برنامه‌های تولیدی، رمزهای عبور را لاگ نکنید و در پیام‌های تشخیصی وارد نکنید. از تلاش‌های تکراری و غیرضروری برای اعتبارسنجی جلوگیری کنید و رمزهای عبور را در حافظه تنها به مدت لازم نگه دارید.

سوالات متداول

آیا محافظت نوشتن یک ارائه را رمزنگاری می‌کند؟ خیر. این ویژگی فقط تغییرات را محدود می‌کند اما محتوای ارائه برای بارگذاری و نمایش در دسترس باقی می‌ماند.

آیا رمز عبور محافظت نوشتن برای باز کردن یک ارائه ضروری است؟ خیر. فقط یک رمز عبور باز کردن برای بارگذاری محتوای رمزنگاری‌شده ارائه لازم است.

آیا یک ارائه می‌تواند همزمان یک رمز عبور باز کردن و یک رمز عبور محافظت نوشتن داشته باشد؟ بله. رمز عبور باز کردن را از طریق گزینه‌های بارگذاری برای باز کردن ارائه رمزنگاری‌شده فراهم کنید و رمز عبور محافظت نوشتن را به‌ طور جداگانه هنگام نیاز به مجوز تغییر اعتبارسنجی نمایید.