The FESF Policy Service loads the Policy DLL dynamically during system startup, using the standard Windows LoadLibrary function. The Policy DLL is loaded based on the file specification store in the Registry under the following path:
Key Name: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\FESFPolicy\Parameters
Value Name: PolicyDll
Value Type: REG_SZ
Value: <String specifying path to the Client's Policy DLL>
In specifying the value, the standard rules for how LoadLibrary interprets the provided string apply. See the documentation for the lpFileName parameter for LoadLibrary in MSDN for more information.
There are two things of which to take note when changing the Policy DLL:
1. You must stop and restart the FESF Policy Service (FESFPolicy.exe) for the new Policy DLL to be loaded. The FESF Policy Service only reads the PolicyDll Registry value during initialization.
2. Be aware that any files that were encrypted by FESF by previous versions of the Policy DLL will be recognized as encrypted files by FESF. Your Policy DLL may, therefore, be called at PolGetKeyFromHeader with Header Data that was created by a previous Policy DLL. It is therefore wise to include some identifying information in the Policy DLL Header Data so that your Policy DLL can validate and recognize the header before using its contents.