windows - ucrtbase and compiler redistributables found _how_ at program load time? -
some dlls special , operating system load official installed copy regardless of whether file name found on path.
what makes special?
on versions of windows earlier win10, “universal crt” might installed via ms-supplied official installer. happen put in system32 directory found, or make special?
likewise compiler rtl redistributals (msvcp140.dll, vccorlib140.dll, vcruntime140.dll).
i suspect programs drop these locally, in same directory exe, , put directory on path, causing load errors in unrelated programs don't. in particular, if 1 of dlls found along path , wrong platform (32-bit vs 64-bit) cause cryptic dialog box appear when program attempts run.
even though local installation of aforementioned dlls discouraged in favor of using official installers, work or every app need install locally prevent being damaged unrelated programs on path?
how can "local install" program (that is, unpacking directory , running there) cope? i'm interested in vs2015, 32-bit, , supporting largest variety of old operating systems.
i realized works because
- the installed location system32 directory
- the system32 directory checked first, before path.
so, if dll searching follows documented rules, other programs on path not poison dll loading in case dll in fact installed.
i have not checked in detail see if of dlls of interest have magical behavior beyond that, such ignore load-ordering , search options cause other file found in mundane dll. expect ms-api-* files known os indeed hard-wired (and not known older os mundane).
Comments
Post a Comment