我发现在64位系统上:
Environment.GetFolderPath(Environment.SpecialFolder.SystemX86);
实际返回%windir%/SysWow64
和:
Environment.GetFolderPath(Environment.SpecialFolder.System);
返回%windir%/system32
为什么他们使用这种令人困惑的命名约定?
答案 0 :(得分:1)
简短的回答是兼容性。请参阅this article。
如果查看文件夹名称,这看起来有点不合逻辑,但是 对此有一个解释。 与兼容性有关。很多 开发人员已经硬编码了他们的系统文件夹的路径 应用程序源代码。他们包括" System32"在文件夹中 路径。如果应用程序已转换,则保持兼容性 对于64位代码,64位系统文件夹仍然命名为System32。
但是那些系统路径很难的32位应用程序呢 编码并在64位Windows中运行?他们怎么能找到新的 SysWOW64文件夹无需更改程序代码,您可能会想到。 答案是模拟器将对System32文件夹的调用重定向到 SysWOW64文件夹透明地所以即使文件夹是硬编码的 到System32文件夹(如C:\ Windows \ System32),模拟器将 确保使用SysWOW64文件夹。