В Windows API с самого начала есть две отдельные функции
GetWindowsDirectory
и GetSystemDirectory
. Почему недостаточно было одной? Обе эти системные папки защищены от записи, обе входят в PATH и в список поиска DLL-библиотек. Зачем было их разделять?Аксакалы вспомнят, что в те давние времена назначение этих папок различалось. Папка Windows была доступна для записи, и именно в ней хранились все настройки пользователя. Например, функция
GetProfileInt
читает из файла WIN.INI
в папке Windows, и функция GetPrivateProfileInt
, если не указан полный путь INI-файла, по умолчанию работает с папкой Windows.В те давние времена не было отдельных папок с профилями пользователей; в папке Windows, по сути, хранился профиль единственного пользователя в системе.
С другой стороны, большинство системных файлов Windows хранилось в папке System, и эта папка использовалась только для чтения. Даже если не было механизма, фактически запрещавшего запись в эту папку, — сама Windows никогда в неё не писала (исключая установку и удаление приложений, и прочие операции по настройке системы).
Разделение системных файлов на две папки позволяло Windows работать в нескольких различных конфигурациях.