  <sect1 id="registry">
    <title>The Registry</title>

    <para>
      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/XP/etc.-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.
    </para>

    <sect2>
      <title>The default registry</title>

      <para>
        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
        <filename>wine.inf</filename>. It is automatically
        installed for you if you use the
        <filename>tools/wineinstall</filename> script in the Wine source,
	but if you want to install it manually, you can do so by using the
        <command>regedit</command> tool to be found in the
	<filename>programs/regedit/</filename>
	directory in Wine source.
	<filename>wine.inf</filename> is  applied even if
	you plan to use a native Windows registry, since Wine needs some
	specific registry settings in its registry (for special
	workarounds for certain programs etc.).
	This is done automatically by wine the first time you run it.
       </para>
    </sect2>

    <sect2>
      <title>Using a Windows registry</title>

      <para>
        If you point Wine at an existing Windows installation (by
        setting the appropriate directories in
        <filename>~/.wine/config</filename>, 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. In the Wine config file, there
	are a number of configuration settings in the [registry] section
	(see below) specific to the handling of Windows registry content by Wine.
      </para>
    </sect2>

      <sect2>
        <title>The Registry</title>
        <para>
          The initial default registry content to be used by the Wine
	  registry files is in the file
          <filename>wine.inf</filename>. It contains directory
          paths, class IDs, and more; it must be installed before most
          <filename>INSTALL.EXE</filename> or
          <filename>SETUP.EXE</filename> applications will work.
        </para>
      </sect2>

    <sect2>
      <title>Registry structure</title>

      <para>
        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.
      </para>


      <variablelist>
        <varlistentry>
          <term>HKEY_LOCAL_MACHINE</term>
          <listitem>
            <para>
              This fundamental root key (in win9x it's stored in the
              hidden file <filename>system.dat</filename>) contains
              everything pertaining to the current Windows
              installation.
            </para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term>HKEY_USERS</term>
          <listitem>
            <para>
              This fundamental root key (in win9x it's stored in the
              hidden file <filename>user.dat</filename>) contains
              configuration data for every user of the installation.
            </para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term>HKEY_CLASSES_ROOT</term>
          <listitem>
            <para>
              This is a link to HKEY_LOCAL_MACHINE\Software\Classes.
              It contains data describing things like file
              associations, OLE document handlers, and COM classes.
            </para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term>HKEY_CURRENT_USER</term>
          <listitem>
            <para>
              This is a link to HKEY_USERS\your_username, i.e., your
              personal configuration.
            </para>
          </listitem>
        </varlistentry>
      </variablelist>
    </sect2>

    <sect2>
      <title>Wine registry data files</title>

      <para>
        In the user's home directory, there is a subdirectory named
        <filename>.wine</filename>, where Wine will try to save its
        registry by default. It saves into four files, which are:
      </para>

      <variablelist>
        <varlistentry>
          <term><filename>system.reg</filename></term>
          <listitem>
            <para>
              This file contains HKEY_LOCAL_MACHINE.
            </para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><filename>user.reg</filename></term>
          <listitem>
            <para>
              This file contains HKEY_CURRENT_USER.
            </para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><filename>userdef.reg</filename></term>
          <listitem>
            <para>
              This file contains HKEY_USERS\.Default (i.e. the default
              user settings).
            </para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><filename>wine.userreg</filename></term>
          <listitem>
            <para>
              Wine saves HKEY_USERS to this file (both current and
              default user), but does not load from it, unless
              <filename>userdef.reg</filename> is missing.
            </para>
          </listitem>
        </varlistentry>
      </variablelist>
      <para>
        All of these files are human-readable text files, so unlike
        Windows, you can actually use an ordinary text editor on them
        if you want (make sure you don't have Wine running when modifying
	them, otherwise your changes will be discarded).
      </para>
      <para>
        FIXME: global configuration currently not implemented.

        In addition to these files, Wine can also optionally load from
        global registry files residing in the same directory as the
        global <filename>wine.conf</filename> (i.e.
        <filename>/usr/local/etc</filename> if you compiled from
        source). These are:
      </para>

      <variablelist>
        <varlistentry>
          <term><filename>wine.systemreg</filename></term>
          <listitem>
            <para>
              Contains HKEY_LOCAL_MACHINE.
            </para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term><filename>wine.userreg</filename></term>
          <listitem>
            <para>
              Contains HKEY_USERS.
            </para>
          </listitem>
        </varlistentry>
      </variablelist>
    </sect2>

    <sect2>
      <title>System administration</title>

      <para>
        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
        <filename>system.reg</filename> and
        <filename>user.reg</filename> over to the global registry
        files (which we assume will reside in
        <filename>/usr/local/etc</filename> here), with:
      </para>
  <screen>
  cd ~/.wine
  cp system.reg /usr/local/etc/wine.systemreg
  cp user.reg /usr/local/etc/wine.userreg
  </screen>
      <para>
        and perhaps even symlink these back to the administrator's
        account, to make it easier to install apps system-wide later:
      </para>
  <screen>
  ln -sf /usr/local/etc/wine.systemreg system.reg
  ln -sf /usr/local/etc/wine.userreg user.reg
  </screen>
      <para>
        Note that the <filename>tools/wineinstall</filename> script
        already does all of this for you, if you install Wine source 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.
      </para>
      <para>
        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.
      </para>
    </sect2>

    <sect2>
      <title>The [registry] section</title>

      <para>
        Now let's look at the <link linkend="config-file">Wine
	configuration file</link> options for handling the registry.
      </para>

      <variablelist>
        <varlistentry>
	  <term>GlobalRegistryDir</term>
	  <listitem>
	    <para>
	      Optional.  Sets the path to look for the Global
	      Registry.
	    </para>
	  </listitem>
	</varlistentry>
        <varlistentry>
          <term>LoadGlobalRegistryFiles</term>
          <listitem>
            <para>
              Controls whether to try to load the global registry
              files, if they exist.
            </para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term>LoadHomeRegistryFiles</term>
          <listitem>
            <para>
              Controls whether to try to load the user's registry
              files (in the <filename>.wine</filename> subdirectory of
              the user's home directory).
            </para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term>LoadWindowsRegistryFiles</term>
          <listitem>
            <para>
              Controls whether Wine will attempt to load registry data
              from a real Windows registry in an existing MS Windows
              installation.
            </para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term>WritetoHomeRegistryFiles</term>
          <listitem>
            <para>
              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.)
            </para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term>SaveOnlyUpdatedKeys</term>
          <listitem>
            <para>
              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.
            </para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term>PeriodicSave</term>
          <listitem>
            <para>
              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.
            </para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term>UseNewFormat</term>
          <listitem>
            <para>
              This option is obsolete. Wine now always uses the new
              format; support for the old format was removed a while
              ago.
            </para>
          </listitem>
        </varlistentry>
      </variablelist>
    </sect2>
  </sect1>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-parent-document:("configuring.sgml" "chapter" "sect1" "")
End:
-->
