Via shimming

Feb 9, 2007 13:53 GMT  ·  By

This Tweak Mode article addresses those of you who know what shimming is all about. I suspect that there aren't very many, so I will do my best to make this readable for the rest, just in case you decide to endure this until the end. First off, you must understand that Windows Vista treats .exe and .cpl files in a similar manner as far as the execution tiers are concerned. Microsoft has designed the final version of Windows Vista in such a manner that the User Account Control now ignores common control panel applets. The basic control panel applets will not require a prompt in order to open in the final version of the operating system.

The problem here is with applications built before Windows Vista that install control panel applets. For these, Vista cannot determine the run level required, and therefore will run it with restricted privileges. "However, since this can break some control panel applets, we monitor this with the Program Compatibility Assistant. If we detect that you have launched a control panel applet that is not manifested, after you close the applet PCA will ask you if it worked correctly. If you say that it didn't, then we set a registry key to apply the RunAsAdmin shim to the applet on future invocations and then relaunch the applet," revealed Chris Jackson, a Senior Consultant on the Microsoft Windows Application Experience SWAT Team.

But is there a better way? Sure. I did not mention shimming at the beginning for nothing, you know... You can apply a shim to a legacy control applet. You can even deploy the shim in a database across multiple desktops, if that is the case. By shimming a legacy control panel applet you will be able to add run levels in Windows Vista.

You can do so via the Compatibility Administrator. Choose the database, create a new Fix, fill in the information required, and either enter the patch or browse your way to the executable, be sure to manually enter the *.cpl extension, if you choose to browse.

"So, find the applet that you want and click next. Take no compatibility modes, and click next again. From the Compatibility Fixes list (shims), select the RunAs* shim that works best for the applet (RunAsAdmin, RunAsHighest, or RunAsInvoker). However, now you'll find the other difference - if you try to click the Test Run button, you'll just get an error message. No point in trying that. Click next, and specify the properties you want to use for file matching, and click on Finish," added Jackson.

In order to finish up, you only have to save and install the database.