混淆Environment.SpecialFolder的命名约定

时间:2016-12-06 14:50:07

标签: c# .net io

我发现在64位系统上:

   Environment.GetFolderPath(Environment.SpecialFolder.SystemX86);

实际返回%windir%/SysWow64和:

   Environment.GetFolderPath(Environment.SpecialFolder.System);

返回%windir%/system32

为什么他们使用这种令人困惑的命名约定?

1 个答案:

答案 0 :(得分:1)

简短的回答是兼容性。请参阅this article

  

如果查看文件夹名称,这看起来有点不合逻辑,但是   对此有一个解释。 与兼容性有关。很多   开发人员已经硬编码了他们的系统文件夹的路径   应用程序源代码。他们包括" System32"在文件夹中   路径。如果应用程序已转换,则保持兼容性   对于64位代码,64位系统文件夹仍然命名为System32。

     

但是那些系统路径很难的32位应用程序呢   编码并在64位Windows中运行?他们怎么能找到新的   SysWOW64文件夹无需更改程序代码,您可能会想到。   答案是模拟器将对System32文件夹的调用重定向到   SysWOW64文件夹透明地所以即使文件夹是硬编码的   到System32文件夹(如C:\ Windows \ System32),模拟器将   确保使用SysWOW64文件夹。