Ich sollte hinzufügen: Sie sollten Ihre DLLs sowieso nicht in \ system32 \ ablegen! Ändern Sie Ihren Code, ändern Sie Ihr Installationsprogramm ... finden Sie unter c: \ windows \ ein Zuhause für Ihre Bits, das sich NICHT irgendwo befindet
Zum Beispiel legt Ihr Installationsprogramm Ihre DLLs ab in:
\program files\<your app dir>\
or
\program files\common files\<your app name>\
( Hinweis : Die Art und Weise, wie Sie dies tatsächlich tun, besteht darin, die Umgebung var:% ProgramFiles% oder% ProgramFiles (x86)% zu verwenden, um herauszufinden, wo sich die Programmdateien befinden. Sie gehen nicht davon aus, dass es sich um c: \ Programme \ handelt. ..)
und setzt dann ein Registrierungs-Tag:
HKLM\software\<your app name>
-- dllLocation
Der Code, der Ihre DLLs verwendet, liest die Registrierung und verknüpft sie dann dynamisch mit den DLLs an diesem Speicherort.
Das Obige ist der kluge Weg.
Sie installieren niemals Ihre DLLs oder DLLs von Drittanbietern in \ system32 \ oder \ syswow64. Wenn Sie statisch laden müssen, legen Sie Ihre DLLs in Ihrem exe-Verzeichnis ab (wo sie gefunden werden). Wenn Sie das exe-Verzeichnis nicht vorhersagen können (z. B. wird eine andere exe Ihre DLL aufrufen), müssen Sie möglicherweise Ihr DLL-Verzeichnis in den Suchpfad einfügen (vermeiden Sie dies, wenn überhaupt möglich!).
system32 und syswow64 sind für Windows bereitgestellte Dateien ... nicht für andere Dateien . Der einzige Grund, warum die Leute die schlechte Angewohnheit hatten, Dinge dort abzulegen, ist, dass sie sich immer im Suchpfad befinden und viele Apps / Module statische Verknüpfungen verwenden. (Wenn Sie sich also wirklich darauf einlassen, ist die wahre Sünde die statische Verknüpfung - dies ist eine Sünde in nativem Code und verwaltetem Code - immer immer immer dynamisch verknüpfen!)