大多數人可能會認為,系統目錄永遠都是恒定的,即%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?》