Microsoft KB Archive/933241

From BetaArchive Wiki
Knowledge Base


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

Article ID: 933241

Article Last Modified on 5/24/2007



APPLIES TO

  • Microsoft Windows Code Name “Longhorn”
  • Windows Vista Starter
  • Windows Vista Home Basic
  • Windows Vista Home Premium
  • Windows Vista Ultimate
  • Windows Vista Enterprise
  • Windows Vista Business
  • Windows Vista Home Basic 64-bit Edition
  • Windows Vista Home Premium 64-bit Edition
  • Windows Vista Enterprise 64-bit Edition
  • Windows Vista Ultimate 64-bit Edition
  • Microsoft Visual Studio 2005 Team Suite
  • Microsoft Visual Studio 2005 Standard Edition
  • Microsoft Visual Studio 2005 Service Pack 1
  • Microsoft Visual Studio 2005 Professional Edition
  • Microsoft Visual Studio 2005 Team Edition for Database Professionals
  • Microsoft Visual Studio 2005 Team Edition for Software Architects
  • Microsoft Visual Studio 2005 Team Edition for Software Developers
  • Microsoft Visual Studio 2005 Team Edition for Software Testers
  • Microsoft Visual Studio 2005 Team Foundation Server
  • Microsoft Visual Studio 2005 Team Foundation
  • Microsoft Visual Studio 2005 Team System Test Edition
  • Microsoft Visual Studio 2005 Express Edition



Important This article contains information about how to modify the registry. Make sure that you back up the registry before you modify it. Make sure that you know how to restore the registry if a problem occurs. For more information about how to back up, restore, and modify the registry, click the following article number to view the article in the Microsoft Knowledge Base:

256986 Description of the Microsoft Windows registry


SYMPTOMS

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:

0x80070002 COR_E_FILENOTFOUND

CAUSE

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.

WORKAROUND

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.


STATUS

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

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:

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