Using the WRPDllRegister Fix

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.

Intercepted APIs

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.

See Also


Windows Vista and Windows 7 Operating Systems