How Mac OS 9 Separated Per-User Preferences

Mac OS 9 introduced multi-user functionality to the classic Macintosh operating system through its "Multiple Users" feature, enabling distinct environments for different individuals on a single machine. While earlier versions of the Mac OS relied on a single, shared System Folder where all settings were stored globally, Mac OS 9 introduced an architectural layer that dynamically redirected application configuration files. This article explains how the operating system separated application preferences per user account using a combination of user-specific directory trees, patched system APIs, and folder redirection techniques.

The Challenge of the Classic Architecture

Prior to Mac OS 9, the classic Mac OS lacked native user accounts or security boundaries. Applications consistently stored their settings in a single directory: System Folder:Preferences. Because the operating system did not feature memory protection or a Unix-style root/user permission system, application developers routinely assumed that preferences were global to the entire machine. To introduce multiple users without breaking backward compatibility with thousands of legacy applications, Apple had to isolate settings transparently without requiring developers to rewrite their software.

The Users Directory Structure

When the Multiple Users control panel was enabled, Mac OS 9 generated a Users folder at the root level of the startup disk. Inside this folder, the system created an isolated directory for each registered user profile (for example, Macintosh HD:Users:John:).

Inside each user profile, the operating system generated a personalized hierarchy mirroring essential parts of the System Folder, including:

  • Preferences: A private preferences folder dedicated strictly to that user's application states, document histories, and system preferences.
  • Desktop Folder: A personalized desktop space.
  • Documents: A private space for local user files.

Folder Manager Redirection

The primary mechanism that enabled preference separation was the Folder Manager API. Well-behaved classic Mac OS applications did not hardcode the file path to preferences; instead, they called the system API:

FindFolder(kOnSystemDisk, kPreferencesFolderType, kCreateFolder, &prefVRefNum, &prefDirID);

Under single-user environments, this call always resolved to the System Folder:Preferences directory. When Multiple Users was activated in Mac OS 9, the system patched the Folder Manager. During the login process, the operating system dynamically remapped the target of kPreferencesFolderType to point to Macintosh HD:Users:[CurrentUser]:Preferences:.

Because the redirection occurred at the API level, applications running under a standard user account automatically created, read, and modified preference files in that specific user's folder without any code modifications.

Handling Shared and Non-Compliant Applications

For applications that did not use the Folder Manager and instead attempted to navigate directly to the System Folder, or for shared resources that needed to remain machine-wide, Mac OS 9 employed secondary compatibility strategies:

  1. System Folder Shadowing and Aliases: For files that needed to be globally accessible (such as base dictionaries or shared libraries), the system maintained the global versions in the primary System Folder. If an application modified a shared preference file directly inside the System Folder, the Multiple Users extension would attempt to intercept the write operation or rely on predefined access privileges set by the administrator.
  2. Access Environments: Mac OS 9 provided three user environments: Normal, Limited, and Panels. For Limited and Panels users, the operating system enforced strict write restrictions on the central System Folder, forcing applications to rely on the redirected user folders for disk writes, preventing one user from altering or corrupting the global environment or another user's configurations.

Through this combination of user-level directory structures and Folder Manager call interception, Mac OS 9 successfully isolated individual user preferences while maintaining full compatibility with the legacy software ecosystem.