How to make old programs work on Windows 7

Windows 7 compatibility
This helpful Microsoft PowerPoint presentation gives more technical information on compatibility fixes. Find it at www.bit.ly/99yErW

Every new version of Windows breaks some existing applications, and Windows Vista and Windows 7 are no exception. It's nobody's fault, but that doesn't help if you desperately need to use one particular application.

You can always turn on compatibility mode, which tells a program it's running under Windows XP rather than 7, for example. But if that doesn't work – and it often doesn't – there are no other built-in options. If the program's author has no solutions, you may be tempted to abandon the problem application entirely.

There may be another possible solution though – the Application Compatibility Toolkit (ACT). This powerful utility provides many more options and tweaks than compatibility mode alone, so there's a better chance of making old programs run on your new PC.

It's easy to use, too, figuring out itself what the problems might be and how they can be fixed.

What's more, the ACT isn't only for ageing apps. You can also use it to tweak the latest programs to remove Windows irritations.

Are you tired of seeing a UAC prompt every time you load a trusted application, for instance? The Application Compatibility Toolkit can help you turn off the prompts for just a few programs, while keeping them for everything else. Again, it's all very easy to use.

Getting started

The Application Compatibility Toolkit is available for download on the Microsoft site (choose 'ApplicationCompatibilityTookit Setup.exe'). It's free, and unusually for this kind of Microsoft tool, it's only 12.2MB in size, so it shouldn't take long to download on the most lethargic of internet connections.

Run the downloaded file to begin the installation. There are no complex options to consider, so just accept all the default settings (except perhaps the installation location if you need to use some other drive or folder) and the program's various components will be installed in a few seconds.

With the ACT set up, think for a moment about any old programs that you run on your Vista or Windows 7 PC. Are there some that cause problems occasionally, or launch as normal but then misbehave from time to time? The ACT includes a tool called the Standard User Analyzer that will monitor that program, keep track of what it's doing, alert you to potential problems, and even apply the appropriate fixes for you.

To try this, click 'Start > All Programs > Microsoft Application Compatibility Toolkit > Developer and Tester Tools > Standard User Analyzer'. When the SUA appears, click 'Browse', then navigate to and select the executable file for your old application.

There's an option to add command-line parameters if the app needs them, but otherwise click 'Launch' to fire up the program. Click 'Yes' to confirm that it's OK for existing AppVerifier logs to be deleted, and unless you have reason to do otherwise, check 'Always delete the logs without asking me again in the future' to ensure you're not bothered by this question again.

Your problematic program should now launch. If you need to carry out a particular actions to cause it to misbehave, then do so. Otherwise, run the program as normal for a while. When you've finished, close it down and you can move to the next step.

Mitigations

As you were using your program, Microsoft's Application Verifier was running in the background, logging details of your app's activities. When the Standard User Analyzer detects that you've closed the program, it will load and analyse that log.

Windows 7 compatibility

This could take a few moments, so be patient – just watch the 'Debug info' box for status updates. When it's finished, you'll see a 'Done' message and a prompt telling you that you can go to the other tabs to view issues detected by SUA.

The tabs referred to here are at the top of the SUA window, and they highlight potential problems across areas of the program: file accesses, Registry use, INI files and more. If all of these have a zero next to them, the SUA has found no problems and can't help.

If some tabs have detected errors, they'll be highlighted here ('Other Objects (4)', for example). You can click the tab to see more information, but don't expect it to explain much – the results are very technical.

More usefully, you can just ask the SUA to create and deploy mitigations – tweaks that Windows will apply to this executable in future, which may resolve any issues. It couldn't be much easier – simply click 'Mitigation > Apply Mitigation > Apply', and the SUA will tell Windows to apply the fixes to your program.

Don't worry, these are all behind the scenes tweaks – your program code isn't touched in any way. The program should now work better, so give it a try.

