| 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 |