操作说明:启用文档跟踪和撤销

重要

2020 年 3 月之前发布的 Microsoft Rights Management Service SDK 版本已弃用;使用早期版本的应用程序必须更新为使用 2020 年 3 月版本。 有关完整详细信息,请参阅 弃用通知

Microsoft Rights Management Service SDK 没有进一步增强功能。 强烈建议采用用于分类、标记和保护服务的 Microsoft 信息保护 SDK

本主题涵盖实现文档内容跟踪的基本指导,并提供用于元数据更新和为应用创建“跟踪使用情况按钮(#跟踪使用情况按钮)”的示例代码。

实现文档跟踪的步骤

步骤 1 和步骤 2 可允许跟踪文档。 第 3 步可允许应用用户访问文档跟踪站点,以便跟踪和撤销受保护的文档。

  1. 添加文档跟踪元数据
  2. 向 RMS 服务注册文档
  3. 向应用添加“跟踪使用情况”按钮

这些步骤的实现详细信息如下。

1.添加文档跟踪元数据

文档跟踪是 Rights Management 系统的一个功能。 通过在文档保护过程中添加特定的元数据,可以使用提供多个跟踪选项的跟踪服务门户来注册文档。

使用此 API 添加/更新具有文档跟踪元数据的内容许可证。

在操作上,只有 内容名称通知类型 属性对于文档跟踪是必需的。

  • IpcCreateLicenseMetadataHandle

  • IpcSetLicenseMetadataProperty

    我们期望你能设置所有元数据属性。 就是以下这些按类型列出的属性。

    有关详细信息,请参阅许可证元数据属性类型

    • IPC_MD_CONTENT_PATH

      用于标识跟踪的文档。 如果完整的路径不可用,则只需提供文件名。

    • IPC_MD_CONTENT_NAME

      用于标识跟踪的文档名称。

    • IPC_MD_NOTIFICATION_TYPE

      用于指定发送通知的时间。 有关详细信息,请参阅“通知类型”。

    • IPC_MD_NOTIFICATION_PREFERENCE

      用于指示通知的类型。 有关详细信息,请参阅通知偏好设置。

    • IPC_MD_DATE_MODIFIED

      我们建议在每次用户单击“保存”时设置此日期。

    • IPC_MD_DATE_CREATED

      用于设置文件的发放日期

  • IpcSerializeLicenseWithMetadata

使用其中一个合适的 API 将元数据添加到文件或流中。

最后,使用此 API 注册具有跟踪系统的跟踪文档。

2.将文档注册到 RMS 服务

以下是代码段,显示了设置文档跟踪元数据的示例和对跟踪系统中注册的调用。

C++

    HRESULT hr = S_OK;
    LPCWSTR wszOutputFile = NULL;
    wstring wszWorkingFile;
    IPC_LICENSE_METADATA md = {0};

    md.cbSize = sizeof(IPC_LICENSE_METADATA);
    md.dwNotificationType = IPCD_CT_NOTIFICATION_TYPE_ENABLED;
    md.dwNotificationPreference = IPCD_CT_NOTIFICATION_PREF_DIGEST;
    //file origination date, current time for this example
    md.ftDateCreated = GetCurrentTime();
    md.ftDateModified = GetCurrentTime();

    LOGSTATUS_EX(L"Encrypt file with official template...");

    hr =IpcfEncryptFileWithMetadata( wszWorkingFile.c_str(),
                             m_wszTestTemplateID.c_str(),
                             IPCF_EF_TEMPLATE_ID,
                             0,
                             NULL,
                             NULL,
                             &md,
                             &wszOutputFile);

   /* This will contain the serialized license */
   PIPC_BUFFER pSerializedLicense;

   /* the context to use for the call */
   PCIPC_PROMPT_CTX pContext;

   wstring wstrContentName("MyDocument.txt");
   bool sendLicenseRegistrationNotificationEmail = FALSE;

   hr = IpcRegisterLicense( pSerializedLicense,
                      0,
                      pContext,
                      wstrContentName.c_str(),
                      sendLicenseRegistrationNotificationEmail);

向应用添加跟踪使用情况按钮

向应用添加跟踪使用情况 UI 项非常简单,使用以下任一 URL 格式即可:

  • 使用内容 ID

    • 如果许可证已序列化,请使用 IpcGetLicensePropertyIpcGetSerializedLicenseProperty 获取内容 ID,并使用许可证属性 IPC_LI_CONTENT_ID。 有关详细信息,请参阅许可证属性类型

    • 使用 ContentId颁发者 元数据时,使用以下格式: https://track.azurerms.com/#/{ContentId}/{Issuer}

      示例 - https://track.azurerms.com/#/summary/05405df5-8ad6-4905-9f15-fc2ecbd8d0f7/janedoe@microsoft.com

  • 如果你无权访问该元数据 (,即检查文档) 的未受保护的版本,则可以使用以下格式Content_Name:https://track.azurerms.com/#/?q={ContentName}

    示例 - https://track.azurerms.com/#/?q=Secret!.txt

客户端只需要使用适当的 URL 打开浏览器。 RMS 文档跟踪门户将处理身份验证和任何所需重定向。