The following table lists the known compatibility fixes, for the Windows Vista and newer operating systems, including any symptoms that you might experience.
|
Symptom
|
Fix Name
|
Fix Description
|
|
The application cannot access the Device\PhysicalMemory object beyond the kernel-mode drivers, on any of the Windows Server® 2003 operating systems.
|
BIOSRead
|
Enables OEM executable (.exe) files to use the GetSystemFirmwareTable function when reading the BIOS for the \\Device\Physical memory information, instead of using the NtOpenSection function.
|
|
InstallShield created installers and uninstallers fail to complete, generating error messages or warnings.
|
BlockRunasInteractiveUser
|
Blocks InstallShield from setting the value of registry keys named RunAs to InteractiveUser, which no longer has Administrator rights.
|
|
The application fails because it cannot return shell folder paths, while using the SHGetFolder API.
|
ChangeFolderPathToXPStyle
|
Intercepts the SHGetFolder path request to the common appdata file path, returning the Windows® XP-style file path instead of the Windows Vista-style file path.
|
|
The application fails to start.
|
ClearLastErrorStatusonIntializeCriticalSection
|
Modifies the InitializeCriticalSection function call so that it checks the NTSTATUS error code, and then sets the last error to ERROR_SUCCESS.
|
|
The application's installer must run elevated and depends on the HKCU settings provided for other users.
|
CopyHKCUSettingsFromOtherUsers
|
Scans the existing user profiles and attempts to copy the specified keys into the HKEY_CURRENT_USER registry area.
You can further control this fix, by entering the registry keys that are to be copied as parameters, separated by the ^ symbol. For example, Software\MyCompany\Key1^Software\MyCompany\Key2.
|
|
An access violation error message appears and the application fails when you select or crop an image.
|
CorrectCreateBrushIndirectHatch
|
Corrects the brush style hatch value, which is passed to the CreateBrushIndirect() function, enabling the information to be correctly interpreted.
|
|
The application is denied access, or receives a file not found or path not found error message, when attempting to write files to the hard disk.
|
CorrectFilePaths
|
Modifies the file path names to point to a new location on the hard disk.
Note |
| For more detailed information about the CorrectFilePaths application fix, see Using the CorrectFilePaths Fix. We recommend that you use this fix with the CorrectFilePathsUninstall fix, if you are applying it to a setup installation file. For more detailed information about the CorrectFilePathsUninstall application fix, see Using the CorrectFilePathsUninstall Fix |
|
|
The uninstallation of an application leaves behind files, directories, and links.
|
CorrectFilePathsUninstall
|
Corrects the file paths used by the uninstallation process of an application.
Note |
| For more detailed information about the CorrectFilePathsUninstall application fix, see Using the CorrectFilePathsUninstall Fix. We recommend that you use this fix with the CorrectFilePaths fix, if you are applying it to a setup installation file. For more detailed information about the CorrectFilePaths application fix, see Using the CorrectFilePaths Fix |
|
|
Starting an executable (.exe) causes a blinking taskbar item rather than an elevation prompt, or the application does not provide a valid HWND value when calling the ShellExecute(Ex) function.
|
CorrectShellExecuteHWND
|
Intercepts the ShellExecute(Ex) calls, and then inspects the HWND value. If the value is invalid, this fix enables the call to use the currently active HWND value.
|
|
Not available
|
DelayApplyFlag
|
Applies a KERNEL, USER, or PROCESS flag if the specified DLL is loaded.
You can further control this fix, by using the following syntax at the command prompt:
DLL_Name;Flag_Type;Hexidecimal_Value
Where the DLL_Name is the name of the specific DLL including the file extension, Flag_Type is KERNEL, USER, or PROCESS, and a Hexidecimal_Value, starting with 0x and up to 64-bits long.
Note |
| The PROCESS flag type can have only a 32-bit length, and you can separate multiple entries with a backslash (\). |
|
|
An error message appears when the application attempts to install a service that has a dependency on a deprecated service.
|
DeprecatedServiceShim
|
Intercepts the CreateService function calls and removes the deprecated dependency service from the lpDependencies parameter.
You can further control this fix, by using the following syntax at the command prompt:
Deprecated_Service\App_Service/Deprecated_Service2 \App_Service2
Where Deprecated_Service is the name of the service that has been deprecated and App_Service is the name of the specific application service to be modified. For example, NtLmSsp\WMI.
Note |
| If you do not provide an App_Service name, the deprecated service will be removed from all newly created services. |
Note |
| Separate multiple entries with a forward slash (/). |
|
|
The application fails because it does not find the correct version number for DirectX®.
|
DirectXVersionLie
|
Modifies the DXDIAGN GetProp function call to return the correct DirectX version.
You must further control this fix, by using the following syntax at the command prompt:
MAJORVERSION.MINORVERSION.LETTER
For example, 9.0.c.
|
|
The application appears incorrectly, so that some objects are not drawn or object artifacts remain on the screen.
|
DisableDWM
|
Temporarily disables the Windows "Aero" menu theme functionality for unsupported applications.
|
|
The application fade animations, buttons, or other controls do not function properly.
|
DisableFadeAnimations
|
Disables the fade animations for unsupported applications.
|
|
The application behaves unpredictably when trying to detect and use the correct Windows settings.
|
DisableThemeMenus
|
Temporarily disables the Windows "Aero" menu theme functionality for unsupported applications.
|
|
Installation, uninstallation, or updates fail because the host process calls the CreateProcess function and it returns the ERROR_ELEVATION_REQUIRED error message.
|
ElevateCreateProcess
|
Handles the error code and attempts to call the CreateProcess function again, this time requesting elevation. There will be no effect if the fixed application already has a UAC manifest; the error code will be returned unchanged.
|
|
The application fails because of an incorrect UNC path.
|
EmulateOldPathIsUNC
|
Changes the PathIsUNC function to return a value of True for UNC paths in Windows Vista.
|
|
The applications experiences search functionality issues.
|
EmulateSorting
|
Forces applications that use the CompareStringW/LCMapString sorting table to use an older version, prior to the one introduced with Windows Vista.
|
|
The application invokes the Release() method too many times, causing an object to be prematurely destroyed.
|
ExtraAddRefDesktopFolder
|
Counteracts the application's attempt to obtain the shell desktop folder by invoking the AddRef() method on the Desktop folder, which is returned by the SHGetDesktopFolder function.
|
|
The application fails, due to deprecated API calls. For example, the FileMenu_* functions
|
FailObsoleteShellAPIs
|
Either fully implements the obsolete functions, or implements the obsolete functions with stubs that fail.
Note |
| At the command prompt, you can type FailAll=1 to suppress the function implementation and force all functions to fail. |
|
|
The application uninstallation process does not remove all of the files and folders.
|
FailRemoveDirectory
|
Fails any application call to the RemoveDirectory() function, if the file path location matches a fully qualified and specified location.
|
|
The theme application does not appear properly. The colors appear washed out or the user interface looks less detailed.
|
FakeLunaTheme
|
Intercepts the GetCurrentThemeName API and returns the value for the Windows XP default theme, Luna, instead of the Windows Vista default theme, Aero.
|
|
Changes do not immediately appear on the hard disk and applications that are watching the file are unable to see the changes.
|
FlushFile
|
Enables the WriteFile function to call to the FlushFileBuffers APIs, which in turn flushes the file cache onto the hard disk.
|
|
The application fails to function during an explicit administrator check.
|
ForceAdminAccess
|
Enables the user to temporarily emulate being a part of the Administrators group, by returning a value of True during the administrator check.
|
|
The application presents unusual behavior when installing an application, such as the setup program stating that it cannot install to a user-specified location.
|
GetDriveTypeWHook
|
Changes GetDriveType() so that only the root information appears for the file path. This is required when an application passes an incomplete or badly-formed file path while attempting to retrieve the type of drive on which the file path exists.
|
|
The "Computer memory full" error message appears when you start an application.
|
GlobalMemoryStatusLie
|
Modifies the memory status structure, so that it reports a swap file that is 400 MB, regardless of the true swap file size.
|
|
An access violation error message appears, because an API is performing pointer validation, prior to using a parameter.
|
HandleBadPtr
|
Supports using lpBuffer validation from the InternetSetOptionA and InternetSetOptionW functions, to perform the additional parameter validation.
|
|
The application fails when changing an attribute on a file or directory.
|
HandleMarkedContentNotIndexed
|
Intercepts any API calls that return the attributes for files and directories invoked from the %TEMP% directory, resetting the FILE_ATTRIBUTE_NOT_CONTENT_INDEXED attribute back to its original state.
|
|
The allocation process shuts down unexpectedly.
|
HeapClearAllocation
|
Clears out the heap allocation for an application, by using zeros.
|
|
The application fails to function when special key combinations are used.
|
IgnoreAltTab
|
Intercepts the RegisterRawInputDevices API and prevents the delivery of the WM_INPUT messages. This delivery failure forces the included hooks to be ignored and forces DInput to use Windows-specific hooks.
|
|
A read error or an access violation error message appears when attempting to find or open files.
|
IgnoreDirectoryJunction
|
Links the FindNextFileW, FindNextFileA, FindFirstFileExW, FindFirstFileExA, FindFirstFileW and FindFirstFileA APIs, to prevent them from returning directory junctions.
Note |
| Symbolic links only appear in Windows Vista. |
|
|
The application stops functioning immediately after starting, or starts with only a cursor appearing on the screen.
|
IgnoreException
|
Enables the application to ignore specified exceptions. By default, this fix ignores privileged-mode exceptions; however, it can be configured to ignore any exception.
You can further control this fix, by using the following syntax at the command prompt:
Exception1;Exception2
Where Exception1 and Exception2 are specific exceptions to be ignored. For example, ACCESS_VIOLATION_READ:1;ACCESS_VIOLATION_WRITE:1
Important |
| Be advised that you should only use this compatibility fix if you are certain that it is acceptable to ignore the exception. You might experience additional compatibility issues if you choose to incorrectly ignore an exception. |
|
|
Not available
|
IgnoreFloatingPointRoundingControl
|
Enables an application to ignore the rounding control request and to behave as expected in previous versions of the application.
|
|
The application text appears distorted.
|
IgnoreFontQuality
|
Enables color-keyed fonts to work properly with anti-aliasing.
|
|
A message box appears with debugging or extraneous content when the application is run on an unexpected operating system.
|
IgnoreMessageBox
|
Intercepts the MessageBox* APIs and inspects them for specific message text. If matching text is found, the application continues without showing the message box.
|
|
An error message appears, stating that the operating system is unable to locate the MSVCR80D.DLL file.
|
IgnoreMSOXMLMF
|
Ignores the registered MSOXMLMF.DLL object, which the 2007 Microsoft® Office release loads into the operating system any time you load an XML file, and then it fails the CoGetClassObject for its CLSID.
|
|
The application unsuccessfully attempts to create an object in the Global namespace.
|
LocalMappedObject
|
Intercepts the function call to create the object, replacing the word Global with Local.
|
|
The application fails to uninstall, with access-related errors.
|
MakeShortcutRunas
|
Locates any RunDLL.exe-based uninstallers and forces them to run with different credentials during the application installation. After applying this fix, the installer will create a shortcut specifying a matching string to run during the application installation, enabling the uninstallation to occur later.
|
|
Not available
|
ManageLinks
|
Intercepts common APIs that are going to a directory or to an executable (.exe) file, and then converts any symbolic or directory junctions before passing it back to the original APIs.
|
|
The application experiences security access issues during setup.
|
MoveToCopyFileShim
|
Forces the CopyFile APIs to run instead of the MoveFile APIs. CopyFile APIs avoid moving the security descriptor, which enables the application files to get the default descriptor of the destination folder and prevents the security access issue.
|
|
An error message appears, stating that you do not have the appropriate permissions to access the application.
|
OpenDirectoryAcl
|
Reduces the security privilege levels on a specified set of files and folders.
|
|
Not available
|
PreInstallDriver
|
Preinstalls drivers for applications that would otherwise attempt to install or to start drivers during the initial start process.
|
|
Not available
|
PreInstallSmarteSECURE
|
Preinstalls computer-wide CLSIDs for applications that use SmartSECURE copy protection, which would otherwise attempt to install the CLSIDs during the initial start process.
|
|
An "Unhandled Exception" error message appears, because the application attempted to read the process performance data registry value to determine if another instance of the application is running.
|
ProcessPerfData
|
Handles the failure case, by passing a fake process performance data registry key, so that the application perceives that it is the only instance running.
Note |
| This issue seems to occur most frequently with .NET applications. |
|
|
The application incorrectly fails to apply an application fix.
|
PropagateProcessHistory
|
Sets the _PROCESS_HISTORY environment variable, so that child processes can look in the parent directory for matching information while searching for application fixes.
|
|
The application fails to run because of incorrect Protected Administrator permissions
|
ProtectedAdminCheck
|
Addresses the issues that occur with applications that perform non-standard Administrator checks, generating false positives for users running as Protected Administrators, because the associated SID exists, but is set as deny-only.
|
|
Not available
|
RedirectCRTTempFile
|
Intercepts failing CRT calls that attempt to create a temporary file at the root of the volume, redirecting the calls to a temporary file in the user's temporary directory.
|
|
The application cannot be accessed due to User Account Control (UAC) restrictions.
|
RedirectHKCUKeys
|
Duplicates any newly created HKCU keys to other users' HKCU accounts. This fix is generic for UAC restrictions, whereby the HKCU keys are required, but are unavailable to an application at runtime.
|
|
You are unable to play MP3 files.
|
RedirectMP3Codec
|
Intercepts the CoCreateInstance call for the missing filter and then redirects it to a supported version.
|
|
The application cannot be accessed by its shortcut, or the application shortcuts are not removed during the application uninstallation process.
|
RedirectShortcut
|
Redirects all of the shortcuts created during the application setup to appear according to a specified path.
-
Start Menu shortcuts: Appear in the \\ProgramData\Microsoft\Windows\Start Menu directory for all users.
-
Desktop or Quick Launch shortcuts: You must manually place the shortcuts on the individual user's desktop or Quick Launch bar.
This issue occurs because of UAC restrictions. Specifically, where an application setup runs with elevated privileges and stores the shortcuts according to the elevated user's context. In this situation, a restricted user cannot access the shortcuts.
Important |
| You cannot apply this fix to an .exe file that includes a manifest and provides a runlevel. |
|
|
Installers, uninstallers, or updaters fail when started from a host application.
|
RelaunchElevated
|
Enables a child .exe file to run with elevated privileges, when it is difficult to determine the parent process with either the ElevateCreateProcess fix or by marking the .exe files to RunAsAdmin.
|
|
The application attempts to open the Service Control Manager (SCM) and receives an "Access Denied" error message.
|
RetryOpenSCManagerWithReadAccess
|
Retries the call, requesting a more restricted set of rights, including:
- SC_MANAGER_CONNECT
- SC_MANAGER_ENUMERATE_SERVICE
- SC_MANAGER_QUERY_LOCK_STATUS
- STANDARD_READ_RIGHTS
|
|
The "Unable to open service due to your application using the OpenService() API to test for the existence of a particular service" error message appears.
|
RetryOpenServiceWithReadAccess
|
Retries the OpenService() API call, verifying that the user has Administrator rights, is not a Protected Administrator, and by using read-only access.
|
|
The application fails to function with the Standard User or Protected Administrator account.
|
RunAsAdmin
|
Enables the application to run with elevated privileges. This is the equivalent of specifying requireAdministrator in an application manifest.
|
|
Administrators are unable to view the read/write version of an application that presents a read-only view to Standard Users.
|
RunAsHighest
|
Enables the application to run with the highest available permissions. This is the equivalent of specifying highestAvailable in an application manifest.
|
|
The application fails to be detected as requiring elevation.
|
RunAsInvoker
|
Enables the application to run with the privileges associated with the creation process, without requiring elevation. This is the equivalent of specifying asInvoker in an application manifest.
|
|
The application fails when trying to interact with services running in different sessions.
|
SessionShim
|
Intercepts API calls from applications that are attempting to interact with services running in another session, by using the terminal service name prefix (Global or Local) as the parameter.
At the command prompt, you can supply a list of objects to modify, separating the values by a double backslash (\\), or you can choose not to include any parameters, so that all of the objects will be modified.
Important |
| Users cannot log in as Session 0 (Global Session) in Windows Vista, so applications that require access to Session 0, automatically fail. |
|
|
Not available
|
SetProtocolHandler
|
Registers an application as a protocol handler.
You can further control this fix, by using the following syntax at the command prompt:
Client;Protocol;App
Where the Client is the name of your mail protocol, Protocol is mailto, and App is the name of the application.
Note |
| Currently, only the mail client and the mailto protocol are supported. You can separate multiple clients with a backslash (\). |
|
|
A 32-bit setup program fails to install because it requires 64-bit drivers.
|
SetupCommitFileQueueIgnoreWow
|
Disables the Wow64 file system used by the 64-bit editions of Windows Vista, to prevent 32-bit applications from accessing 64-bit file systems during the application setup.
|
|
The application fails, even after applying a compatibility fix known to fix an issue.
Note |
| Applications using unicows.dll or copy protection often present this issue. |
|
ShimViaEAT
|
Applies the specified compatibility fixes, by modifying the export table and by nullifying the use of module inclusion and exclusion.
|
|
The Web application experiences navigation and display issues, because of the new tabbing feature.
|
ShowWindowIE
|
Intercepts the ShowWindow API call, to address the issues that occur when a Web application determines that it is in a child window. This fix calls the real ShowWindow API on the top-level parent window.
|
|
The application installation file fails to be picked up by the GenericInstaller function.
|
SpecificInstaller
|
Flags the application as being an installer file (for example, setup.exe), and then prompts for elevation.
|
|
An application that is not an installer and has sufficient privileges is generating a false positive from the GenericInstaller function.
|
SpecificNonInstaller
|
Flags the application to exclude it from detection by the GenericInstaller function.
|
|
Not available
|
TrimDisplayDeviceNames
|
Trims the names of the display devices returned by the EnumDisplayDevices API.
|
|
Not available
|
UIPICompatLogging
|
Enables the logging of Windows messages from Internet Explorer and other processes.
|
|
The application does not properly communicate with other processes, due to the non-delivery of customized Windows messages.
|
UIPIEnableCustomMsgs
|
Enables customized Windows messages to pass through to the current process from a lower Desktop integrity level. This fix is the equivalent of calling the RegisterWindowMessage function, followed by the ChangeWindowMessageFilter function in the code.
You can further control this fix, by using the following syntax at the command prompt:
MessageString1 MessageString2
Where MessageString1 and MessageString2 reflect the message strings that can pass.
Note |
| Multiple message strings must be separated by spaces. For more detailed information about the UIPIEnableCustomMsgs application fix, see Using the UIPIEnableCustomMsgs Fix. |
|
|
The application does not communicate properly with other processes, due to the non-delivery of standard Windows messages.
|
UIPIEnableStandardMsgs
|
Enables standard Windows messages to pass through to the current process from a lower Desktop integrity level. This fix is the equivalent of calling the ChangeWindowMessageFilter function in the code.
You can further control this fix, by using the following syntax at the command prompt:
1055 1056 1069
Where 1055 reflects the first message ID, 1056 reflects the second message ID, and 1069 reflects the third message ID that can pass.
|
|
The "Component failed to be located" error message appears when you start an application.
|
VirtualRegistry
|
Enables the registry functions to allow for virtualization, redirection, expansion values, version spoofing, the simulation of performance data counters, and so on.
|
|
Several error messages appear and the application is unable to delete files.
|
VirtualizeDeleteFile
|
Makes the application's call of the DeleteFile function a virtual call, in an attempt to remedy the UAC and file virtualization issues that were introduced with Windows Vista. This fix also links other file APIs (for example, GetFileAttributes) to ensure the virtualization of the file is deleted.
|
|
The application fails to register COM components at runtime.
|
VirtualizeHKCRLite
|
Redirects the HKCR write calls (HKLM) to the HKCU hive, for a per-user COM registration. This operates much like the VirtualRegistry fix when using the VirtualizeHKCR parameter; however, VirtualizeHKCRLite provides better performance.
Note |
| HKCR is a virtual merge of the HKCU\Software\Classes and HKLM\Software\Classes directories. The use of HKCU is preferred if an application is not elevated and is ignored if the application is elevated. |
Important |
| You will typically use this compatibility fix in conjunction with the VirtualizeRegisterTypeLib fix. |
|
|
Not available
|
VirtualizeRegisterTypeLib
|
When used with the VirtualizeHKCRLite fix, it ensures that the type library and the COM class registration happen simultaneously. This functions much like the RegistryTypeLib fix, when using the RegisterTypeLibForUser parameter.
|
|
An error message appears, stating "Unable to initialize sound device from your audio driver", and then the application closes.
|
WaveOutIgnoreBadFormat
|
Enables the application to ignore the bad format error and continue to function properly.
|
|
Not available
|
WerDisableReportException
|
Turns off the silent reporting of exceptions to the Windows Error Reporting tool, including those reported by Object Linking and Embedding-Database (OLE DB), by intercepting the RtlReportException API and returning the STATUS_NOT_SUPPORTED error message.
|
|
The application fails because it does not find the correct version number for the required Windows operating system.
|
- Win95VersionLie
- Win98VersionLie
- WinNT4SP5VersionLie
- Win2000VersionLie
- Win2000SP1VersionLie
- Win2000SP2VersionLie
- Win2000SP3VersionLie
- WinXPVersionLie
- WinXPSP1VersionLie
- WinXPSP2VersionLie
- VistaRTMVersionLie
- Win2K3RTMVersionLie
- Win2K3SP1VersionLie
|
|
An error message appears, stating that the WinG library was not properly installed.
|
Wing32SystoSys32
|
Detects if the WinG32 library appears in the correct directory. If the library is in the wrong location, this fix copies the information (typically during the runtime of the application) into the %WINDIR% \system32 directory.
Important |
| The application must have Administrator privileges for this fix to work. |
|
|
The application experiences issues due to a VB runtime DLL.
|
WinXPSP2VersionLie
|
Forces the application to accept the fix, by following these steps:
- Open the Compatibility Administrator, and then select None for Operating System Mode.
- On the Compatibility Fixes page, click WinXPSP2VersionLie, and then click Parameters.
The Options for <fix_name> dialog box appears.
- Type vbrun60.dll into the Module Name box, click Include, and then click Add.
- Save the custom database.
|
|
The application fails when it attempts to register a COM component that releases with Windows Vista.
|
WRPDllRegister
|
Skips registering and unregistering WRP-protected COM components when calling the DLLRegisterServer and DLLUnregisterServer functions.
You can further control this fix, by using the following syntax at the command prompt:
Component1.dll;Component2.dll
Where Component1.dll and Component2.dll reflect the components to be skipped.
|
|
An access denied error message appears when the application attempts to access a protected operating system resource with more than read-only access.
|
WRPMitigation
|
Emulates the successful authentication and modification of file and registry APIs, so that the application can continue.
|
|
An access denied error message appears when the application attempts to delete a registry key.
|
WRPRegDeleteKey
|
Verifies whether the registry key is WRP-protected. If the key is protected, this fix emulates the deletion process.
|
|
Not available
|
XPAfxIsValidAddress
|
Emulates the behavior of Windows XP for MFC42!AfxIsValidAddress.
|