Search code examples
pythonwindowsvisual-studiodllwinsxs

Windows Side-by-side assembly default version (msvcr90.dll)


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


Solution

  • 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