Using the WRPDllRegister Fix
Published: June 11, 2010
Updated: June 11, 2010
Applies To: Windows 7, Windows Vista
This section includes information about using the WRPDllRegister compatibility fix, including the usage and API-related information.
The WRPDllRegister compatibility fix is designed to resolve issues due to an application attempting to register a DLL that is protected by Windows® Resource Protection (WRP).
Investigating the Issue
When investigating this issue, you might see a message indicating that an error occurred while registering a component. A follow-up investigation on the component should reveal if the file is WRP-protected. Alternately, you can use a registry-monitoring tool, such as the Sysinternals Process Monitor, which can also reveal the WRP-protected registry keys that are the source of the issue.
This compatibility fix works by intercepting calls to the GetProcAddress API. If the requested procedure name is DllRegisterServer or DllUnregisterServer, and the file is WRP-protected, then the compatibility fix will return a value of S_OK. Otherwise, the compatibility fix will pass the call through to the DllRegisterServer and DllUnregisterServer functions.
While processing the call to the GetProcAddress API, the compatibility fix will also verify whether the file is listed in a Microsoft-provided, semicolon delimited list of file names, located in the HKEY_LOCAL_MACHING\Policies\Microsoft\Windows NT\Windows File Protection\KnownDllList registry key.
Fixing Your Code
Applications should not call the DllRegisterServer function on WRP-protected DLL files. You can determine if a file is WRP-protected by calling the SfcIsFileProtected API.