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