使用 DRM 第 7 版或更新版本保護檔案
[與此頁面相關聯的功能 Windows Media Format 11 SDK是舊版功能。 來源讀取器和接收寫入器已取代它。 來源讀取器和接收寫入器已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用來源讀取器和接收寫入器,而不是Windows 媒體格式 11 SDK。 Microsoft 建議使用舊版 API 的現有程式碼盡可能重寫為使用新的 API。
若要使用 Windows Media DRM 第 7 版或更新版本來保護檔案,請使用寫入器物件的 IWMDRMWriter::SetDRMAttribute 方法來設定 DRM 屬性。 由於 DRM 第 7 版和更新版本會為每個受保護的檔案或檔案集啟用唯一授權, 因此 IWMDRMWriter 介面也有建立金鑰的方法。 這些方法僅供方便使用。
若要使用 DRM 第 7 版或更新版本保護 ASF 檔案,請執行下列步驟:
連結至 WMStubDRM.lib,如有必要,請取消連結 wmvcore.lib。
呼叫 WMCreateWriter 函式以建立 DRM 寫入器。 第一個引數是保留的,而且必須設定為 Null。
呼叫 IWMWriter::SetProfile 或 IWMWriter::SetProfileByID,設定寫入器要使用的設定檔。 您必須在寫入器中設定設定檔,才能設定任何 DRM 屬性。 只有使用 Windows 媒體音訊或 Windows 媒體視訊編解碼器的設定檔才支援 DRM
取得寫入器物件的 IWMDRMWriter 介面。
呼叫 IWMDRMWriter::SetDRMAttribute 並將 Use_Advanced_DRM 設為 TRUE。
如果您需要產生新的金鑰種子,請呼叫 IWMDRMWriter::GenerateKeySeed。 在大部分情況下,您將會重複使用先前產生的金鑰種子。 此值必須保持秘密;它不會寫入檔案中。
呼叫 IWMDRMWriter::GenerateKeyID 來建立金鑰識別碼,這是用來建立實際金鑰的第二個值。 不同于金鑰種子,金鑰識別碼是公用的,而且會寫入清除中 DRM 標頭中的檔案。 為每個您所建立的新檔案建立新的金鑰識別碼。
如有必要,請呼叫 IWMDRMWriter::GenerateSigningKeyPair ,以產生將用來簽署進階 DRM ASF 標頭物件的公開和私密金鑰。 如需這些金鑰的詳細資訊,請參閱 IWMDRMWriter::GenerateSigningKeyPair。
如有必要,請取得值以填入 DRM 標頭的數位簽章物件。 如果您的系統上未安裝正常版本的 Windows Media Rights Manager,您必須指定下列四個屬性來設定 ASF 檔案標頭的數位簽章物件,這些屬性都必須從 Microsoft 取得:
如果您已安裝 Windows Media Rights Manager,則不需要在應用程式中設定這些屬性。 DRM 元件會擷取這些屬性,並使用這些屬性自動簽署標頭。 如果您在另一部電腦上已啟用 Windows Media Rights Manager 版本,而且想要重複使用這些數位簽章物件值,您可以在登錄中找到它們。 授權伺服器憑證會儲存在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WM Rights Manager\License Server\Certs:cert1 下,而根憑證會儲存在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WM Rights Manager\License Server\Certs:cert2 之下。 使用 DRM 第 7 版保護檔案時,您必須使用這些登錄機碼的值。 針對 DRM_LASignaturePrivKey 屬性,請使用 GenerateSigningKeysEx (透過 Windows Media Rights Manager SDK) ,或重複使用 Windows Media Rights Manager 在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WM Rights Manager\License Server:Info_Cert0 下安裝的值。 針對 DRM_LASignatureCert 屬性,請使用 GenerateSigningKeysEx (透過 Windows Media Rights Manager SDK) ,或由 Windows Media Rights Manager 在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WM Rights Manager\License Server\Certs:cert0 下安裝的值。
視需要呼叫 IWMDRMWriter::SetDRMAttribute 以設定寫入器物件,以視需要設定必要的 DRM 標頭屬性。 這些屬性會保存寫入器物件的存留期,或直到以新值重設為止。 您建立的每個新檔案不需要重設它們。
寫入器物件需要下列屬性:
下列屬性是選擇性的:
此外,您也可以使用 DRM_DRMHeader 基底屬性直接指定使用者定義的 DRM 檔案屬性。 例如,您可以新增您想要的任何其他屬性,例如 「DRMHeader.RequireSAP」,以傳達授權伺服器在建立授權時將使用的其他資訊。 授權伺服器必須事先注意您新增的任何其他屬性。 無法以程式設計方式探索未知的屬性。
使用 IWMWriter 介面方法撰寫檔案,如本檔其他地方所述。 若要建立即時 DRM 資料流程,只需寫入網路接收即可。 您也可以寫入推播接收。
如有必要,請使用 Windows Media Rights Manager 建立檔案的授權。 此工作也可以由協力廠商授權伺服器執行。 針對即時 DRM 案例,使用者必須在資料流程開始之前取得授權,或在他們第一次嘗試連線到它時取得授權。
注意 此 SDK 的 x64 型版本不支援 DRM。
相關主題