天天看點

為什麼設計一個單獨的GetSystemDirectory函數?

大多數人可能會認為,系統目錄永遠都是恒定的,即%windir%\SYSTEM32。為什麼Windows要設計一個單獨的函數GetSystemDirectory呢?是不是有點多此一舉了?

非也非也。由于曆史原因,系統目錄有時候會變化。

對于16位的Windows NT作業系統,系統目錄為%windir%\SYSTEM。對于基于Windows95和所有其他的16位作業系統,系統目錄也是%windir%\SYSTEM。

即使是在16位作業系統的世界,如果系統目錄始終是%windir%\SYSTEM,為什麼還是需要一個函數來傳回呢?

皇上别急,請聽老臣解釋。

同上的道理,即使是16位的作業系統,系統目錄也不是一成不變的。

在16位系統的古老時代,你可以直接在網絡硬碟上運作Windows。所有的系統檔案會被保留在網絡伺服器上,隻有使用者檔案才會被保留在本地機器中。另外,網絡上的每一台電腦都使用相同的網絡路徑作為系統目錄的路徑。那個時候,隻有一個USER.EXE的拷貝被所有使用者共享。

在這種基于網絡的Windows配置下,系統目錄是共享網絡磁盤的一個路徑,而Windows目錄是本機硬碟的一個路徑,例如C:\Windows。客戶沒有對網絡共享盤的寫入權限,但是他們對本機Windows目錄卻有寫入權限。

這就是為什麼我們設計了一個單獨的GetSystemDirectory函數來傳回系統目錄。

總結

奇怪的小知識是不是又增加了?

最後

Raymond Chen的《The Old New Thing》是我非常喜歡的部落格之一,裡面有很多關于Windows的小知識,對于廣大Windows平台開發者來說,确實十分有幫助。

本文來自:《Why is there a separate GetSystemDirectory function?》

最近我寫了個東西

繼續閱讀