Notice: This website is an unofficial Microsoft Knowledge Base (hereinafter KB) archive and is intended to provide a reliable access to deleted content from Microsoft KB. All KB articles are owned by Microsoft Corporation. Read full disclaimer for more details.

FIX: An ISAPI DLL is not registered when you run an ATL Server application that contains performance counters in Windows Vista

View products that this article applies to.


A Microsoft Visual C++ 2005 Active Template Library (ATL) Server project contains performance counters. This project is configured to register an Internet Server API (ISAPI) DLL on a Windows Vista-based computer. However, the ISAPI DLL is not registered when you run the ATL Server application. Additionally, when you try to register the ISAPI DLL manually, you may receive an error message that resembles the following:

↑ Back to the top


This problem occurs because the performance counter infrastructure in Windows Vista prevents a call to the RegSetValue function from modifying system files. Windows Vista prevents changes to system files to guarantee reliability of the operating system. The RegSetValue function must modify system files to install ATL-based performance counters.

↑ Back to the top


Warning Serious problems might occur if you modify the registry incorrectly by using Registry Editor or by using another method. These problems might require that you reinstall the operating system. Microsoft cannot guarantee that these problems can be solved. Modify the registry at your own risk.

To work around this problem, modify the registry to configre the Windows Vista performance counter infrastructure to bypass the system files integrity check. To do this, you must modify the Configuration Flags registry value that is located in the
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib
registry key. If the registry value contains the 0x00010000 flag, Windows Vista bypasses the integrity check.

To do this, follow these steps:
  1. Click Start, type regedit in the Start Search box, and then click regedit.exe in the Programs list.

    If you are prompted for an administrator password or for confirmation, type your password, or click Continue.
  2. Locate and then click the following registry subkey:
    HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion
  3. Click CurrentVersion, right-click Perflib, and then click Modify.
  4. Click CurrentVersion, and then click Perflib.
  5. If the Configurations Flags value exists, right-click Configuration Flags, and then click Modify. If the Configuration Flags value does not exist, go to step 7.
  6. Type 10000, and then click OK.
  7. Right-click Perflib, click New, and then click DWORD (32-bit) Value.
  8. Type Configuration Flags, and then press ENTER.
  9. Right-click Configuration Flags, and then click Modify.
  10. Type 10000, and then click OK.
  11. Type 0x00010000 in the Value data box.
  12. Exit Registry Editor.

↑ Back to the top


Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.

↑ Back to the top

More information

The ATL is a set of template-based C++ classes that simplify programming Microsoft Component Object Model (COM) objects. The ATL Server Library is a set of template-based C++ classes for creating Web applications, Web services, and other server applications.

For more information about ATL features in Microsoft Visual Studio 2005, visit the following Microsoft Developer Network (MSDN) Web site:For more information about ATL Server performance counters, visit the following MSDN Web site:For more information about how to create a default registry value in Registry Editor, visit the following MSDN Web site:

↑ Back to the top

Keywords: kbexpertiseinter, kbatl, kbtemplate, kbatlserver, kbbug, kbregistry, kbnofix, kbtshoot, kbperformance, KB933241

↑ Back to the top

Article Info
Article ID : 933241
Revision : 2
Created on : 1/31/2008
Published on : 1/31/2008
Exists online : False
Views : 416