我应该补充一点:无论如何,您都不应该将您的 dll 放入 \system32\ 中!修改您的代码,修改您的安装程序...为您的位找到一个不在 c:\windows\ 下的位置
例如,您的安装程序将您的 dll 放入:
\program files\<your app dir>\
or
\program files\common files\<your app name>\
(注意:您实际执行此操作的方式是使用环境 var: %ProgramFiles% 或 %ProgramFiles(x86)% 来查找 Program Files 的位置...。您不要假设它是 c:\program files\ .. ..)
然后设置一个注册表标记:
HKLM\software\<your app name>
-- dllLocation
使用您的 dll 的代码会读取注册表,然后动态链接到该位置的 dll。
以上是明智的做法。
您永远不会将您的 dll 或第三方 dll 安装到 \system32\ 或 \syswow64 中。如果您必须静态加载,请将您的 dll 放在您的 exe 目录中(可以在其中找到它们)。如果您无法预测 exe 目录(例如,其他一些 exe 将调用您的 dll),您可能必须将您的 dll 目录放入搜索路径(如果可能,请避免这样做!)
system32 和 syswow64 适用于 Windows 提供的文件...不适用于其他任何人的文件。人们养成把东西放在那里的坏习惯的唯一原因是因为它总是在搜索路径中,而且许多应用程序/模块使用静态链接。(所以,如果你真的认真对待,真正的罪过是静态链接——这是本机代码和托管代码中的罪过——总是总是动态链接!)