0
votes

Where is the default version of assemblies stored?

When I run python.exe (2.6 or 2.7) and check it out using Process Explorer, I see that it loads the newest version of msvcr90.dll (9.0.30729.9247 on my PC). Python has an internal manifest that specifies version 9.0.21022.8 of msvcr90.dll, but the newer version is still loaded. Python 2.6 has a Microsoft.VC90.CRT.manifest file that also specifies 9.0.21022.8 but the newer version is always loaded.

Using Process monitor I can see all other instances when msvcr90.dll is loaded and they all use 9.0.30729.9247.

Somewhere my PC must be telling all these programs to use the newer version but I can't seem to find out where. I have many versions of microsoft.vc90.crt in my WinSxS folder.

If I can't change the default version, is there any way that I can 'downgrade' my microsoft.vc90.crt? To a version that seems more standard (9.0.30729.6161)

PS. I have no idea where my version 9.0.30729.9247 of microsoft.vc90.crt came from

1
That's due to a bindingRedirect in a publisher configuration file for the "Microsoft.VC90.CRT" assembly. Look for "*policy.9.0.microsoft.vc90.crt*9.0.30729.9247*.manifest" in %SystemRoot%\WinSxS\Manifests. - Eryk Sun
Have you experienced any specific incorrect behaviour due to the newer version of the DLL being loaded? - Paul Fenney
I could only get it working by changing the registry value as stated in my accepted answer below. I have not experienced any bad behaviour as of yet (nothing noticeable at least) but I'm sure something will break at some stage (programs requiring the new version). - kbotha

1 Answers

0
votes

The default Windows side-by-side assembly version is specified in the registry

For microsoft.vc90.crt the version is specified at:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide\Winners\x86_policy.9.0.microsoft.vc90.crt_

Change the default version back to an older version as required