Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu hızlı başlangıçta, MIP Dosya SDK'larının daha fazlasını nasıl kullanacağınız gösterilmektedir. Önceki hızlı başlangıçta listelediğiniz duyarlılık etiketlerinden birini kullanarak, bir dosya üzerindeki etiketi ayarlamak ve almak için bir dosya işleyicisi kullanırsınız. Dosya işleyici sınıfı, desteklenen dosya türleri için etiketleri veya korumayı ayarlamaya ve almaya yönelik çeşitli işlemleri kullanıma sunar.
Önkoşullar
Henüz yapmadıysanız devam etmeden önce aşağıdaki önkoşulları tamamladığınızdan emin olun:
- Hızlı Başlangıç: Duyarlılık etiketlerini (C++) listeleme. Önce bu hızlı başlangıcı tamamlayın. Kuruluşun duyarlılık etiketlerini listeleyen bir başlangıç Visual Studio çözümü oluşturur. Bu "Duyarlılık etiketi ayarlama ve alma" hızlı başlangıcı öncekini temel alır.
- İsteğe bağlı olarak: MIP SDK içindeki dosya işleyicileri kavramlarını inceleyin.
Dosya işleyici nesnesini izlemek için bir gözlemci sınıfı uygulama
Uygulama başlatma hızlı başlangıcında dosya profili ve altyapısı için uyguladığınız gözlemcide olduğu gibi, şimdi bir dosya işleyici nesnesi için bir gözlemci sınıfı uyguluyorsunuz.
SDK'nın mip::FileHandler::Observer sınıfını genişleterek dosya işleyici gözlemcisi için temel bir uygulama oluşturun. Uygulama gözlemciyi oluşturur ve daha sonra dosya işleyici işlemlerini izlemek için kullanır.
Önceki "Hızlı Başlangıç: Duyarlılık etiketlerini listeleme (C++)" makalesinde üzerinde çalıştığınız Visual Studio çözümünü açın.
Projenize yeni bir sınıf ekleyin. Visual Studio sizin için hem header/.h hem de implementation/.cpp dosyalarını oluşturur:
- Çözüm Gezgini'nde proje düğümüne yeniden sağ tıklayın, Ekle'yi ve ardından Sınıf'ı seçin.
-
Sınıf Ekle iletişim kutusunda:
- Sınıf Adı alanına "filehandler_observer" girin. Hem .h dosyası hem de .cpp dosya alanlarının, girdiğiniz ada göre otomatik olarak doldurulduğunu fark edin.
- İşiniz bittiğinde Tamamseçin.
Visual Studio sınıfı için .h ve .cpp dosyalarını oluşturduktan sonra, her iki dosya da düzenleyici sekmelerinde açılır. Yeni gözlemci sınıfınızı uygulamak için her dosyayı güncelleştirin:
Oluşturulan
filehandler_observersınıfı seçerek/silerek "filehandler_observer.h" dosyasını güncelleştirin. Önceki adım tarafından oluşturulan önişlemci yönergelerini kaldırmayın (#pragma, #include). Ardından, var olan önişlemci yönergelerinden sonra aşağıdaki kaynağı kopyalayıp dosyaya yapıştırın:#include <memory> #include "mip/file/file_engine.h" #include "mip/file/file_handler.h" class FileHandlerObserver final : public mip::FileHandler::Observer { public: FileHandlerObserver() { } // Observer implementation void OnCreateFileHandlerSuccess(const std::shared_ptr<mip::FileHandler>& fileHandler, const std::shared_ptr<void>& context) override; void OnCreateFileHandlerFailure(const std::exception_ptr& error, const std::shared_ptr<void>& context) override; void OnCommitSuccess(bool committed, const std::shared_ptr<void>& context) override; void OnCommitFailure(const std::exception_ptr& error, const std::shared_ptr<void>& context) override; };Oluşturulan
filehandler_observersınıf uygulamasını seçerek/silerek "filehandler_observer.cpp" öğesini güncelleştirin. Önceki adım tarafından oluşturulan önişlemci yönergelerini kaldırmayın (#pragma, #include). Ardından, var olan önişlemci yönergelerinden sonra aşağıdaki kaynağı kopyalayıp dosyaya yapıştırın:void FileHandlerObserver::OnCreateFileHandlerSuccess(const std::shared_ptr<mip::FileHandler>& fileHandler, const std::shared_ptr<void>& context) { auto promise = std::static_pointer_cast<std::promise<std::shared_ptr<mip::FileHandler>>>(context); promise->set_value(fileHandler); } void FileHandlerObserver::OnCreateFileHandlerFailure(const std::exception_ptr & error, const std::shared_ptr<void>& context) { auto promise = std::static_pointer_cast<std::promise<std::shared_ptr<mip::FileHandler>>>(context); promise->set_exception(error); } void FileHandlerObserver::OnCommitSuccess(bool committed, const std::shared_ptr<void>& context) { auto promise = std::static_pointer_cast<std::promise<bool>>(context); promise->set_value(committed); } void FileHandlerObserver::OnCommitFailure(const std::exception_ptr & error, const std::shared_ptr<void>& context) { auto promise = std::static_pointer_cast<std::promise<bool>>(context); promise->set_exception(error); }
İsteğe bağlı olarak, çözümünüzün bir test derlemesini/bağlantısını çalıştırmak ve devam etmeden önce başarıyla derlendiğini onaylamak için F6 (Derleme Çözümü) kullanın.
Duyarlılık etiketini ayarlamak ve almak için mantık ekleyin
Dosyaya duyarlılık etiketi ayarlayıp alan mantık eklemek için Dosya altyapısı nesnesini kullanın.
Çözüm Gezgini'da, yönteminin uygulanmasını
main()içeren .cpp dosyasını projenizde açın. Proje oluşturma sırasında belirlediğiniz isim, varsayılan olarak projeyle aynı olup onu içeren yapıdadır.Dosyanın en üstüne karşılık gelen mevcut yönergelerin arkasına aşağıdaki
#includeveusingyönergelerini ekleyin:#include "filehandler_observer.h" #include "mip/file/file_handler.h" using mip::FileHandler;Gövdenin
main()sonuna doğru, önceki hızlı başlangıçta kaldığınız yerden sonrasystem("pause");ve öncesindereturn 0;aşağıdaki kodu ekleyin:// Set up async FileHandler for input file operations string inputFilePath = "<input-file-path>"; string actualFilePath = "<content-identifier>"; std::shared_ptr<FileHandler> handler; try { auto handlerPromise = std::make_shared<std::promise<std::shared_ptr<FileHandler>>>(); auto handlerFuture = handlerPromise->get_future(); engine->CreateFileHandlerAsync( inputFilePath, actualFilePath, true, std::make_shared<FileHandlerObserver>(), handlerPromise); handler = handlerFuture.get(); } catch (const std::exception& e) { cout << "An exception occurred... did you specify a valid input file path?\n\n" << e.what() << "'\n"; system("pause"); return 1; } // Set a label on input file try { string labelId = "<label-id>"; cout << "\nApplying Label ID " << labelId << " to " << inputFilePath << endl; mip::LabelingOptions labelingOptions(mip::AssignmentMethod::PRIVILEGED); handler->SetLabel(engine->GetLabelById(labelId), labelingOptions, mip::ProtectionSettings()); } catch (const std::exception& e) { cout << "An exception occurred... did you specify a valid label ID?\n\n" << e.what() << "'\n"; system("pause"); return 1; } // Commit changes, save as a different/output file string filePathOut = "<output-file-path>"; try { cout << "Committing changes" << endl; auto commitPromise = std::make_shared<std::promise<bool>>(); auto commitFuture = commitPromise->get_future(); handler->CommitAsync(filePathOut, commitPromise); if (commitFuture.get()) { cout << "\nLabel committed to file: " << filePathOut << endl; } else { cout << "Failed to label: " + filePathOut << endl; return 1; } } catch (const std::exception& e) { cout << "An exception occurred... did you specify a valid commit file path?\n\n" << e.what() << "'\n"; system("pause"); return 1; } system("pause"); // Set up async FileHandler for output file operations actualFilePath = "<content-identifier>"; try { auto handlerPromise = std::make_shared<std::promise<std::shared_ptr<FileHandler>>>(); auto handlerFuture = handlerPromise->get_future(); engine->CreateFileHandlerAsync( filePathOut, actualFilePath, true, std::make_shared<FileHandlerObserver>(), handlerPromise); handler = handlerFuture.get(); } catch (const std::exception& e) { cout << "An exception occurred... did you specify a valid output file path?\n\n" << e.what() << "'\n"; system("pause"); return 1; } // Get the label from output file try { cout << "\nGetting the label committed to file: " << filePathOut << endl; auto label = handler->GetLabel(); cout << "Name: " + label->GetLabel()->GetName() << endl; cout << "Id: " + label->GetLabel()->GetId() << endl; } catch (const std::exception& e) { cout << "An exception occurred... did you specify a valid label ID?\n\n" << e.what() << "'\n"; system("pause"); return 1; } system("pause");main()sonuna doğru, ilk hızlı başlangıç kılavuzunda oluşturulan uygulama kapatma kod bloğunu bulun ve işleyici satırının yorumunu kaldırın:// Application shutdown. Null out profile and engine, call ReleaseAllResources(); // Application may crash at shutdown if resources aren't properly released. profile = nullptr; engine = nullptr; handler = nullptr; mipContext = nullptr;Dize sabitlerini kullanarak kaynak koddaki yer tutucu değerlerini aşağıdaki gibi değiştirin:
Yer tutucu Değer <girdi dosya yolu> Bir test giriş dosyasının tam yolu, örneğin: "c:\\Test\\Test.docx".<içerik tanımlayıcısı> İçerik için insan tarafından okunabilen bir tanımlayıcı. Örneğin: - Dosya için path\filename komutunu kullanın:
"c:\Test\Test.docx" - E-posta için subject:sender kullanın:
"RE: Audit design:user1@contoso.com"
<label-id> Önceki Hızlı Başlangıç'ta konsol çıkışından kopyalanan duyarlılık etiketi kimliği, örneğin: "f42a3342-8706-4288-bd31-ebb85995028z".<çıkış dosyası yolu> Çıkış dosyasının tam yolu; giriş dosyasının etiketli bir kopyasıdır, örneğin: "c:\\Test\\Test_labeled.docx".- Dosya için path\filename komutunu kullanın:
Uygulamayı derleme ve test etme
İstemci uygulamanızı derleyin ve test edin.
İstemci uygulamanızı derlemek için F6 (Derleme Çözümü) kullanın. Derlemede hata yoksa, uygulamanızı çalıştırmak için F5 (Hata ayıklamayı başlat) kullanın.
Projeniz başarıyla derlenip çalıştırılırsa, SDK yönteminizi
AcquireOAuth2Token()her çağırdığında uygulama bir erişim belirteci ister. Daha önce "Duyarlılık etiketlerini listeleme" hızlı başlangıcında yaptığınız gibi,$resourceUrlve$authorityiçin sağlanan değerlerle belirteci her seferinde almak üzere PowerShell betiğinizi çalıştırın.Run the PowerShell script to generate an access token using the following values, then copy/paste it below: Sensitivity labels for your organization: Non-Business : 87ba5c36-17cf-14793-bbc2-bd5b3a9f95cz Public : 83867195-f2b8-2ac2-b0b6-6bb73cb33afz General : f42a3342-8706-4288-bd31-ebb85995028z Confidential : 074e457c-5848-4542-9a6f-34a182080e7z Highly Confidential : f55c2dea-db0f-47cd-8520-a52e1590fb6z Press any key to continue . . . Applying Label ID 074e457c-5848-4542-9a6f-34a182080e7z to c:\Test\Test.docx Committing changes Label committed to file: c:\Test\Test_labeled.docx Press any key to continue . . . Getting the label committed to file: c:\Test\Test_labeled.docx Name: Confidential Id: 074e457c-5848-4542-9a6f-34a182080e7z Press any key to continue . . .
Çıkış dosyasını açıp belgenin bilgi koruma ayarlarını görsel olarak inceleyerek etiket uygulamasını doğrulayın.
Uyarı
Bir Office belgesini etiketlediyseniz ancak erişim belirtecini veren Microsoft Entra kiracısından bir hesap kullanarak oturum açmadıysanız (ve duyarlılık etiketleri yapılandırıldıysa), etiketli belgeyi açabilmeniz için önce oturum açmanız istenebilir.