| The Registry |
| ------------ |
| |
| After Win3.x, the registry became a fundamental part of Windows. It is |
| the place where both Windows itself, and all |
| Win95/98/NT/2000/whatever-compliant applications, store configuration |
| and state data. While most sane system administrators (and Wine |
| developers) curse badly at the twisted nature of the Windows registry, |
| it is still necessary for Wine to support it somehow. |
| |
| Registry structure |
| |
| The Windows registry is an elaborate tree structure, and not even most |
| Windows programmers are fully aware of how the registry is laid out, |
| with its different "hives" and numerous links between them; a full |
| coverage is out of the scope of this document. But here are the basic |
| registry keys you might need to know about for now. |
| |
| HKEY_LOCAL_MACHINE |
| This fundamental root key (in win9x, stored in the hidden file |
| system.dat) contains everything pertaining to the current |
| Windows installation. |
| |
| HKEY_USERS |
| This fundamental root key (in win9x, stored in the hidden file |
| user.dat) contains configuration data for every user of the |
| installation. |
| |
| HKEY_CLASSES_ROOT |
| This is a link to HKEY_LOCAL_MACHINE\Software\Classes. It |
| contains data describing things like file associations, OLE |
| document handlers, and COM classes. |
| |
| HKEY_CURRENT_USER |
| This is a link to HKEY_USERS\your_username, i.e., your personal |
| configuration. |
| |
| Using a Windows registry |
| |
| If you point Wine at an existing MS Windows installation (by setting |
| the appropriate directories in wine.conf/.winerc), then Wine is able |
| to load registry data from it. However, Wine will not save anything to |
| the real Windows registry, but rather to its own registry files (see |
| below). Of course, if a particular registry value exists in both the |
| Windows registry and in the Wine registry, then Wine will use the |
| latter. |
| |
| Occasionally, Wine may have trouble loading the Windows registry. |
| Usually, this is because the registry is inconsistent or damaged in |
| some way. If that becomes a problem, you may want to download the |
| regclean.exe from the MS website and use it to clean up the registry. |
| Alternatively, you can always use regedit.exe to export the registry |
| data you want into a text file, and then import it in Wine. |
| |
| Wine registry data files |
| |
| In the user's home directory, there is a subdirectory named .wine, |
| where Wine will try to save its registry by default. It saves into |
| four files, which are: |
| |
| system.reg |
| This file contains HKEY_LOCAL_MACHINE. |
| |
| user.reg |
| This file contains HKEY_CURRENT_USER. |
| |
| userdef.reg |
| This file contains HKEY_USERS\.Default (i.e. the default user |
| settings). |
| |
| wine.userreg |
| Wine saves HKEY_USERS to this file (both current and default |
| user), but does not load from it, unless userdef.reg is |
| missing. |
| |
| All of these files are human-readable text files, so unlike Windows, |
| you can actually use an ordinary text editor on them if you must. |
| |
| In addition to these files, Wine can also optionally load from global |
| registry files residing in the same directory as the global wine.conf |
| (i.e. /usr/local/etc if you compiled from source). These are: |
| |
| wine.systemreg |
| Contains HKEY_LOCAL_MACHINE. |
| |
| wine.userreg |
| Contains HKEY_USERS. |
| |
| System administration |
| |
| With the above file structure, it is possible for a system |
| administrator to configure the system so that a system Wine |
| installation (and applications) can be shared by all the users, and |
| still let the users all have their own personalized configuration. An |
| administrator can, after having installed Wine and any Windows |
| application software he wants the users to have access to, copy the |
| resulting system.reg and wine.userreg over to the global registry |
| files (which we assume will reside in /usr/local/etc here), with: |
| |
| cd ~/.wine |
| cp system.reg /usr/local/etc/wine.systemreg |
| cp wine.userreg /usr/local/etc/wine.userreg |
| |
| and perhaps even symlink these back to the administrator's account, to |
| make it easier to install apps system-wide later: |
| |
| ln -sf /usr/local/etc/wine.systemreg system.reg |
| ln -sf /usr/local/etc/wine.userreg wine.userreg |
| |
| Note that the tools/wineinstall script already does all of this for |
| you, if you install Wine as root. If you then install Windows |
| applications while logged in as root, all your users will |
| automatically be able to use them. While the application setup will be |
| taken from the global registry, the users' personalized configurations |
| will be saved in their own home directories. |
| |
| But be careful with what you do with the administrator account - if |
| you do copy or link the administrator's registry to the global |
| registry, any user might be able to read the administrator's |
| preferences, which might not be good if sensitive information |
| (passwords, personal information, etc) is stored there. Only use the |
| administrator account to install software, not for daily work; use an |
| ordinary user account for that. |
| |
| The default registry |
| |
| A Windows registry contains many keys by default, and some of them are |
| necessary for even installers to operate correctly. The keys that the |
| Wine developers have found necessary to install applications are |
| distributed in a file called "winedefault.reg". It is automatically |
| installed for you if you use the tools/wineinstall script, but if you |
| want to install it manually, you can do so by using the regapi tool. |
| You can find more information about this in the |
| documentation/no-windows document in the Wine distribution. |
| |
| The [registry] section |
| |
| With the above information fresh in mind, let's look at the |
| wine.conf/.winerc options for handling the registry. |
| |
| LoadGlobalRegistryFiles |
| Controls whether to try to load the global registry files, if |
| they exist. |
| |
| LoadHomeRegistryFiles |
| Controls whether to try to load the user's registry files (in |
| the .wine subdirectory of the user's home directory). |
| |
| LoadWindowsRegistryFiles |
| Controls whether Wine will attempt to load registry data from a |
| real Windows registry in an existing MS Windows installation. |
| |
| WritetoHomeRegistryFiles |
| Controls whether registry data will be written to the user's |
| registry files. (Currently, there is no alternative, so if you |
| turn this off, Wine cannot save the registry on disk at all; |
| after you exit Wine, your changes will be lost.) |
| |
| UseNewFormat |
| This option is obsolete. Wine now always use the new format; |
| support for the old format was removed a while ago. |
| |
| PeriodicSave |
| If this option is set to a nonzero value, it specifies that you |
| want the registry to be saved to disk at the given interval. If |
| it is not set, the registry will only be saved to disk when the |
| wineserver terminates. |
| |
| SaveOnlyUpdatedKeys |
| Controls whether the entire registry is saved to the user's |
| registry files, or only subkeys the user have actually changed. |
| Considering that the user's registry will override any global |
| registry files and Windows registry files, it usually makes |
| sense to only save user-modified subkeys; that way, changes to |
| the rest of the global or Windows registries will still affect |
| the user. |
| |
| - Ove Kåven |