windows - Hvorfor er der ikke en fuld filsti, der kræves for at indlæse en dll? I hvilken situation ville denne funktionalitet være gavnlig?

Indlæg af Hanne Mølgaard Plasc

Problem



Hvorfor kræver Windows ikke en fuld filsti, når du ringer LoadLibrary, eller for CLSID'er med registrerede DLL'er osv. I hvilken situation ville nogen have gavn af at skulle falde tilbage på DLL Search Order for at finde en dll?


Jeg mener, at variabler som\% SystemRoot\% eller\% ProgramFiles\% kunne få dig til den relevante mappe, og. \ Ville forlade dig i din nuværende mappe. Så hvorfor tillade vagueness?

Bedste reference


For eksplicit at forbinde med GetProcAddress() vil jeg hævde, at man bør bruge den absolutte vej til DLL'en, hvis det overhovedet er muligt.


For implicit at forbinde med .lib-filer skal navnet på DLL'en bestemmes ved linketid, som regulerer absolutte stier.


Det er sikreste at sætte DLL'en i samme mappe som den eksekverbare, under\% Program Files\% og beskyttet af UAC, og at bruge den nye DLL-søgeord.