Doing Individualization for a Windows Presentation Framework (WPF) application using the Windows Media Player (WMP) API for content that requires DRM (Digital Rights Management) can be very challenging.
Microsoft documentation https://docs.microsoft.com/en-us/previous-versions/ms867216(v=msdn.10)?redirectedfrom=MSDN
and examples on the internet show obsolete code examples mainly because those examples needs to use Windows Media Format 11 SDK (WMF11SDK) for example https://docs.microsoft.com/en-us/windows/win32/wmformat/drm-individualization-example?redirectedfrom=MSDN
, it means if I want those examples work the computer must have WMF11SDK already installed, otherwise it doesn’t works, in other words in portability terms it is not a reliable solution, I mean I should check if WMF11SDK is installed before to perform the individualization or include the installation of WMF11SDK as a prerequisite for application installation, this will all 32 Mb to the size of the installer.
I’m writing a few posts here to demonstrate what I’ve learned in the last 6 months building this for one of our clients.
I just want to start describing the process involved on the DRM individualization, so let's start.
The DRM Individualization stuff
Every time we try to play protected content I mean encrypted wma files the Windows Media Player Digital Rights Management (DRM) system fires up the Individualization, that process is pretty simple, because it is leveraged by downloading a simple file IndivBox.key from secure Microsoft server the very first time an user plays DRM encrypted file.
The information for the individualization is stored in a hidden folder, to find the folder location we only need to do the following:
1. Click Start, Click Run and then type regedit in the Open box
2. Expand the HKEY_LOCAL_MACHINE\Software\Microsoft\DRM key
3. In the pane on the right, double-click DataPath
So we can check the file IndivBox.key and the files related to the license storage, it’s pretty important to know this folder location, just to check if the individualization has been done properly.
We have diferent ways to fires up the individualization, the first one was described above, put differently just to play an encrypted wma file.
Other common way to fires up the individualization is to use a Microsoft web Page, so I'm going to list a couple of them without flaws:
These web pages look like this one, by the way is very important to mention the listed links only works on Internet Explorer