mirror of
https://github.com/reactos/wine.git
synced 2024-11-29 14:40:56 +00:00
179 lines
7.7 KiB
Plaintext
179 lines
7.7 KiB
Plaintext
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
|