为什么64位DLL在64位Windows上转到System32和32位DLL到SysWoW64?
我想知道我们什么时候需要放置一个文件
在64位Windows系统上的C: Windows System32或C: Windows SysWOW64。
我有两个DLL,一个用于32位,一个用于64位。
逻辑上,我以为我将32位DLL放在C: Windows System32下,将64位DLL放在C: Windows SysWOW64下。
令我惊讶的是,这是相反的方式! 32位进入C: Windows SysWOW64,64位DLL进入C: Windows System32。
很混乱的东西。这背后的原因是什么?
没有找到相关结果
已邀请:
4 个回复
漂截嘘
豆兢
(注意:实际执行此操作的方法是使用环境var:%ProgramFiles%或 %ProgramFiles(x86)%来查找Program Files的位置....你不认为它是c: program files ....) 然后设置一个注册表标签:
使用您的dll的代码读取注册表,然后动态链接到该位置的dll。 以上是明智之举。 您永远不会将您的dll或第三方dll安装到 system32 或 syswow64中。如果你必须静态加载,你将你的dll放在exe目录中(它们将被发现)。如果你无法预测exe目录(例如某些其他exe会调用你的dll),你可能必须将你的dll目录放入搜索路径(如果可能的话,请避免这样做!) system32和syswow64用于Windows提供的文件...不适用于任何人的elses文件。人们养成放东西的坏习惯的唯一原因是因为它总是在搜索路径中,并且许多应用程序/模块使用静态链接。 (所以,如果你真的了解它,真正的罪恶是静态链接 - 这是本机代码和托管代码中的罪 - 始终总是动态链接!)
臂哦
对
最初,16 / 86bit文件是在'86'英特尔处理器上写的。
真的意味着
(在64位Windows上) 当开发人员第一次开始使用Windows7时,存在一些兼容性问题,其中存储了其他应用程序。
真的意味着
基本上,用简单的英语,它意味着“在64位机器上的Windows上的Windows”。每个文件夹指示DLL所在的应用程序所在的位置。 以下是两个链接,其中包含您需要的所有基本信息: MSDN文件系统重定向器 SysWow64解释 希望这可以解决问题!
捅瓶啡