- Managing shared mailboxes in Office 365 with PowerShell - Thu, May 5 2016
- Managing shared mailboxes in Office 365 with the GUI - Wed, May 4 2016
- Installing and configuring the Enhanced Mitigation Experience Toolkit (EMET) - Wed, Mar 16 2016
Most IT pros are aware of the built-in application compatibility that comes with Windows by default. Applications that crash due to compatibility issues will typically cause the Program Compatibility Troubleshooter to run. The wizard attempts to analyze the application and apply fixes to make that application run correctly. You can also run the tool manually by right-clicking the application’s shortcut and choosing “Troubleshoot compatibility.”
If it works, your application is ready to use. If not, you have a broken app that may need some extra TLC to get working. The good news is that additional application compatibility is built into Windows, which you can access by using the Application Compatibility Toolkit.
Microsoft Application Compatibility Toolkit
The Microsoft Application Compatibility Toolkit used to be a standalone download, but it is now included as part of the Windows Assessment and Deployment Kit (also known as the ADK). If you’ve used SCCM or MDT, the ADK will probably look familiar to you since it includes things like Windows PE and the User State Migration Tool for OS deployment. The latest version can be downloaded here. When installing, you’ll want to make sure that Application Compatibility Toolkit (ACT) is checked since it isn’t selected by default.
Microsoft Application Compatibility Toolkit (ACT) in ADK
Ensure that the application for which you’re building a fix (also known as a shim) is installed on the same system. After installing ACT, you’ll see that you have some new icons on your Start Menu/Screen. Since we’ll be fixing a 32-bit application, I’m going to run the Compatibility Administrator (32-bit).
After opening the Compatibility Administrator, you should have a default new custom database already listed. Right-click the new database, click Create New, and click Application Fix.
Compatibility Administrator - Application Fix
In the Create New Application Fix window, we’ll enter the name of the program and vendor, and then browse to the application’s location.
Create new Application Fix
In the Compatibility Modes section, you can choose a specific compatibility mode to use for the application. I happen to have an application that we distribute to end users that works perfectly well in Windows 7, but the application must run in Windows XP SP3 compatibility mode. I use a custom shim database for this application and distribute it to systems that run this app when the app is deployed. This prevents end users from seeing errors and keeps them from either submitting support tickets or needing to know that they need to manually configure application compatibility for the app.
Advancing to the Compatibility Fixes screen will show you the fixes that are applied for the Windows XP SP3 compatibility mode, along with all of the other fixes that can be applied to an application.
The list of fixes that you can apply to an application is LONG. Fixing an application involves a lot of trial and error, but doing so has ultimately saved me many headaches with support and dealing with vendors that either can’t or don’t want to upgrade their apps. In the case of one app, I found other people who had already built a custom shim database that was shared with me. In another, it took some extra work troubleshooting the compatibility.
Chris Jackson, “The App Compat Guy” from Microsoft, has a great demo application that was very useful to me when learning how to use the Application Compatibility Toolkit. The application install includes a full tutorial on troubleshooting his StockViewer app.
Additional tools you’ll need
- Standard User Analyzer (SUA) – The SUA is installed as part of the Application Compatibility Toolkit in C:\Program Files (x86)\Windows Kits\8.1\Assessment and Deployment Kit\Application Compatibility Toolkit\Standard User Analyzer\SUA.exe. The SUA allows you to analyze applications for problems related to User Account Control (UAC). If you have applications that typically require admin rights to run, the SUA can help you track down fixes to fix UAC problems and the need for a user to run as admin when running the application.
- Event Log – Occasionally, the Event Log can provide error details that you can use to track down fixes. My personal experience has been that, most of the time, you just get an entry for the crash and not much else, but occasionally it can yield good information. Worst case scenario, you lost a few minutes; best case, you could find the key piece of information you need to fix the app.
- Process Monitor – Process Monitor is an invaluable tool to see what files or Registry keys an application is accessing.
- Debugger – You may need to break out a debugger every now and then when troubleshooting appcompat. My advice: make friends with some developers. 😉
Installing the custom shim database
Installing your custom shim database can be performed with the sdbinst.exe command line utility. Run sdbinst.exe path_to_your_database.sdb to install the database. Adding /q will run the install silently and bypass any errors.
Install custom shim database
Shim databases are installed serially, so you can technically have as many as you want. But, if you have lots of shimmed applications, you may want to consolidate them into one database since each database is referenced any time an executable on the system is launched.