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 Kven