If the problems are fixed, great. If they're worse (unfortunately also possible), click 'Mitigation > Undo Mitigation' to remove the tweaks and the program will work just as well (or badly) as it did before.

The only problem with this approach is that the SUA will apply its tweaks to your current Registry only. If you have the same app on other PCs, they won't be affected, and if you reinstall Windows on this PC, then the mitigations will be lost.

To minimise any hassles, you can also click 'Mitigation > Export Mitigations as MSI', and the SUA will create a file to apply these tweaks. If you have a PC with the same app, or you need to reinstall the mitigations on this system, simply run the MSI file and they'll be applied for you automatically.

More fixes

The Application Compatibility Toolkit also includes the Compatibility Administrator – a utility that lets you apply a host of further fixes to your installed apps. These don't have to be applied to old programs – they can be useful in other situations, such as allowing selected, trusted applications to launch without the hassle of a UAC prompt.

windows 7 compatibility

Launch the program and right-click 'New Database' under 'Custom Databases', then click 'Create New > Application Fix'. Enter the name of the program to exclude from Windows UAC.

This should be a program that you trust, and that isn't exposed to security risks. It shouldn't work online, and it shouldn't be used to open files that you've downloaded or might be otherwise exploited. A tool that displays your CPU temperature would probably be fine, but one that opens PDF files really wouldn't.

Enter the name of the manufacturer, too, then click 'Browse', select the program's executable and click 'Next'.

The 'Compatibility Modes' screen provides a lengthy list of the possible compatibility mode options you can apply. Check 'RunAsInvoker', click 'Test run > OK' and watch what happens.

If the program doesn't launch or displays some kind of error, this trick isn't going to work. If the program fires up without a UAC prompt and works as normal, then the mitigation has been successful. Close the test app down, and switch back to the Compatibility Administrator.

Click 'Next' twice to see the final screen, which enables you to customise how Windows applies this mitigation. By default, this will work only with your current version of the program, but you can also tweak it to work with any executable of this name. For the moment though, click 'Finish' to accept the default settings.

With your new database highlighted, click 'File > Save as' to save it as something like 'UAC.sdb' in the 'C:\ root' folder for now. You can right-click the database and select 'Install' to install it.

windows 7 compatibility

There's also a more advanced command-line route that offers extra options. Click 'Start', type 'cmd', right-click the 'CMD.EXE' link and then select 'Run as administrator'. Next, at the command prompt, type sdbinst c:\uac.sdb (replacing the file name and path with whatever is appropriate for the database you've just created) and press [Enter].

You'll see a message telling you that the database has been installed, and that means the UAC fix has been applied. You should now be able to run your test program without UAC prompts.

Going further

Tweaking Windows to run one application without UAC isn't too impressive, but this is just the beginning. Now that you understand the basic principle, you can easily add other application fixes to the same database.

Use the 'Test run' button to confirm that they work when launched this way, and if they do, you can save them to the database and install this to apply your fixes to the Registry.

You can also apply many other fixes beyond the UAC tweak. The 'Compatibility Fixes' section of the 'Create New Application Fix' dialog lists a host of options. Does a game complain that you don't have a specific version of DirectX? Check 'ForceDXSetupSuccess' and the ACT will make the game think it has the version it wants. If the program really does need that version then it still won't work, but at least there's a chance.

If a program is looking in the wrong folder for a particular component or file, the 'CorrectFilePaths' fix can redirect it to the right place. If an app doesn't work with Windows Aero, using the 'DisableDWM' file will turn it off (temporarily).

If your program displays an annoying error message, but continues when you click 'OK', using the 'IgnoreMessageBox' fix can close the message box automatically.

There are plenty of other options, which you can read about by browsing the Help file (using 'Application Compatibility Toolkit > Phase 3: Testing and mitigating your compatibility issues > Known compatibility fixes'). Master them and you'll soon have most of your old apps – as well as the new ones – running at their very best.