2016-12-06 58 views
0

我發現,在64位系統上:混亂的命名約定Environment.SpecialFolder

Environment.GetFolderPath(Environment.SpecialFolder.SystemX86); 

返回實際%windir%/SysWow64和:

Environment.GetFolderPath(Environment.SpecialFolder.System); 

回報%windir%/system32

爲什麼他們使用這個混亂命名約定?

回答

1

簡短的答案是兼容性。見this article

這看起來有點不合邏輯,如果你看看文件夾名稱,但 有一個解釋。 它與兼容性有關。許多 開發人員已經硬編碼到他們的 應用程序源代碼中的系統文件夾的路徑。他們已將「System32」包含在文件夾 的路徑中。爲了保持兼容性,如果將應用程序 轉換爲64位代碼,則64位系統文件夾仍稱爲System32。

但是,32位應用程序的系統路徑硬 編碼和運行在64位Windows?他們如何能夠在沒有改變程序代碼的情況下找到新的 SysWOW64文件夾,你可能會想。 答案是仿真器重定向到System32文件夾中調用 SysWow64文件夾中透明所以即使該文件夾是硬編碼 到System32文件夾(如C:\ Windows \ System32下),仿真器將 確保而是使用SysWOW64文件夾。