32Bit Application Shim Fixes
otherwindows
This table lists all documented (with descriptions) application shims as extracted from the `Microsoft Application Compatibility Database` (Compatadmin.exe) Some of the Shims are a…
32Bit Application Shim Fixes
This table lists all documented (with descriptions) application shims as extracted from the Microsoft Application Compatibility Database (Compatadmin.exe)
Some of the Shims are also documented in MSDN - Windows Vista, Windows 7, and Windows 8 Operating Systems - Windows XP and Earlier
| Shim Fix | Description |
|---|---|
| AddProcessParametersFlags | Add flags to Peb-ProcessParameter-Flags. The flags are a ULONG. Specify it as a hex number (so at most 8 digits). |
| AddRestrictedSidInCoInitializeSecurity | If set, combase will allow a restricted process to call into a non-restricted process for apps that implement some sort of protected view mode in win7-. |
| AddWritePermissionsToDeviceFiles | Force device Read/Write permissions to match the permission necessary for all IOCTLs. This compatibility fix enables SecureROM applications to correctly open the sound devices. Applies to: Windows 95, Windows 98 |
| AliasDXDC | Windows 9x and Windows 2000 internally cache DirectDraw DC handles. This guarantees that the same DC would be returned for a particular surface regardless of how many times it was released and acquired. This compatibility fix aliases DCs returned by DirectDraw and then de-aliases them when GDI functions are called. |
| AllowDesktopSetProp | A security change for Windows Server 2003 disallowed apps from using SetProp on the Desktop window. This shim caches the data from calls to SetProp on the desktop window and supplies the data when later requested. |
| AllowMaximizedWindowGamma | If set, allow maximized windowed DX apps to change gamma ramp. |
| AlwaysActiveMenus | In Windows XP, we set the inactive look on menus that belong to non-foreground windows. |
| APILogger | Logs API calls made by the application to an .LGV file in %windir%\AppPatch. You must copy LogExts.dll, LogViewer.exe and the Manifest directory to %windir%\AppPatch in order for this shim to function properly. |
| AspNetRegiis11 | Enables aspnet_regiis.exe v1.1 to run on Vista and register ASP.NET: grants Admin access to ADO-related registry keys and prepares IIS7 configuration. |
| ChangeAuthenticationLevel | Changes COM Security Level from RPC_C_AUTHN_LEVEL_NONE to RPC_C_AUTHN_LEVEL_COMMON. This enables temporary elevation of the security context for an application. Applies to: Windows 95, Windows 98 |
| CopyHKCUSettingsFromOtherUsers | Some updaters/upgrade installers running elevated requires HKCU settings created by the application at runtime. This shim is intended to fix the Over-the-Shoulder scenario where the application has not been run in the elevated user, but has run in standard users. It scans the existing user profiles in the machine and attempts to copy the specified keys into HKEY_CURRENT_USER. |
| CorrectACMArgs | This compatibility fix handles applications that pass a cbSrcLength value that is too big in the ACMSTREAMHEADER parameter to acmStreamConvert or acmStreamPrepareHeader. |
| CorrectACMStreamOpen | Corrects the samples per block for acmStreamOpen so that it will pass IMA ADPCM's parameter validation. |
| CorrectActiveMoviePath | Redirects calls from legacy movies to Windows Media Player instead of using the AMOVIE.OCX control to display the movie. |
| CorrectBitmapHeader | This compatibility fix corrects known bad bitmap headers. Windows XP is more restrictive in the format of bitmap headers in an effort to promote wider compatibility. Applies to: Windows 95, Windows 98 |
| CorrectCreateEventName | The CreateEvent function doesn't accept event names that contain a backslash. This compatibility fix will replace backslashes with an underscore. Applies to: Windows 95, Windows 98 |
| CorrectCreateIcon | This compatibility fix intercepts calls made to the CreateIcon API and zeros the alpha channel in lpbXORbits. This has the effect of improving the display of certain icons in Windows XP. |
| CorrectCreateSurface | Corrects the DDSCAPS structure of DirectDraw CreateSurface operations. |
| CorrectFarEastFont | This compatibility fix corrects the lfCharSet value in LOGFONTA to correctly display localized versions of East Asia characters. Some localized East Asia applications create fonts to display localized characters by supplying only the font face name, and let the system pick up the correct character set. This works fine on Windows 9x platforms. But on Windows XP, you need to specify the correct character set in order to display localized characters correctly. |
| CorrectFilePathInSetDlgItemText | Looks for c:\windows\system\ in calls to the SetDlgItemTextA API and replaces it with the string returned from the GetSystemDirectory API. |
| CorrectFilePaths | This compatibility fix corrects file paths that were changed between Windows 9x and Windows XP. It works by hooking the file APIs and converting the file paths to the correct location for Windows XP. For example, a Windows 9x path of C:\Windows\Write.exe would be converted to C:\Windows\System32\Write.exe. Applies to: Windows 95, Windows 98 |
| CorrectFilePathsUninstall | If file locations are corrected during install, the uninstall program should attempt to find the file in its new location when uninstalling. If the CorrectFilePaths compatibility fix is used with an application, then this compatibility fix should be applied to the application’s uninstall program. |
| CorrectOpenFileExclusive | The OpenFile(fileName, xxx, OF_SHARE_EXCLUSIVE) API fails on Windows 9x if the file referenced by fileName is currently opened. Windows XP allows the OpenFile call to succeed. This compatibility fix forces the OpenFile API to fail if the file is already open. |
| CorrectSoundDeviceId | This compatibility fix makes calls to the waveOutOpen, waveOutGetDevCaps, midiOutOpen and midiOutGetDevCaps APIs with the uDeviceID equal to 0xFFFF, which was the constant for the Wave/MIDI Mapper under 16-bit windows. Under 32-bit Windows the constant is 0xFFFFFFFF. Applies to: Windows 95, Windows 98 |
| CorrectVerInstallFile | In Windows XP, due to a modification in the caching between MoveFile and DeleteFile API's, when the VerInstallFileW API is called, the short (8.3) filename gets set instead of the long filename. This compatibility fix corrects this problem. This issue may affect the installation of an application if an older version is still present. |
| CUASAppFix | Execute a custom CUAS command-line behavior change. |
| DelayAppDllMain | This compatibility fix attempts to alleviate loader lock issues by isolating application and system DLL initialization. |
| DelayApplyFlag | Apply either a KERNEL, USER or PROCESS flag when the specified DLL is loaded. Command line: dll.dll;flagType;0xValue |
| DelayDllInit | Some applications may use static DLLs, which could potentially issue calls to APIs before the application is ready. This compatibility fix provides a workaround for this behavior by causing a delay in the application’s static DLLs. This compatibility fix takes a command line containing a list of the DLLs affected. They will be loaded in the reverse order of the command line listing. Note that this compatibility fix is similar to InjectDll, which works with dynamically loaded DLLs. |
| DelayShowGroup | The DDE command ShowGroup does not operate synchronously, though it should. Often the application will resume before the group is visible, not a problem in and of itself, but this creates problems if the application calls DeleteGroup before the group is visible. In that case, Explorer will generate this lengthy message: "DirName refers to a location that is unavailable. It could be on a hard drive on this computer, on a network, or on a different computer on your home network. Check to make sure that the disk is properly inserted, or that you are connected to the Internet or home network, and then try again. If it still cannot be located, the information may have been moved to a different location." |
| DelayWin95VersionLie | Hooks the GetVersion and GetVersionEx APIs so that they return Windows 95 version credentials. This compatibility fix takes a command line number which is the number of calls by which to delay version lying. This is useful in cases where some parts of an application are version sensitive, but others are not. |
| DelayWinMMCallback | WaveOutOpen provides a callback mechanism, where very few APIs may be called. While inside this callback the entire Wave Out system is locked. It is very easy to deadlock the application. This compatibility fix catches all the WINMM callback data, and passes it to the application from the WM_TIMER callback which exists in the main application thread. |
| DeleteSpecifiedFiles | This is a general purpose compatibility fix which can delete any file in a given path and FileVersion. The path and the FileVersion are optional. The command line can contain FileName:Path;FileVersion,FileName1:Path1;FileVersion1 etc... E.g. Ole2.dll:system,MFC42.dll:;6082.0.0.945,Foo.dll:d:\program Files\DisneyInteractive;. etc.. 'system' implies the %windir%. '0' OR "" implies that the filename itself is a fully qualified path OR one has the option of giving the path separately...The same holds good for FileVersion also. It is optional. |
| DeprecatedServiceShim | This shim is written for the applications which are installing a service which had dependency on some service in the OS which has been deprecated. Catching CreateService APIs and stripping the deprecated dependency service from the lpDependencies parameter in the CreateService API before calling the original API. |
| DeRandomizeExeName | Some installation programs will create a randomly named executable when they are launched that is responsible for performing the actual setup. This compatibility fix takes a command line that specifies what random executable name is created, and upon creation, renames it to the new name specified on the command line. The command line is given as the source name followed by the desired name. For example: *.EXE;RANDOMSETUP.EXE. |
| DirectPlayEnumOrder | Some applications may expect the DirectPlay devices to be enumerated in a specific order. This compatibility fix enables the DirectPlay devices to enumerate in the expected order for applications that exhibit this behavior. Applies to: Windows 95, Windows 98 |
| DirectXTrimTextureFormats | Trim the list of textures returned by Direct3D for apps that don't handle long lists well. These lists are exposed by the driver, so there is no good general fix. |
| DirectXVersionLie | Hooks the DXDIAGN GetProp API so that it returns specified version parameters. The command line is given as the version in the following form: MAJORVERSION . MINORVERSION . LETTER, e.g. 9.0.c. |
| DisableAdvancedRPCrangeCheck | If set, rpcrt4.dll will not check advanced range check enabled in Windows Vista RPC stub. |
| DisableAdvanceRPCClientHardening | If set, rpcrt4.dll will disable advanced client side buffer consistency check. |
| DisableAnimation | Do not animate menus and listboxes. |
| DisableBoostThread | This compatibility fix disables the automatic boost threads get when they are unblocked. Windows 9X does this only on message objects, and not on synchronization objects. The COMMAND_LINE options are: +HigherMainThread or +LowerMainThread to change the main thread priority and +BoostMainThread to leave the automatic boost for the main thread |
| DisableFadeAnimations | Fade animations on buttons and other controls in Windows, causes application compatibility regressions with some applications that do not support this functionality. This compatibility fix disables fade animations for applications that do not support them. |
| DisableFilterKeys | This compatibility fix disables the Filter Keys Accessibility Option at application startup and restores it on termination of the application. |
| DisableKeyboardCues | Do not send Keyboard Cues messages. |
| DisableMaybeNULLSizeisConsistencycheck | If set, rpcrt4.dll will not check the size_is consistency when pointer is NULL. |
| DisableNDRIIDConsistencyCheck | If set, NDR will not check that an Interface Pointer returned in a call has the same IID as was requested by [iid_is]. NB: IID is always checked if /robust was set when compiling the IDL. |
| DisableNewWMPAINTDispatchInOLE | If this flag is set, OLE's modal message loop will use the pre-Vista WM_PAINT dispatch behavior. |
| DisableNX | This compatibility fix disables execution protection (NX) for a process. This is useful for applications that decide to execute from memory region marked with NX attribute (like stack, heap etc.). |
| DisableScreenSaver | This compatibility fix disables the screen saver at application startup and restores it on termination of the application. It's useful for DirectX applications that don't work well with an active screen saver. |
| DisableStickyKeys | This compatibility fix disables the Sticky Keys Accessibility Option at application startup, and re-enables it on termination of the application. |
| DisableThemeMenus | Because of the display themes in Windows, some applications may have unpredictable behavior when trying to detect and use the correct window settings. This compatibility fix temporarily disables the Windows menu theme functionality for applications that do not support it. |
| DisableThemes | Because of the display themes in Windows, some applications may have unpredictable behavior when trying to detect and use the correct window settings. This compatibility fix temporarily disables the Windows theme functionality for applications that do not support it. |
| DisableW2KOwnerDrawButtonStates | Windows 2000 introduced new owner-draw button states that can be sent to an application during WM_DRAWITEM messages. These owner-draw states are used in Windows XP as well. This compatibility fix removes those states for applications that are not expecting this information. |
| DisallowCOMBindingNotifications | If set, the process will not be notified of changes in the local machine bindings used by COM. |
| DuplicateHandleFix | DuplicateHandle was changed from Win2000 to always NULL the destination handle, even if errors were generated. This shim ensures that *lpTargetHandle is not modified if the duplication was not successful. |
| ElevateCreateProcess | Handles CreateProcess's ERROR_ELEVATION_REQUIRED by launching app elevated. |
| EmptyClipboardtoSet | For Apps calling SetClipboardData (CF_TEXT) without emptying the clipboard first. |
| EmulateBitmapStride | The GetObjectA API incorrectly calculates bitmap strides. The stride should be a multiple of 4. Note that the underlying bitmap or dibsection object is stored correctly, but the GetObject calculation is wrong. This compatibility fix is for Windows 2000-specific applications only. |
| EmulateCDFS | Windows 9x does not set the read-only flag on CD-ROM directories like Windows XP. This compatibility fix removes such flags from file operations and causes the application to ignore all sharing and write attributes to emulate Windows 9x. This compatibility fix also handles the substantial differences in the CD attributes between Windows 9x and Windows XP. Applies to: Windows 95, Windows 98 |
| EmulateClipboardDIBFormat | On Windows 9x when you copy a high color bitmap onto the clipboard, it always gets converted to a 24-bit DIB when the CF_DIB format is specified. On Windows XP this conversion doesn't happen. Some applications are only designed to handle 8-bit and 24-bit DIBs. This compatibility fix converts the high-color DIBs to 24-bit DIBs. |
| EmulateCreateFileMapping | The Windows 9x version of the CreateFileMapping API requires a SEC_COMMIT flag, while the Windows XP version does not. This compatibility fix adds the SEC_COMMIT flag for applications that expect it to be present. Applies to: Windows 95, Windows 98 |
| EmulateCreateProcess | This compatibility fix hooks the CreateProcessA API and ensures that all parameters have acceptable values for Windows XP's implementation of the API, which is more restrictive than Windows 9x. Applies to: Windows 95, Windows 98 |
| EmulateDeleteObject | This compatibility fix causes the Windows XP version of DeleteObject to return success, which is the Windows 9x behavior. Applies to: Windows 95, Windows 98 |
| EmulateDirectDrawSync | This compatibility fix hooks the mutex APIs that DirectDraw uses to synchronize exclusive mode access and ensures all synchronization events happen on the same thread. DirectDraw may produce unstable results if the exclusive mode is released from a thread other than the one that acquired it. Applies to: Windows 95, Windows 98 |
| EmulateDrawText | In Windows 9x, the DrawText API would accept out of range values and then convert them to acceptable values. This compatibility fix mimics that behavior for Windows XP. Applies to: Windows 95, Windows 98 |
| EmulateEnvironmentBlock | This compatibility fix causes Windows XP to return a significantly reduced environment block from the environment APIs. This reduces the chance of a buffer overrun causing corruption. |
| EmulateFindHandles | If an application calls the FindFirstFile API on a directory, and then attempts to remove that directory without first closing the FindFirstFile handle, the directory will be reported as being in use. The RemoveDirectory API call will return an ERROR_SHARING_VIOLATION error. This compatibility fix will force the FindFirstFile handle closed to ensure the directory is removed. The fix also ensures the FindFirstFile handles are valid before calling the FindNext or FindClose APIs. The FindFirstFile handle will not be forced closed unless the directory is empty. Applies to: Windows 95, Windows 98 |
| EmulateGetCommandLine | The behavior of GetCommandLine differs from Windows 9x to Windows XP. For example, if a user enters the command line: E:\temp\test.exe -dm -cdrom, Windows XP's GetCommandLine() returns: test.exe -dm -cdrom. Windows 9x's GetCommandLine() returns: E:\TEMP\TEST.EXE -dm -cdrom. Applies to: Windows 95, Windows 98 |
| EmulateGetDeviceCaps | This compatibility fix checks for known issues with the GetDeviceCaps API between the Windows 9x and Windows XP versions, and corrects them where possible. Applies to: Windows 95, Windows 98 |
| EmulateGetDiskFreeSpace | This compatibility fix causes the Windows XP version of GetFreeDiskSpace to return values similar to those returned by Windows 9x. It hooks the GetDiskFreeSpace API and determines the true free space on FAT32/NTFS systems. If the free space is larger than 2GB, the compatibility fix will return 2GB as Windows 9x would return. If it is smaller than 2GB, it converts the sector geometry to emulate Windows 9x. Applies to: Windows 95, Windows 98 |
| EmulateGetProfileString | The GetProfileString API in Windows 9x stripped trailing white space (including tabs) from the end of INI file strings. In Windows XP, the full line is returned, including the white space at the end. This can sometimes result in bitmaps failing to load because the filename is invalid. This compatibility fix causes the Windows XP version of the GetProfileString API to emulate the behavior of the Windows 9x version. Applies to: Windows 95, Windows 98 |
| EmulateGetStdHandle | Normally, when a process is created on Windows XP, the hStdInput, hStdOutput, and hStdError members of the STARTUPINFO structure are set to NULL. Some applications may check these handles and send error messages. This compatibility fix can be used in this case to send appropriate handles and prevent program termination. |
| EmulateGetStringType | Emulate Windows 2000 GetStringType[W, ExW, A, ExA]. |
| EmulateGetUIEffects | If on a TS session, force SPI_GETUIEFFECTS to FALSE (default) or TRUE |
| EmulateHeap | This compatibility fix emulates the functionality of the Windows 9x heap manager. It is a full implementation of the Windows 9x heap manager ported to Windows XP. Applies to: Windows 95, Windows 98 |
| EmulateJoystick | This compatibility fix will retrieve JOYCAPS data for a given joystick number and copy the number of requested bytes to an application structure. If the return value is an error, then this compatibility fix will fill the JoyCaps structure with the same values from Windows 9x. Applies to: Windows 95, Windows 98 |
| EmulateLZHandles | This compatibility fix intercepts all of the LZ API calls and either increments or decrements the handles so that a valid handle (from the application's perspective) is always greater than 0 instead of greater than or equal to 0. This compatibility fix applies to applications that treat a handle value of zero as an error. Windows 9x never returned handles of zero, but this is a possibility on Windows XP. |
| EmulateMissingEXE | This compatibility fix hooks the CreateProcess and WinExec APIs to spoof executables that need redirection such as Start.exe, ScanDskW.exe, Defrag.exe, Rundll32.exe, Control.exe, WinHelp.exe, and PBrush.exe. Applies to: Windows 95, Windows 98 |
| EmulateOldPathIsUNC | This compatibility fix reverts shlwapi PathIsUNC to old behavior. |
| EmulatePlaySound | If an application calls PlaySound with a SND_LOOP flag, the sound plays continuously until PlaySound is called with a NULL sound name. Windows 9x will automatically stop the sound if a different sound is played. This compatibility fix will catch all PlaySound calls, remember the current sound and automatically stop it if a different sound is to be played. Applies to: Windows 95, Windows 98 |
| EmulatePrinter | This compatibility fix corrects a variety of differences that occur between the printer routines in Windows 9x and Windows XP. Most of the issues deal with the EnumPrinters API, and the different behavior of this API between Windows 9x and Windows XP. Applies to: Windows 95, Windows 98 |
| EmulateSlowCPU | This compatibility fix modifies the return values of QueryPerformanceCounter and QueryPerformanceFrequency in order to emulate those expected from performance checking routines to emulate slower processors. If +timeGetTime is specified as a command line, timeGetTime will delay slightly. Applies to: Windows 95, Windows 98 |
| EmulateSortingServer2008 | This compatibility fix enables Windows Server 2008 sorting behavior for the CompareString, LCMapString, FindNLSString and IsNLSDefinedString APIs. |
| EmulateSortingVista | This compatibility fix enables Windows Vista sorting behavior for the CompareString, LCMapString, FindNLSString and IsNLSDefinedString APIs. |
| EmulateSortingWindows61 | This compatibility fix enables Windows 7 and Server 2008 R2 sorting behavior for the CompareString, LCMapString, FindNLSString, IsNLSDefinedString and GetNLSVersion APIs. |
| EmulateTextColor | This compatibility fix compensates for some incompatibilities between the Windows 9x version of the GDI APIs and the versions found in Windows XP. In particular, this compatibility fix relates to the COLORREF flags used for text color. Applies to: Windows 95, Windows 98 |
| EmulateToolHelp32 | This compatibility fix addresses two separate issues with the PROCESSENTRY32 API. The first converts the standard Windows XP usage of the szExeFile field from the image name to the Windows 9x style, which includes the full path and executable name. The second issue addressed is that of the cntUsage field, which on Windows 9x is always non-zero, and on Windows XP is always zero. Applies to: Windows 95, Windows 98 |
| EmulateUSER | Fixes for known API differences between Win9x and NT: SetWindowsHookEx, SetWindowLong, RegisterClass, ChangeDisplaySettings/ChangeDisplaySettingsEx, ToAscii/ToAsciiEx, GetMessage/PeekMessage, ShowWindow. Also persists palette state through mode changes. Applies to: Windows 95, Windows 98 |
| EmulateVerQueryValue | This compatibility fix permits a NULL buffer to be passed to VerQuery functions. In Windows XP this technique is considered obsolete as it was corrected in the API. Applies to: Windows 95, Windows 98 |
| EmulateWriteFile | Windows 9x permitted a NULL buffer to be passed to the WriteFile API, with the assumption being that a series of zeroes should be written. Windows XP will fail on this call when a NULL buffer is passed. This compatibility fix emulates the behavior of WriteFile on Windows 9x when it receives a NULL buffer. Applies to: Windows 95, Windows 98 |
| EnableAppConfig | Use this flag if you want to let the app config overwrite the publisher's config. |
| EnableDEP | This compatibility fix enables data execution protection (DEP) for a process. This is useful for applications that decide to execute from memory region marked with NX attribute (like stack, heap etc.). |
| EnableLegacyExceptionHandlinginOLE | If set, ole32 will revert back to the old exception handling behavior. |
| EnableLegacyExceptionHandlingInRPC | Enable legacy RPC exception handling |
| EnableLegacyLoadTypeLibForRelativePaths | If set, oleaut32 will use the legacy search logic for relative type library file names instead of the safe search path when calling LoadTypeLib. |
| EnableLegacyNTFSFlagsForDocfileOpens | If set, APIs that open OLE Structured Storage docfiles for writing (StgOpenStorageEx, etc.) will revert to passing FILE_SHARE_WRITE when calling CreateFile, even if the STGM_SHARE_DENY_WRITE flag is specified. |
| EnableRestarts | In Windows 9x applications could restart the computer by calling the ExitWindowsEx API. Windows XP requires the application to run with adequate security privileges to successfully call the ExitWindowsEx API. This compatibility fix enables an application to call the ExitWindowsEx API with correct security privileges. Applies to: Windows 95, Windows 98 |
| EnlargeGetObjectBufferSize | For apps calling GetObjectA() with cbBuffer is less than sizeof(BITMAP). |
| ExtraAddRefDesktopFolder | Some applications obtain the shell desktop folder and invoke the Release() method too many times, resulting in the object being destroyed prematurely. This compatibility fix invokes the AddRef() method on the desktop folder returned by the SHGetDesktopFolder function to counteract the erroneous Release(). |
| ExtractAssociatedIcon | Some applications that use the ExtractAssociatedIcon API call do not handle the 32bpp icons correctly. This compatibility fix forces the icon to revert to an 8bbp icon. |
| FailCloseProfileUserMapping | Some applications require that the CloseProfileUserMapping API call fail. On Windows XP, there is no way for this API to fail. This compatibility fix causes the call to fail. Note that this issue is machine dependent |
| FailGetStdHandle | Some applications expect a call to GetStdHandle to fail. This compatibility fix causes all calls to the GetStdHandle API to fail. |
| FailObsoleteShellAPIs | Some applications call obsolete private shell32 API's which are no longer supported. This compatibility fix implements those functions with stubs that fail. Functions handled in this manner are the FileMenu_* functions plus those which were retired between Windows XP and Windows Vista. |
| FailOpenFile | This compatibility fix causes the OpenFile API to fail on specific files. The file names to be failed are supplied on the command line when this compatibility fix is used. |
| FailRemoveDirectory | This shim fails calls to RemoveDirectory() when called with a path matching the one specified in the shim command-line. Only a single path is currently supported. The path can contain environment variables, which will be expanded when the shim attaches. You should specify the exact path against which you wish to match, i.e., partial paths are not supported. |
| FakeLunaTheme | MS Office 2003 applications rely on the filename of the current theme to determine their rendering mode. This compatibility fix causes the default 'aero' theme in Windows Vista to appear to be the default 'luna' theme of Windows XP. |
| FakeThemeMetrics | Some application’s menus may not behave correctly when the system color for menu does not match the system color for button face. This compatibility fix forces a match between the menu and button colors. |
| FileVersionInfoLie | This compatibility fix hooks the GetFileVersionInfo and GetFileVersionInfoSize APIs to return the version block for DirectX 6.1 components. The command line input allows you to select specific filenames and resources to use instead of the defaults. Applies to: Windows 95, Windows 98 |
| FilterNetworkResources | Remove certain network providers to fix apps that depend on Microsoft Windows Network being either the only provider, or the first in the list. |
| FixSectionProtection | Some applications execute from sections not marked for execution. This compatibility fix patches the section protection for such image sections. Command line for this shim has the following format: COMMAND_LINE: SECTION_INFO |
| FixServiceStartupCircularDependency | A service startup circular dependency occurs when two or more installed services depend upon each other to start. That is, service ‘A’ cannot start until service ‘B’ starts, but service ‘B’ cannot start without service ‘A’ running. This compatibility fix attempts to counter this behavior. |
| Force640x480 | This compatibility fix sets the screen display to 640x480 pixels when the process starts as a temporary resolution change. |
| Force640x480x16 | This compatibility fix sets the screen display to 640x480 pixels with 16-bit color when the process starts as a temporary resolution change. |
| Force640x480x8 | This compatibility fix sets the screen display to 640x480 pixels with 8-bit color when the process starts as a temporary resolution change. |
| Force8BitColor | This compatibility fix forces the color depth of the display to use 8-bit color (256 colors) when the process starts. |
| ForceAdminAccess | This compatibility fix addresses issues that may be encountered when an application uses various API calls to verify if the current user is part of the Administrators group. |
| ForceAnsiGetDisplayNameOf | This compatibility fix forces the IShellFolder::GetDisplayNameOf API to return an ANSI string as Windows 98 would, instead of a Unicode string as Windows XP would return. Applications that use the GetDisplayNameOf API to get the path for the Desktop or the Start Menu folders that fail to check the uType flag to see if it is Unicode will get an unreadable path name. Applies to: Windows 95, Windows 98 |
| ForceAnsiWindowProc | This compatibility fix intercepts calls made to the GetWindowLongA API and redirects them to the GetWindowLongW API to get the WindowProc address. This is because in Windows XP, the GetWindowLongA API does not return the "Window Procedure" address directly and the application has to use the CallWindowProc API to call the window procedure. This compatibility fix also works for the Dialog procedure. |
| ForceAppendMenuSuccess | In Windows XP, applications are restricted from modifying the system menu. Instead, each application gets a separate copy of the system menu. Some applications may try to get a handle to the real system menu and attempt to modify it. This compatibility fix makes the AppendMenu API return TRUE all the time, since there is no way to tell if an HMENU is the handle to the real system menu or simply a handle to the local copy of the system menu. |
| ForceApplicationFocus | Some applications may lose focus and are unable to regain it due to Windows XP window manager changes. This compatibility fix forces new windows to receive focus and move to the foreground. |
| ForceAVIWindow | Some apps that use MCI to play their AVIs send messages in an order that causes mciavi32 to continually re-open the window it's supposed to be playing to. This compatibility fix filters the calls made to MCI and cause them to be executed in the existing target window. |
| ForceCDStop | This compatibility fix addresses the problem of contention with the CD drive. Some applications may try to access the CD even if they are playing a movie or sound via MCI. Note that this compatibility fix assumes the application is running off of a single CD-ROM drive at a time. Applies to: Windows 95, Windows 98 |
| ForceCoInitialize | Some multimedia applications on Windows 9x would call AVIFileInit without first calling CoInitialize. This would work in Windows 9x but will fail on Windows XP. This compatibility fix will call CoInitialize on CoCreateInstance if it hasn't already been called. Applies to: Windows 95, Windows 98 |
| ForceDefaultSystemPaletteEntries | In Windows 9x, DirectDraw manipulates the palette directly without using GDI, while on NT it uses GDI. Therefore, if an application mixes calls to GDI and DirectDraw palette operations, they will get different results from Windows 9x to NT. This compatibility fix attempts to isolate GDI palette operations from DirectDraw in order to more closely emulate Windows 9x behavior. |
| ForceDirectDrawEmulation | Some applications don't handle certain aspects of hardware acceleration correctly. For example, they may assume that the pitch is always double the width in 16bpp displays, which is not necessarily the case. This compatibility fix forces DirectDraw into emulation mode where the pitch is directly scaled to the width. |
| ForceDirectDrawWait | DirectDraw Blt and Lock calls may encounter device busy situations more frequently on Windows XP than was common on Windows 9x. This compatibility fix adds WAIT flags to Blt and Lock calls to avoid application failure due to device busy scenarios. |
| ForceDisplayMode | This compatibility fix applies to applications that require a specific resolution to run. It takes a command line to specify the resolution. The command line options must specify the width (pixels), height (pixels), and color depth (bits). If the desired resolution is omitted, the current system resolution will be used. For example, if you specify a setting of 1024,768,16 the application will use a setting of 1024x768 at a color depth of 16 bits. If you were to specify the command line of ,,16, the application would use the current system resolution but would change to 16-bit color depth. |
| ForceDXSetupSuccess | Some applications built to use older version of DirectX may encounter problems on Windows XP when they call the LoadLibrary or GetProcAddress functions of DSETUP.DLL. This compatibility fix intercepts calls made to these APIs and forces them to return success. Applies to: Windows 95, Windows 98 |
| ForceKeepFocus | This compatibility fix ensures that when a window is destroyed, another visible window from the current application is ready to take its place. Otherwise, the application can lose focus altogether, which is inconsistent with Windows 9x behavior. Applies to: Windows 95, Windows 98 |
| ForceMessageBoxFocus | This compatibility fix intercepts calls made to the MessageBox API and adds MB_SETFOREGROUND style. This effectively forces the resulting MessageBox to be the foreground window. |
| ForceSeparateVDM | Add the CREATE_SEPARATE_WOW_VDM to CreateProcess calls, so that a separate VDM process is always created. |
| ForceShellLinkResolveNoUI | This compatibility fix resolves an issue that some applications may encounter where a call to IShellLink::Resolve may generate a dialog box even when the SLR_NO_UI flag is set in the parameters. Applies to: Windows 95, Windows 98 |
| ForceSimpleWindow | This compatibility fix adjusts the CreateWindow API parameters to make only very simple windows. This is useful for fixing issues where an application passes combinations of styles that had special meaning on Windows 9x, but are unsupported on Windows XP. |
| ForceTemporaryModeChange | This compatibility fix ensures that any mode changes the application makes are temporary in nature. When this fix is applied, all mode changes will be reset when the application terminates. |
| ForceWorkingDirectoryToEXEPath | This compatibility fix sets the working directory to match the executable path when using the IShellLink SetWorkingDirectory and SetPath APIs. |
| GenericInstaller | This flag indicates a match against a class of installers. |
| GetDiskFreeSpace2GB | If set, GetDiskFreeSpace results will be scaled for applications that do not understand > 2GB free space. |
| GetShortPathNameNT4 | In NT 4, GetShortPathName did not care if the file existed |
| GetVolumeInformationLie | This shim will strip out specified flags from the lpFileSystemFlags parameter on the return from GetVolumeInformationA/W. This allows apps that improperly handle compression or encryption to be lied to that the filesystem does not support that feature. |
| GiveupForeground | In Windows XP, we have changed foreground semantics to stop foreground focus stealing by one app if another application is active. However, this has caused a few application compatibility bugs. This application compatibility flag is used to enable the old foreground focus behavior for these bugs. |
| GlobalMemoryStatus2GB | This compatibility fix modifies the pagefile and physical memory status so that it reports available pagefile+avail physical memory not more than 2GB. Applies to: Windows XP |
| GlobalMemoryStatusLie | This compatibility fix modifies the memory status structure so that it reports values similar to those that Win9x would have reported. Applies to: Windows 95, Windows 98 |
| GrabMatchingInformation | Many of the application compatibility strategies in Windows XP depend on “matching information”, which will help to identify an application in need of a particular fix. This compatibility fix will go through the current process' directory and each spawned process' directory and produce matching information in a file named matchinginfo.txt on the desktop. |
| HandleAPIExceptions | This compatibility fix addresses issues with APIs that may not gracefully handle receiving bad parameters. Currently, this works with the BackupSeek, CreateEvent, and GetFileAttributes APIs. Applies to: Windows 95, Windows 98 |
| HandleBadPtr | Some APIs removed IsBadReadPtr from their parameter validation so applications that used to get away with passing bad pointers now AV when they try to use them. This shim reverts the code to using the IsBadPtr APIs so that applications continue to work. |
| HandleDBCSUserName | Applications fail when its app path name has high ASCII characters. This shim wraps the app path with double quotes at GetCommandLineA. If app path is double quoted, the application can sometimes handle DBCS characters. |
| HandleDBCSUserName2 | Some old non-DBCS applications handle characters by byte rather than by character. If the application calls a DBCS-enabled Win32 API (e.g. CharNextA), it will break the DBCS character at the second byte. This compatibility fix is used to disable the DBCS feature for CharNextA if the string is a DBCS user profile. |
| HandleEmptyAccessCheck | AccessCheck used to return STATUS_SUCCESS if the DesiredAccess flag was 0, it now returns STATUS_FAILURE |
| HandleRegExpandSzRegistryKeys | This compatibility fix intercepts calls to the RegQueryValueEx APIs for REG_EXPAND_SZ registry keys and converts them to REG_SZ by expanding the embedded environment strings. Applies to: Windows 95, Windows 98 |
| HandleWvsprintfExceptions | This compatibility fix provides a facility to convert the argument list from LPSTR into VA_LIST. Some native Windows 9x applications use LPSTR instead of VA_LIST. Without properly checking the return value, these applications may assume that it is safe to use Wvsprintf, but in Windows XP, this may cause an access violation. This compatibility fix takes one command line: "arglistfix" (case insensitive). Applies to: Windows 95, Windows 98 |
| HardwareAudioMixer | Set the Multimedia APIs to report the audio hardware information. |
| HeapClearAllocation | This compatibility fix will clear out every heap allocation for the application with zeroes. |
| HeapDelayLocalFree | This compatibility fix will delay calls to LocalFree. This may help applications that are trying to free heap memory using LocalFree before all activities have been concluded. |
| HeapForceGrowable | Zero the maximum size of a heap on HeapCreate for applications that didn't give themselves enough space. |
| HeapIgnoreMoveable | Remove the GMEM_MOVEABLE flag if GlobalAlloc fails. The NT heap manager has a 64K limit on the number of moveable blocks it allocates. This compatibility fix simply removes the moveable flag if the allocation fails. This compatibility fix is superseded by EmulateHeap. |
| HeapLookasideFree | This compatibility fix addresses potential problems with applications that may need help with heap memory free calls. The fix also checks to insure that all free calls are made to the correct heap. |
| HeapLookasideFreeKernel32 | Similar to HeapLookasideFree, but directly targets problematic components which directly import Kernel32!HeapAlloc or HeapFree. |
| HeapPadAllocation | This compatibility fix allocates additional memory for every allocation made through the HeapAlloc API. This fix is command line driven, but 256 is the default amount to add. |
| HeapValidateFrees | This compatibility fix validates the calls to the HeapFree API to ensure the pointer is in the heap that it was allocated from. |
| HideCursor | ShowCursor will display the cursor if the count is >= 0, this shim will force ShowCursor to act as a toggle rather than a count. In other words it forces the count to be 0 or -1. |
| HideDisplayModes | Display modes are enumerated differently for Windows XP than they were on Windows 9x. This may cause issues for some applications when they attempt to list all of the supported display modes and store that information in a fixed-length buffer. This compatibility fix reduces the number of display modes reported to mimic the behavior of Windows 9x. Applies to: Windows 95, Windows 98 |
| HideTaskBar | In Windows XP, the WS_EX_CLIENTEDGE window style causes applications to run with the taskbar still visible. This may not be the expected behavior for some applications running in full screen mode. This compatibility fix simply removes the flag and enables the application to correctly use full screen mode. |
| HighDpiAware | Mark an application as High DPI aware. Application will not be scaled by DWM. |
| HpatOptOutForNonOsBinariesFlag | If set, we will not allocate HPAT for non-Os binaries (binaries under \Systemroot). |
| IgnoreAltTab | Many Windows 9x applications were not programmed to respond to task switches caused by pressing Alt-Tab, the Windows key, Ctrl-Esc, or Alt-Esc. This compatibility fix disables those key presses. Note that Ctrl-Alt-Del cannot be ignored in Windows XP. |
| IgnoreCoCreateInstance | Some applications test for the existence of a component using CoCreateInstance. If that component is incompatible, it may crash the application. This compatibility fix fails the CoCreateInstance call, thereby allowing an application to gracefully handle the error. The command line is a semi-colon delimited list of class ids of the form {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}. |
| IgnoreCRTExit | Prevent CRT shutdown routines from running. |
| IgnoreDebugOutput | This compatibility fix causes the application to disregard any output sent to the OutputDebugString API. This type of debug information is generally not useful to an end-user and will only serve to slow application performance under Windows XP. |
| IgnoreException | This compatibility fix causes the application to ignore certain specified exceptions. By default, the only exceptions ignored are privileged mode instructions, but any exception can be ignored with this compatibility fix. Applies to: Windows 95, Windows 98 |
| IgnoreFloatingPointRoundingControl | Before floating point sse2 support in C runtime library, the rounding control request was being ignored which would use round to nearest option by default. This shim ignores the rounding control request to support applications relying on old behavior. |
| IgnoreFontQuality | Anti-aliasing is now on by default, so any app using PROOF_QUALITY will now get an anti-aliased font. If the font is combined with a color-key, this will cause undesirable looking text. |
| IgnoreFreeLibrary | Some applications free DLLs that are still in use. If this occurs, and the offending application attempts to make a call to an exported function, the call fails with an access violation. This compatibility fix ignores calls to the FreeLibrary API using a list of DLLs to ignore. For example: USER32.DLL;GDI32.DLL. |
| IgnoreHungAppPaint | This compatibility fix intercepts calls to the RegisterClass API and changes the brush type to HOLLOW_BRUSH. This prevents the USER process from painting over application windows if it detects they stopped responding. |
| IgnoreLoadLibrary | This compatibility fix will prevent specified DLLs from being loaded by the LoadLibrary API. This may be useful for applications that have fallback mechanisms for features that are not supported. In addition, it reduces the error mode so library problems won't cause the system to generate an error dialog. Applies to: Windows 95, Windows 98 |
| IgnoreMCISTOP | This compatibility fix intercepts calls made to the mciSendCommand API and ignores any MCI_STOP commands. MCI_STOP on Windows 9x has a relatively fast response time, but on Windows 2000 and Windows XP can take up to several seconds to respond. Applications that use this API in time-sensitive areas may experience performance issues. |
| IgnoreMessageBox | This compatibility fix intercepts calls to the MessageBox API and, based on the supplied command line, prevents the message box from being displayed. Many applications display a message box with debugging or other extraneous content that can be confusing to users. These are normally the result of differences between Windows 9x and Windows XP. |
| IgnoreMSOXMLMF | This compatibility fix will just ignore the registered MSOXMLMF and fail the CoGetClassObject for its CLSID. |
| IgnoreNoModeChange | This compatibility fix causes Windows XP to ignore irrelevant mode change requests from the application. This will prevent the mode uniqueness value from changing. If the mode uniqueness value changes, DirectDraw will reset all its objects even if the new mode is identical to the current mode. |
| IgnoreOemToChar | Installation programs that call the OemToCharA API on a string that is already ANSI may cause problems with DBCS user names. This compatibility fix ignores the call if it sees the temporary directory in ANSI format within the string. |
| IgnoreOleUninitialize | Some applications may call the ole32!OleUnitialize function in their DllMain. This worked on Windows 2000, but is no longer supported on Windows XP. This compatibility fix causes calls to ole32!OleUnitialize to be ignored. |
| IgnoreScheduler | This compatibility fix is used to handle scheduling issues that may arise with applications, such as threads suspending or resuming themselves. It also normalizes all thread and process priorities that may starve other threads or processes. Applies to: Windows 95, Windows 98 |
| IgnoreSysColChanges | This compatibility fix prevents system color changes made by applications that are not restored correctly after exit. |
| IgnoreTAPIDisconnect | Some TAPI applications do not correctly handle a disconnect message. This compatibility fix removes the disconnect message from the queue. |
| IgnoreVBOverflow | Some VB apps try to store win32 handles in WORD size variables. On Win9x this works because most handles are 16-bit. However, on NT, the VB type checking code throws a "Runtime Error 6". The shim intercepts the type checking code and ignores the check. |
| IgnoreWM_CHARRepeatCount | The app uses CallWindowProcA to send WM_CHAR messages with bogus lParam values. Intercept these and replace the LOWORD(lParam) repeat count with 1 |
| IgnoreZeroMoveWindow | Some applications need to have zero width MoveWindow calls filtered out or it will fail an internal check. |
| InjectDll | Some applications may use dynamically loaded DLLs, which could potentially issue calls to static DLLs before the application is ready. This compatibility fix provides a workaround for this behavior by preloading the required static DLLs for the application. This compatibility fix takes a command line containing a list of the DLLs affected. They will be loaded in the order of the command line listing. This compatibility fix is similar to DelayDllInit, which works with statically loaded DLLs. |
| KeepWindowOnMonitor | This compatibility fix forces all windows to display (centered) on the correct monitor. It can be used to prevent windows from being moved off screen |
| LazyReleaseDC | Some applications written for Windows 9x may expect to be able to use a device context that has already been released through a call to the ReleaseDC API. This compatibility fix delays the device context release by one call. |
| LimitFindFile | This compatibility fix limits the DEPTH, BRANCH, or number of FILES returned by a FindFile search. Limits fully qualified paths and optionally relative paths. The compatibility fix can optionally return short filenames. Command line usage is any combination of "DEPTH=#", "BRANCH=#", "FILES=#", "SHORTFILENAMES", "LONGFILENAMES", "LIMITRELATIVE", or "ALLOWRELATIVE". |
| LoadComctl32Version5 | This compatibility fix intercepts calls to the CreateWindow, DialogBox, and CreateDialog routines in order to ensure that Comctl32 version 5 is loaded. This means that applications will launch Comctl32 version 5 when linking to Shell32 and not by explicitly calling the API for their application. |
| LoadLibraryCWD | This compatibility attempts to emulate legacy behavior by loading from the current directory first. |
| LoadLibraryRedirectFlag | If set, the shim engine will redirect loading of locally shipped versions of system DLLs to their inbox versions. |
| LocalMappedObject | Force all Global named file mapping objects into the Local namespace |
| LowerThreadPriority | This compatibility fix lowers thread and process priority if they are very high. |
| MapMemoryB0000 | Some applications require that a block of memory be mapped at B0000 as it is on Windows 9x. This compatibility fix will map a block of memory at the B0000 address for the application. Applies to: Windows 95, Windows 98 |
| MoveIniToRegistry | Applications may still be storing data in INI files instead of using the registry. This is a generic compatibility fix to move INI data into the registry. The compatibility fix is command line driven. |
| MoveToCopyFileShim | This shim hooks MoveFileA and MoveFileW API mostly used by set ups and instead copies the file. Using copy will avoid moving the security descriptor of the files to the destination and the files will be assigned the default descriptor of the destination folder. |
| MoveWinInitRenameToReg | This compatibility fix intercepts calls made to ExitWindowsEx, waits for DLL_PROCESS_DETACH, and then moves the contents of the [Rename] section of wininit.ini into the registry via MoveFileEx(). |
| NoGdiBatching | Turn GDI batching off. |
| NoGDIHWAcceleration | If set, the process will opt out of GDI hardware acceleration. |
| NoGhost | No window ghosting for this application. |
| NoPaddedBorder | Windows of this application will not get padded borders (they will get WS_EX_NOPADDEDBORDER). |
| NoShadow | Don't apply windows shadow for this app. |
| NoTimerCoalescing | If set, the process will opt out of WM_TIMER coalescing. |
| NoVirtualization | This compatibility fix turns off file and registry virtualization for this application. |
| NullHwndInMessageBox | If an application passes an invalid window handle to the MessageBox API, and the lower 16 bits of that handle are NULL, Windows 9x treats it as the desktop (because window handles are only 16 bit on Windows 9x). On Windows XP, since the full 32 bits are used, the call to MessageBox would fail. This compatibility fix intercepts the MessageBox API and determines if the window handle that was passed is a valid handle. If it is not valid, it is set to NULL. |
| Ole32ValidatePointers | If this flag is set, ole32.dll will use the IsBadReadPtr family of functions to verify pointer arguments in the standard COM APIs. This was the default behavior on all platforms prior to Whistler. |
| OpenDirectoryAcl | Gives builtin\USERS full permission to the directory specified on the command line. |
| OpenGLEmfAware | Mark an application as OpenGL EMF aware. |
| PaletteRestore | Applications may be unable to correctly track palette changes across a mode change. This issue typically manifests itself as color corruption. It's fairly easy for an application to run into this problem, because all palette state is lost during a mode change on Windows XP. This compatibility fix helps the application to track all palette changes and maintain them through mode changes. |
| PopulateDefaultHKCUSettings | This compatibility fix populates HKEY_CURRENT_USER with the necessary default registry settings for the application. This will enable various applications that write these keys at install time to run for other users. |
| PreInitApplication | This compatibility fix pre-initializes applications that would otherwise attempt to initialize them by copying files or registering DLLs during first run. |
| PreInstallDriver | This compatibility fix preinstalls drivers for applications that would otherwise attempt to install/start them during first run. |
| PrinterIsolationAware | If set, the process will opt into Printer Isolation Mode. |
| ProcessPerfData | Some applications read the process performance data registry value to determine if they are the only instance of the application running at any one time. This value was locked down, so that processes that try to open it for write will fail. Handle the failure case and fake the value so that the application thinks it is the only instance. |
| ProfilesEnvStrings | Some applications use the USERPROFILE environment variable to find the location of the user’s directory. This would limit the usage of the application to only the user that performed the install. This compatibility fix returns the ALLUSERSPROFILE instead, so that the application will be available for all users after install. Applies to: Windows 95, Windows 98 |
| ProfilesGetFolderPath | This compatibility fix applies to applications that use the shell32 SHGetFolderPath APIs to find the Start Menu, Programs, or Startup directories. This compatibility fix returns the common path so that the application will be available for all users after install. Applies to: Windows 95, Windows 98 |
| ProfilesRegQueryValueEx | Some applications attempt to directly read the "Shell Folders" values in HKEY_LOCAL_MACHINE or HKEY_CURRENT_USER, which would return the folders for the user performing the install. This compatibility fix returns the common path so that the application will be available for all users of the computer after install. Applies to: Windows 95, Windows 98 |
| PromoteDAM | Opt legacy applications into DAM notifications. |
| PropagateProcessHistory | This compatibility fix sets the __PROCESS_HISTORY environment variable enabling any child processes to look in their parent's directory for matching information. This is typically needed when a 32-bit unpacker creates a temporary executable that needs to have a compatibility fix applied to it. |
| ProtectedAdminCheck | Some applications perform non-standard admin checks such as calling GetTokenInformation to retrieve TokenGroups then compare the group SID with S-1-5-32-544. This will generate false positive for Protected Admins since they have that SID, although deny-only. This shim is intended to fix such problems. |
| RecopyExeFromCD | This compatibility fix accepts a command line that tells it to re-copy a file from the CD. Some applications truncate some NULL bytes from an executable image. This worked under Windows 9x because there was no image validation. However, Windows XP performs image validation on files and will fail if the image size changes. |
| RedirectBDE | This compatibility fix redirects writes to c:\pdoxusrs.net to help fix legacy Borland Database Engine applications. |
| RedirectCRTTempFile | This compatibility fix intercepts failing CRT calls that attempt to create a temporary file at the root of the volume and redirects them to a temporary file in the user's temp directory. |
| RedirectDBCSTempPath | This compatibility fix redirects the DBCS temp path to the SBCS temp path. With a DBCS user name logon, the temp path contains a DBCS path. Some applications handle a DBCS temp path correctly. |
| RedirectDefaultAudioToCommunications | This shim is to fix applications that request the default audio device but are better suited for the default communications device. |
| RedirectEXE | This compatibility fix calls WinExec on the passed command line, and then terminates the caller process. The command line can contain any environment variables that need to be passed to the executable. If the command line starts with a '+', the app directory is added to the path. By default, the command line of the shimmed process is passed to the redirected child process. If the command line includes the option "-ParameterToDelete:", the listed parameter is filtered out of the redirected child's command line. |
| RedirectHKCUKeys | The purpose of this shim is to duplicate the newly created HKCU keys to other users HKCU, namely HKUS{SID}, at the end of the process. Command line parameters are used to restrict the subtrees to detect the new key creation. This is a generic mitigation to the UAC Over-The-Shoulder installation that creates HKCU keys which are required by the app at runtime. |
| RedirectMP3Codec | This compatibility fix is for applications that CoCreateInstance an old MP3 Codec directly and use it as a filter in a DirectShow graph. This is an unsupported way of getting at the filter. The fix intercepts the CoCreateInstance for the missing filter and redirects it to a supported one. |
| RedirectShortCut | The purpose of this shim is to redirect all the shortcuts created by a set up according to the place where they are created. This is to take care of problems where a setup which runs elevated under Toby account in Vista places all the shortcuts with regards to the elevated users context. Here is what we do: For Start Menu: In case of Start Menu shortcuts, we create shortcuts and put it in shortcut of for all users (\ProgramData\Microsoft\Windows\Start Menu) For Desktop or Quick Launch: We find what all users are there in the box and place shortcut in each individual users desktop or quick launch. |
| RedirectWindowsDirToSystem32 | Some applications may have difficulty adjusting to the differences in folder structure between Windows 9x and Windows XP. For applications that use the GetWindowsDirectory API call, this compatibility fix will intercept those calls and redirect them through the GetSystemDirectory API instead. |
| RegisterAppRestart | This shim calls RegisterApplicationRestart so the app can restart after a user signs out and back in. The shim reference's COMMAND_LINE attribute can specify the command line arguments to use when registered. If the token " |
| RelaunchElevated | This shim causes the process to which it is applied to try to relaunch itself as an elevated user. It is intended to be used in cases where it is difficult to target the parent process with the ElevateCreateProcess shim. An example is that it is difficult to apply ElevateCreateProcess to self-extracting archives because they can have their name mangled when downloaded by a web browser. The RelaunchElevated can instead be applied to the extracted executable that requires elevation. |
| RemoveBroadcastPostMessage | This compatibility fix applies to applications that may not correctly handle broadcast messages to their window process. The compatibility fix will intercept and remove any such broadcast message. |
| RemoveDDEFlagFromShellExecuteEx | Some applications call ShellExecute which in turn calls ShellExecuteEx. One of the flags in the SHELLEXECUTEINFO structure is SEE_MASK_FLAG_DDEWAIT. This flag gets set by ShellExecuteEx as a default whenever ShellExecute is called. When the flag gets passed, it can sometimes cause synchronization problems. This compatibility fix resolves the issue by removing the SEE_MASK_FLAG_DDEWAIT flag. |
| RemoveInvalidW2KWindowStyles | This compatibility fix removes any invalid window styles from calls made to the CreateWindowEx API. Invalid window styles in this case refer to any window style not supported by Windows XP. |
| RemoveIpFromMsInfoCommandLine | This compatibility fix provides a modified version of CreateProcess, which will remove IP from the MsInfo command line. This will cause MsInfo on Windows XP behave as it did on Windows NT 4 (with the option to have MsInfo print a blank page instead of showing system info). |
| RemoveNoBufferingFlagFromCreateFile | This modified version of the kernel32!CreateFile* APIs prevents an application from using the FILE_FLAG_NO_BUFFERING flag if the application doesn't use it correctly. |
| RemoveOverlappedFlagFromCreateFile | This modified version of the kernel32!CreateFile* APIs prevents an application from using the FILE_FLAG_OVERLAPPED flag if the application doesn't handle it correctly. This could perhaps be rolled into a layer shim: Win9x ignores this flag for disk types. |
| RemoveReadOnlyAttribute | This compatibility fix will remove the Read-Only attribute from all directories. This may be helpful to applications that don’t expect the shell folders to be set to Read-Only. |
| ReorderWaveForCommunications | Set the Multimedia APIs to reorder wave devices to have the preferred communication device as device 0. |
| RepairStringVersionResources | Some applications contain corrupted version resources and attempt to read them when run. This compatibility fix hooks the GetFileVersionInfo function and repairs certain classes of string version resource corruption. |
| RestoreSystemCursors | Some applications that use the SetSystemCursor() function to restore the system cursor may encounter problems in Windows 2000 or Windows XP. This compatibility fix resolves the problem so that the system cursors are restored correctly. |
| RunAsAdmin | This compatibility fix marks this application as needing administrator privileges to run correctly. It will not run correctly in a standard user context. |
| RunAsHighest | This compatibility fix marks this application to run in the most privileged security context available to the user. This means that it will run with standard user privileges for a standard user or with administrator privileges for an administrator. |
| RunAsInvoker | This compatibility fix marks this application to run in the context of its parent, reducing its security exposure. |
| SearchPathInAppPaths | This compatibility fix will intercept calls to the SearchPath API and modifies the command to also search the shell’s App Paths registry key. |
| SessionShim | This compatibility shim was written to try and fix applications which fail when trying to interact with services running in different sessions. In LH, a user cannot log in as Session 0 (Global Session) as in XP. The apps which assumed to be running in Session 0 fail. It catches APIs which take terminal services name prefix(Global or Local) as there parameters. If there is a command line option given to the shim with object names specified, it tries to apply Global/Local prefix to the only specified object names, else it does to everyone. |
| SetEnvironmentVariable | This compatibility fix enables the application to set specific environment variables at application startup. These variables are provided through a command line, and multiple environment variables in the list should be separated by a pipe ( |
| SetProtocolHandler | Register application as a protocol handler. The command line takes a series of 3 values, multiple Clients may be separated by the pipe |
| ShowWindowIE | Shim which intercepts the ShowWindow API call and fixes the problem due to tabbed browsing architecture changes in IE. The window an application finds is not the top level window any more, but the child tab window. Caught the ShowWindow API which checks if the class and process name of the window is IE's tab window. And then calls the real ShowWindow on the top level parent window. |
| Shrinker | This compatibility fix fixes problems with any application that uses the Shrinker resource compression library. This library hacks resource functions in ntdll and kernel32 and redirect calls into their own function routines. But Ntdll code has different opcodes in Windows XP. The program failed to find the opcode signature and decided to cancel WriteProcessMemory call to write their redirection. Because of this, the necessary decompression of program code and resources were not executed and caused access violation. Shrinker compatibility fix resolves this by providing necessary opcode signature so the app could write those redirection into ntdll. |
| SingleProcAffinity | Set single processor affinity for apps that have multi-proc bugs. |
| SpecificInstaller | This flag indicates a match against a specific executable that is an installer. |
| SpecificNonInstaller | This flag indicates a match against a specific executable that is not an installer. |
| StackSwap | Many APIs use much more stack space on NT than Win9x. This compatibility fix is command line driven and takes a list of APIs that will be hooked, making them use no stack. The format the command line is "MODULENAME!APINAME[:X]; MODULENAME!APINAME[:X] ..." where X is 0 : fill old stack with zeroes 1 : fill old stack with pointers 2 : fill old stack with pointers to pointers by default, no stack filling occurs. |
| SyncSystemAndSystem32 | This compatibility fix takes a semi-colon delimited command line of filenames. At process termination, the DLL will extract each filename from the command line and make sure that the file exists in both the System directory and System32 (if it exists in either). Some older applications expect certain DLLs to be in System when under NT they belong in System32 (and vice versa). |
| TerminateExe | This compatibility fix terminates an executable (.EXE) immediately upon launch. |
| TrimDisplayDeviceNames | Trim the names of display devices returned by EnumDisplayDevices. |
| TrimVersionInfo | This compatibility fix trims file and product version resource strings so that they are identical to the Win2000 structure. |
| UIPIEnableCustomMsgs | This compatibility fix enables custom window messages to pass through to current process from lower desktop integrity levels. The list of messages is passed in the COMMAND_LINE as a space separated list of message strings, for example COMMAND_LINE = "Message1 Message2 Message3" |
| UIPIEnableStandardMsgs | This compatibility fix enables standard window messages to pass through to current process from lower desktop integrity levels. The list of messages is passed in the COMMAND_LINE as a space separated list of integers, for example COMMAND_LINE = "100 234 1100" |
| UnMirrorImageList | PictureIt 2001 checks if the system is localized then mirror the thumbnails. |
| UseWARPRendering | If set, the process will opt into WARP Rendering if specific hardware is installed. |
| VirtualizeDeleteFile | Virtualizes the DeleteFile calls that the application makes and hooks other File APIs to ensure the virtualization of the file deleted. |
| VirtualRegistry | Hooks all the registry functions to allow virtual keys, redirection and expansion values. |
| WaveOutUsePreferredDevice | Forces the application to use the WAVE_MAPPER device instead of device 0. It is only safe to apply this compatibility fix to applications that (incorrectly) attempt to open device 0 expecting to open the default device. |
| WerDisableReportException | This shim will hook calls to RtlReportException and return Status_Not_Supported. This in effect will turn off the silent reporting of exceptions to WER including those reported by OLE |
| Win2000SP1VersionLie | Hooks the GetVersion and GetVersionEx APIs so that they return Windows 2000 SP1 version credentials. |
| Win2000SP2VersionLie | Hooks the GetVersion and GetVersionEx APIs so that they return Windows 2000 SP2 version credentials. |
| Win2000SP3VersionLie | Hooks the GetVersion and GetVersionEx APIs so that they return Windows 2000 SP3 version credentials. |
| Win2000VersionLie | Hooks the GetVersion and GetVersionEx APIs so that they return Windows 2000 version credentials. |
| Win2k3RTMVersionLie | Hooks the GetVersion and GetVersionEx APIs so that they return Windows 2003 RTM version credentials. |
| Win2k3SP1VersionLie | Hooks the GetVersion and GetVersionEx APIs so that they return Windows 2003 SP1 version credentials. |
| Win95VersionLie | Hooks the GetVersion and GetVersionEx APIs so that they return Windows 95 version credentials. Applications often check to ensure that they are running on a Win9x system, even though they will run OK on an NT based system. |
| Win98VersionLie | Hooks the GetVersion and GetVersionEx APIs so that they return Windows 98 version credentials. Applications often check to ensure that they are running on a Win9x system, even though they will run OK on an NT based system. |
| WinExecRaceConditionFix | This compatibility fix hooks WinExec if COMMAND_LINE == "nowait" calls CreateProcess without waiting for the created process If COMMAND_LINE is a number, it Sleep()s the process in hook initialization for that number of ms. Otherwise, it simply calls the standard WinExec |
| WinG32SysToSys32 | Hooks GetModuleFileName and parses the return string. WinG32 will post a messagebox and fail if it finds that it is not installed in system32. |
| WinNT4SP5VersionLie | Hooks the GetVersion and GetVersionEx APIs so that they return Windows NT 4.0 Service Pack 5 version credentials. |
| WinXPSP1VersionLie | Hooks the GetVersion and GetVersionEx APIs so that they return Windows XP SP1 version credentials. |
| WinXPSP2VersionLie | Hooks the GetVersion and GetVersionEx APIs so that they return Windows XP SP2 version credentials. |
| WinXPSP3VersionLie | Hooks the GetVersion and GetVersionEx APIs so that they return Windows XP SP3 version credentials. |
| WinXPVersionLie | Hooks the GetVersion and GetVersionEx APIs so that they return Windows XP version credentials. |
| WOWCF_NOWAITFORINPUTIDLE | Compatibility flag for 16 bit applications. This flag will prevent the application from waiting on a spawned process after calling LoadModule32. Without this flag applied the application will wait for the new process to idle before continuing with its own thread. This may appear to the user that the application is not responding. |
| WOWCF_USER_DDENOSYNC | Compatibility flag for 16 bit applications. This flag prevents the application from syncing when sending DDE messages. This may cause unpredictable behavior in some applications. |
| WOWCF2_DELAYTIMEGETTIME | Compatibility flag for 16 bit applications. This flag fixes divide by zero problems resulting from 2 consecutive timegettime call results being the same |
| WOWCF2_FIXLUNATRAYRECT | Compatibility flag for 16 bit applications. This flag fixes window placement problems resulting from themes. Apps calculate wrong coordinates because uxtheme returns different window coordinates than classic |
| WOWCF2_HACKPROFILECALL | Used to hack the various Profile API's (ie.GetProfileInt()). See mvdm\wow32\wkernel.c for command_line syntax. |
| WOWCF2_HACKWINFLAGS | Compatibility flag for 16 bit applications. This flag version lies to the application by turning off a winflag bit specifying that the application is running on a WindowsNT OS. It does not change the major or minor version returned by the OS. |
| WOWCF2_SETFOREGROUND | Compatibility flag for 16 bit applications. This flag attempts to give the focus to the application. This flag should normally be used in conjunction with the GiveUpForeground flag applied to the application owning the blocking window. |
| WOWCF2_SYNCSYSFILE | Compatibility flag for 16 bit applications. This flag redirects the applications file open calls from %windir%\system to %windir%\system32. |
| WOWCF2_USEMINIMALENVIRONMENT | Compatibility flag for 16 bit applications. This flag tells WOW to strip out most of the NT specific environment vars from the environment that we pass to the app. |
| WOWCFEX_DISPMODE256 | Compatibility flag for 16 bit applications. This flag forces the display mode to 256 colors. It does not change the screen resolution. |
| WOWCFEX_DIVIDEOVERFLOWPATCH | Internal: 16-bit compatibility flag that allows us to trap divide overflow exceptions and change the dividend to a happier value. These are usually manifested by "Divide by Zero" popup's. #103459, #440943 et. al. |
| WOWCFEX_EATDEVMODEMSG | Compatibility flag for 16 bit applications. This flag will prevent the WM_DEVMODECHANGE message from being sent to the application. Some applications are unable to properly handle this message. |
| WOWCFEX_FORCEINCDPMI | Compatibility flag for 16 bit applications. This forces DPMI memory allocations to use ever increasing linear addresses. This may prevent the ntvdm from hitting a GPF. |
| WOWCFEX_PLATFORMVERSIONLIE | Compatibility flag for 16 bit applications. This flag will version lie to the application by changing the parameters in the OSVERSIONINFO structure passed to GetVersionEx(). The changes are separated by a semi-colon(;). Do not use quotes around string parameters. Command line: [dwVersionInfoSize];[dwMajorVersion];[dwMinorVersion];[dwBuildNumber];[dwPlatformID];[szCSDVersion] |
| WOWCFEX_USEWINHELP32 | Compatibility flag for 16 bit applications. This flag forces the application to use winhlp32 instead of winhelp. |
| WOWCFEX_WIN31VERSIONLIE | Compatibility flag for 16 bit applications. This flag version lies to an application it is running on win3.1 |
| WOWCFEX_ZEROINITMEMORY | Compatibility flag for 16 bit applications. This flag fixes problems where app uses uninitialized allocated memory |
| WRPDllRegister | Skips registering DLLs specified in the command line or system shipped DLLs. |
| WRPMitigation | AccessCheck return success on WRP protected files |
| WRPRegDeleteKey | Fakes deletion of WRP protected keys |