none
32-bit version of msvcr100.dll is installed in 64-bit C:\Windows\System32 directory

    Question

  • I've been getting an increasing amount of support tickets lately where our users are unable to load one of the 64-bit DLLs that we ship with our product.

    When I get on the user's machine and look at the DLL in Dependency Walker, it looks like it's trying to load the 32-bit version of msvcr100.dll. And indeed, the msvcr100.dll present in C:\Windows\System32 (i.e. the 64-bit folder on 64-bit OS'es) is a 32-bit version of msvcr100.dll

    Uninstalling and reinstalling both the 32- and 64-bit versions of the redistributables have no effect. The 32-bit version stays in System32.

    I have to manually rename the existing msvcr100.dll and then reinstall the x64 redistributable in order for the 64-bit version of msvcr100.dll to be installed properly.

    What's going on and what should I do to fix this? I'd rather not start shipping my own versions of the VC++ DLLs with my application since that defeats the whole purpose of linking dynamically (from a security standpoint).

    Wednesday, September 19, 2012 6:24 PM

Answers

  • your checker program needs to be written without a dependency of the dll. The code cannot reside in your main program that is having the loading issue.

    System32 is read only to normal programs, it is likely the program that saves the wrong dll to system32 is an installer.



    Visual C++ MVP


    Wednesday, September 19, 2012 11:35 PM
  • Hi,

    Would you mind letting me know the result of the suggestions? If you need further assistance, feel free to let me know. I will be more than happy to be of assistance.

    Best regards,
    Jesse

    I unfortunately don't have much access to the users' computers, so I haven't been able to determine which application is putting an incorrect VC++ DLL in the System32 folder. Our core userbase consists of gamers, so I'm guessing it's some kind of gaming-related application.

    Nevertheless, I'm seeing a large amount of telemetry data for people experiencing this problem. Our next client update will include the fix I mentioned above.

    Monday, September 24, 2012 3:35 AM

All replies

  • You used the wrong tool. Use the 64bit dependency walker for 64bit programs.


    Visual C++ MVP


    Wednesday, September 19, 2012 11:14 PM
  • You used the wrong tool. Use the 64bit dependency walker for 64bit programs.


    Visual C++ MVP


    Nope, I'm sure not. I'm using the 64-bit version of Dependency Walker. I even opened the msvcr100.dll in WinDbg and lo and behold it was a 32-bit binary.
    Wednesday, September 19, 2012 11:16 PM
  • Then your user probably have some programs that install the dll to the wrong location. Since the DLL does not come with Windows you should be able to find the program that installed the dll by matching the file's create or modified date with the date of install in programs and features.


    Visual C++ MVP

    Wednesday, September 19, 2012 11:26 PM
  • You're assuming the program that did this is 1) installed in Windows rather than run without an installation (such as Minecraft), and 2) that the change to the file happened at the same time the application was installed rather than at a later point during the use of said program.

    So far, I think the best solution is to simply check the bitness of the DLL when my application is installed and then manually move it out and rerun the VC++ redistributable.

    I'm confused, however, why the redistributable doesn't fix the file even when I explicitly uninstall and reinstall it. It should know that the target file is not the right one...

    Wednesday, September 19, 2012 11:31 PM
  • your checker program needs to be written without a dependency of the dll. The code cannot reside in your main program that is having the loading issue.

    System32 is read only to normal programs, it is likely the program that saves the wrong dll to system32 is an installer.



    Visual C++ MVP


    Wednesday, September 19, 2012 11:35 PM
  • Hi,

    Would you mind letting me know the result of the suggestions? If you need further assistance, feel free to let me know. I will be more than happy to be of assistance.

    Best regards,
    Jesse


    Jesse Jiang [MSFT]
    MSDN Community Support | Feedback to us

    Monday, September 24, 2012 2:49 AM
  • Hi,

    Would you mind letting me know the result of the suggestions? If you need further assistance, feel free to let me know. I will be more than happy to be of assistance.

    Best regards,
    Jesse

    I unfortunately don't have much access to the users' computers, so I haven't been able to determine which application is putting an incorrect VC++ DLL in the System32 folder. Our core userbase consists of gamers, so I'm guessing it's some kind of gaming-related application.

    Nevertheless, I'm seeing a large amount of telemetry data for people experiencing this problem. Our next client update will include the fix I mentioned above.

    Monday, September 24, 2012 3:35 AM
  • Shall we close this thread? Do you have any other question about this thread?

    Best regards,
    Jesse


    Jesse Jiang [MSFT]
    MSDN Community Support | Feedback to us

    Tuesday, September 25, 2012 2:55 AM