天天看点

为什么设计一个单独的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?》

最近我写了个东西

继续阅读