Wine Registry

From Wine-Wiki.org
Jump to: navigation, search

Contents

Information

The Wine registry has been constantly worked on and has replaced the config file. In June 2005 Winecfg, was activated and now saves changes to the registry. Dimi Paun maintains a list of where you can now set different options for Wine, and the scope they have here http://winehq.org/site/status_options . Wine moves very fast and so this information can quickly become out of date.

There are four human readable files that are used to store registry information:

As all of these files are text files, unlike Windows, you can actually use an ordinary text editor on them if you want (but do make sure you don't have Wine running when modifying them, otherwise your changes will be discarded). It is best to use the registry editor with Wine. regedit

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:

Currently the deprecated config file will still affect some settings. [Update] The config file has been competely deprecated. Be aware that due to the fast pace of wine development, some sections of the registry may change at a future date. L. Zhang Aug 08 bug 7598: With current git, regedit imported just fine, but only exports to the v4 format.


Note
According to the official wiki, If the Registry key does not exist, you will need to create it. All values will be strings (REG_SZ) unless stated otherwise.

Further Reading

The Registry Settings

Windows Version

Some applications work only with version=win98, and other applications work only with version=win2k. If an application won't start and pops up a message like 'This program requires Windows 2000/XP' then you may try to change this setting to get this program to work.

Wine Dll Overrides

You can use winecfg to save settings to the registry or WINEDLLOVERRIDES from the command line.

Command line example: WINEDLLOVERRIDES="comctl32=n;commctrl=n" wine foo.exe

Following native DLLs can't be used in Wine: ntdll.dll, gdi32.dll, kernel32.dll, advapi32.dll, winsock32.dll, and some others. Many DLLs from Windows XP don't work either. Use their Windows 98 equivalents or builtin DLLs instead.

For more information see the environment variable "WINEDLLOVERRIDES" in The Wine Man Pages

A user queried the use of this expression [Apr 06]:

"*"="native, builtin"

Does the "*" mean that if the driver, dll, exe in question is not listed in the DllOverrides section, that it defaults to using the native version of the file and, if not available, then tries to find and run a builtin version?

M. McCormack:"*" no longer does anything, and should be removed from registries. It's original intent was to force using native dlls over builtin dlls whenever found. It encouraged people to copy all the dlls from a windows install into their .wine, and was therefore removed.

The user queried further: if the file with the * in front of it exists, what would be Wine's behavior towards it. What I mean is, what does the * in the file name mean to Wine? Is it just a standard wildcard to match many files to one entry?

A. Julliard: The wildcard means that it matches that file in any directory. The same entry without wildcard would match only when loading from the system directory. wine archive

Fonts

Truetype Fonts

Here is the homepage for corefonts: http://corefonts.sourceforge.net/

Apparently these are the MS fonts (Andale Mono,Arial, Comic Sans MS, courier, Georgia, Impact, Times New Roman, Trebuchet, and Verdana), which are allowed to be redistributed unaltered, according to the EULA and FAQ linked to on the page, so the maintainer has done so. These can be installed via Portage, for Gentoo users, but this package is available via all (or most) distribution repositories - Google search for corefonts. Debian even has an msttcorefonts package in its 'contrib' section (stable, testing, and unstable).

The corefonts homepage makes RPMs, the original .exe files and cabextract available. Some distributions, such as SuSE, actually offer to install the MS core fonts unrepackaged (directly from the Microsoft site, I believe) via YaST. You may have to accept a licence for each individual font and it is often a slow process. So it's nice to have the *.exe files available from somewhere else, as well as the RPM.

The standard location for fonts under X.org is in /usr/share/fonts, but of course other users' locations may be different. If still using XFree86, the fonts may be in /usr/lib/X11/fonts, or /usr/X11R6/lib/X11/fonts/, and any given distro may have a custom location over and above that. However, once the corefonts are installed, a simple locate arial.ttf should indicate the path for these fonts. External True Type fonts are listed in the Wine Registry

HKEY_LOCAL_MACHINE=>Software=>Wine=>Fonts=>External Fonts

Apparently Wine or winecfg scans your system for True Type fonts and registers/lists what it finds, all by itself.

Forum Discussions

Wine's Registry format

A Programmer noted [Jun 05]:Wine Archive Wine loads the entire registry when it first runs, which can get become a waste - even if it's going to be swapped off anyway [...]It's also not the fastest method of input and especially output to the registry. [...and then suggested] Using a small helper app to sync our plain-text registry files into a db format would let us maintain a human-readable format of our registry, while also reducing the overhead required by the current registry format.[...] - It would also provide us with a quicker and easier way to search through the registry - so we could finally implement the Find feature in wine's regedit without much effort ( Not that it couldn't be done as is, but things would definitely be easier ).


A. Julliard: Actually the current method is probably the fastest for everything except the initial read. Admittedly it's not very elegant, but it's simple and allows us to store everything in text format. So I'm not at all convinced that using a real database would be worth the trouble.

D. Lambert: Samba already uses something called 'TDB', and it's been suggested that the two projects could share a case - insensitive - filename layer based on it; Could you look into using that?

K. Porter: Today's Samba announcement includes something about the ability to handle NT registry files: <http://us2.samba.org/samba/ftp/pre/WHATSNEW-3-0-20pre1.txt>

J. Liggart [Jun 05]: Have you thought about using XML as a potential format? Since the registry is a non-relational tree database, this seems to fit quite well. Plus, there's a few libraries that would do the dirty work for us (libxml, expat, many others, name your pick). It could even be possible to modularize the registry using technologies like XInclude or XLink.

M. Fuchs: the tree format would match. But this would not really make things better. You would also have to read the registry at once at startup time. The best solution would be to use native Windows registry format. This way you could use real Windows registry files, and can read and update registry piecewise. It's organized like a little file system - or database if you want to see it this way. It's not documented. But you could have a look at the ReactOS implementation, which claimes to be compatible to NT4. Win Archive

B. DeMorrow: [...]I'm really not convinced that we need to be compatible with Windows' registry file format at that level. . . That would only benefit applications that don't use the Win32API to access the registry - and as far as I know, Windows doesn't allow you to access the registry like that, so there shouldn't be any applications that would benefit from that. . .

S. Shemesh: How about an application that carries a binary registry hive around, and uses "LoadHive" to merge it (temporarily) into the registry? How about deploying Wine in such a way that it uses the existing user profile, user.dat and all? User.dat is a registry file, that goes through load hive. The way I see the ultimate outcome, Wine should have "Registry providers". These would allow it to use several different registry back ends. The default one would probably be the one used today, but this way we could plug in an SQL back end if needed, as well as a Windows compatible one, if needed.

J. Schmied commented that: Wine had support for reading win2000 registry files once. It was dropped some time ago. I had implemented it around 1999/2000.Have a look in the CVS.

[The discussion turned to implementing the Find function for the registry]Wine Archive

Numbers automatically added to Registry Entries

[2011 feb] a user noticed: In the reg files there is a number at the end of every section/key property. Example:

[System\\CurrentControlSet\\Services\\VxD\\MSTCP] 1296424715

What is the purpose of "1296424715"? Is this a time stamp or checksum?

A. Julliard: It's the key timestamp. J. McKenzie: It is the UNIX epoch time that a registry entry was added/modified. Do not change this entry, it is automatically generated by Wine.

G van den Berg: [wine reg files are] in a format similar to, but not identical to Windows .reg files and that changes (by directly editing) can't be expected to behave in the same way as changes to Windows .reg files.

Creating a .reg file (with the edits) and importing it with regedit is not that hard and a lot less likely to break Wine. This is how it needs to be done on Windows anyway [...]

Current Status

[...] this was a long time comming. Glad to see we're within the deadlines :) Brian [Vincent], now we can update the User Guide too, and get the stuff you wrote some time ago into the official docs. Wine Archive

Feel free to add missed and, or further changes

Tips and Tricks

Backing up before playing

A. English jan 09: it is easy to restore your registry:

cd $HOME/.wine
ls

(notice there are two .reg files)

cp system.reg system.old.reg
cp user.reg user.old.reg
wine regedit

[(make your changes to the registry and when you close, it SAVES them)]

It is that simple. If you break the registry [ you can restore the old one]:

cd $HOME/.wine
rm system.reg
rm user.reg
cp system.old.reg system.reg
cp user.old.reg user.reg


All changes are now gone and you should be able to run Wine again.

Clipboard

As Segin noted Mar 2006: There are two clipboards [...] select some text in Wine, and middle click in a Xterm, nothing happens! Go back to the Windows app, tell it to copy the text, and try to paste it into the xterm, nothing again!

P.Krylov: You need to set the Wine registry entry X11 Driver/UsePrimarySelection to 'Y'. I submitted a patch for Winecfg to do it, but it wasn't accepted and it was a long time ago... wine archive

Winehq Bugzilla entry 18448 Vitaliy: set "HKCU\Software\Wine\X11 Driver\UsePrimarySelection" to true [to be able to use the middle button to copy]

D. Timoshkov 2009-05-12 pointed to the code comments From dlls/winex11.drv/clipboard.c:

*    Wine's internal clipboard is exposed to external apps via the X selection mechanism. Currently the driver asserts ownership via two selection atoms:  
*    1. PRIMARY(XA_PRIMARY)
*    2. CLIPBOARD
*    In our implementation, the CLIPBOARD selection takes precedence over PRIMARY, 
i.e. if a CLIPBOARD selection is available, it is used instead of PRIMARY.

So it's an intentional choice. And as Vitaliy said there is a registry key (UsePrimarySelection) which changes the behaviour.

Importing or exporting a Windows .reg File

Binary files are apparently not imported into wine so .bin files are not going to work. try installing with a registry monitor on windows and then export the file as .reg

B. Vincent: An app I have uses the registry as a massive data store. There are literally thousands of keys and values sitting in there. It would be nice to export a small branch of the registry and just import that into Wine.

A. Hanulla: If I remember correctly, [...] the following command is enough:

$ regedit file.reg

R. Shearman: This doesn't work for Windows NT .reg files though, as they are generated in Unicode format by default. It shouldn't require too many changes for regedit to work with Unicode files. The changes to the profile functions in kernel32 to work with Unicode were simple enough.


Sept 08 wine bug [Bug 7598] Regedit cannot import/export version 5 registry files post: Now it can export to unicode as well. [The bug was marked as fixed apparently in time for wine 1.15]

vitamin Nov 08: The only gotcha - those .reg files have to be in ascii (not unicode) format (NT4.0+ format).

Graphics

Video Memory Size

StringCheesian [Nov 08]: Wine has been changed to try to detect your video card and guess how much memory it has. In case it guesses wrong, here is the registry key: HKEY_CURRENT_USER -> Software -> Wine -> Direct3D -> VideoMemorySize See http://wiki.winehq.org/UsefulRegistryKeys

For example: if the card is a GeForce 7600GS, those usually have 256MB and that will be wine's guess. However some have 512MB, in those cases it may be necessary to set the registry key manually.


On user with a graphics problem was asked by A. English in bug 9379 [ajn09]: Does setting VideoMemorySize in registry help? http://wiki.winehq.org/UsefulRegistryKeys

[Set it's value] In MB, e.g., if 64 mb, set to 64. If you're on Linux, 'lscpi -v' should tell you [how much memory your card has]. Other os's may be different.

Vitamin: mar 09 Wine does not use video memory directly - OpenGL API does not allow that. Wine just creates objects (for example textures) and it's up to OGL where they are allocated. Wine just "simulates" amount of memory for windows apps that want to know how much there is and how much left.

Evil Jay wrote: Along a similar line: Is there a way to easily detect the value Wine's using for the memory size of your video card? Vitamin: No, you will have to enable d3d debug channel and grep [i.e. search] for "GetAvailableTextureMem"


Evil Jay wrote: Also: I see from the docs that you set the value in MB, but do you need to define it as a string, dword, or other?

Vitamin pointed to the official wiki manual:[it] helps: http://wiki.winehq.org/UsefulRegistryKeys (right at the top... bold text).

GLSL

enabling GLSL: (HKCU/Software/Wine/Direct3D/UseGLSL = enabled) wine archive

texture repacking

repacking can be quite CPU intensive, and warhammer 40k is the only game so far that needs nonpower2 texture repacking so it's turned off by default but can be turned on via the following registry key:

HKEY_CURRENT_USER/Software/Wine/Direct3D Nonpower2Mode [repack]

Writing to the Registry

A developer using perl wrote: I'm trying to find some elegant method to access registry keys added during one WINE session, i.e. without restarting WINE.

Test case description:

  1. Open WINE session
    wineconsole --backend=user cmd
  2. During session, insert some new registry key
    regedit new-entry.reg
  3. Try to access the new registry entry from bash
    cat ~/.wine/system.reg |grep AutoHotkey (fails)

L. Zhang:Accessing the Wine registry directly is probably not the right way to do it, you should go through the Windows registry API calls, i.e. RegQueryValue.

The devloper pointed to http://winehq.org/site/docs/wineusr-guide/using-regedit there are two ways to access the registry - using file access and using regedit.

L. Zhang:Yes, but the documentation specifically says only to access the file when Wine is not running.

B. Medland: Use the shell

wine regedit -e /tmp/$$.reg <branch> && cat /tmp/$$.reg && rm -f /tmp/$ $.reg

The developer noted; I simply want registry export to STDOUT nothing else. [He then considered a new tool for wine]... able to output registry entries to STDOUT.

D. Riekenberg: Did you test reg.exe / regini.exe ? [...] Both are from Microsoft.

Example:

$ wine reg.exe query "HKCU\Software\wine\MSHTML"
! REG.EXE VERSION 3.0
HKEY_CURRENT_USER\Software\wine\MSHTML
GeckoUrl REG_SZ http://source.winehq.org/winegecko.php

[the disucssion continued]


Winehq Bugzilla entry 19526 contained a discussion about whether importing keys should be silent [Jul 09]. D. Timoshkov wrote: For scripts there is reg.exe

Automated Registry Entries

A wine user reported [Mar 07]: currently each user of my Wine-installation has to run "wine regedit" and add the ActivePerl directory manually to the HKEY_CURRENT_USER/Environment/Path variable. Is there please a way for adding "c:\Perl\bin" to the %Path% without regedit, so that I could do it in wineprefixcreate?

B. Medland: What I do is use regedit /e to export the HKLM/System/CurrentControlSet/Control/Session Manager/Environment, grep to extract the current path, and see if the addition is already in it and sed to put it in, then use regedit <filename> to put the modified path in. (in other words regedit can be run in batch mode) Seeing as how you are talking about perl you'd probably prefer a tiny perl script to do that bit. [wine user]

The user reported another solution: just changed this line in the file share/wine/wine.inf:

HKLM,System\CurrentControlSet\Control\Session Manager\Environment,"PATH",2,"%11%;%10%;C:\apps\actperl\bin;Z:\epoc32\tools;Z:\epoc32\gcc\bin"

And it somehow gets copied to every new Wine user (which I wanted). I wonder what does the "2" above mean...


Another comment was made [July 07 wine devel]: I have a shell script that calls winepath -w to get the windows path from a unix path. Then I want to stick the value into the registry by a search and replace in ${WINEPREFIX}/*.reg.

A. Julliard: That's a bad idea. You should use regedit, which will avoid potential conflicts with a running session, and will take care of the encoding (the Ansi codepage is *not* the right encoding for reg files).

Anti-aliasing

A user said [July 05]: I want to turn off Wine Anti-aliasing. I was able to do it in the config file, but now I don't know. 'winecfg' doesn't have any such setting. Can it be turned off in the registry ? If so what is the setting ? Wine Archive

H. Davies: Add the values

"ClientSideAntiAliasWithRender"="N"
"ClientSideAntiAliasWithCore"="N"

to the key HKCU\Software\Wine\X11 Driver

ClientSideWithRender

2011Jan a user wrote: After reading this comment https://bugs.freedesktop.org/show_bug.cgi?id=30157#c5 I'm wondering whether the registry value in comment #4 of that bug report should be made a default value for wine or not ?

A. Julliard: No, setting that registry value is a bad idea and should be discouraged. It will break all sorts of things, particularly anything to do with alpha blending.


Screen Resolution

Stefan Dosinger [Dec 05]: Cedega changes the screen resolution, but desktop dimensions are unchanged. That's a Xrandr issue: Wine uses Xrandr to change the screen resolution: Both the virtual Desktop and the Screen resolution are changed. Cedega only changes the Screen resolution just as if you typed Ctrl + alt + "+". The reason why Wine so is a mouse locking issue: dinput.dll fails to lock the mouse inside the Wine window often, and if the Desktop is bigger than the screen, one can accidentally move the mouse outside the game window. The solution to this one is to fix dinput and avoid the use of Xrandr.

You can prevent Wine from using XRandR to change screen resolution setting the key UseXRandR to "N" in the X11 Driver registry section. wine archive

Mouse

Scrolling

In M$ Windows, there is control panel, where I can set number of lines scrolled by mouse. [How to do this in wine?]

Vitamin mar 09: Change it in registry [using wine's Regedit.] The same place as windows (string value):

[HKEY_CURRENT_USER\Control Panel\Desktop] WheelScrollLines="1"

Jul 09 a user wrote: on quake my croshair [goes] only little bit on left, and right...

Vitamin: All ID's games have bug with the way they work with DInput. You need to set 'MouseWarpOverride' to 'disable'. See http://wiki.winehq.org/UsefulRegistryKeys for more details. [if disable does not work] Try other options (enable, force). Of course you need a newish Wine version for that to work.

Forum Comments

HKCU/Sofware/Wine/AppDefaults/radmin.exe/X11 Driver/Desktop registry key to "1024x768" doesn't work.

[wine-users Apr 06] It's no longer possible to set that per-application in the registry. See http://winehq.org/?issue=310#Major%20Changes%20to%20Desktop%20Mode

Startup

in a discussion regarding of the startup folder several opinions were made: D. Lichteman [Feb 07] suggested: disabling the Run key [...] malicious programs now use the run registry location as opposed to the Startup folder.

Another suggested: How about prompting the user during startup? e.g., "Start <title> using command line <program + args>? Yes/No ([x] Don't ask again"

J. Alberty: Why not integrate this functionality into wineboot? That way if a user wants to completely deny the start-up folder they can just not add wineboot to the list of programs to be started on login, but if they want that functionality they can simply add wineboot to the list of programs for start up when they login? It would allow similar functionality to windows whilst still keeping it a separate system. [wine archive]

Some regular developers raised security concerns, yet others advocated following the behaviour of Windows. M. Koshelev sent a couple of version of he patche to wine-patches and Alexandre committed the "like windows behavior" patch that starts the startup programs without asking the user (as part of wineboot), and we had decided to think about what we were going to do for security later.

Configuring Sound

Occasionally when your sound driver has some bugs (aRts seems to be regularly mentioned), you cannot successfully run winecfg to set up sound for Wine. This has been noticed and worked on several times, with a measure of success. However, you can easily work around this problem using regedit, the registry editor. Don't be too fearful of working with the registry. Make a backup if needed and lets dive in and get our feet wet. (Don't forget that wine can be 'reinstalled' rather quickly by deleting all the files in .wine and typing winecfg, but just as a reminder...make sure to backup any files you need first.)

Run "wine regedit", and locate the path:

Change the value of the key "Audio" according to your system. If this is a fresh install, the "Audio" key may not be present, so just create a new one. This key is created when winecfg saves changes for the first time.

Disabling the sound driver has allowed the Audio tab in winecfg to work on some systems, but on systems with aRts this may not work. Selecting the sound driver with winecfg will allow sound to work for your applications even if the Audio tab crashes.

References: wine archive

Printing

A user queried: Is there a detailed explanation of the printer setup in the registry of modern Wine (0.9.38) ? I can't seem to find any documentation and I'm having some weird printing problems that I would like to resolve and I think the key may be in the registry.

D. Riekenberg [Wine user Jun 2007]


A user said: the first printing driver is the WINE PS driver and that its path is:

[System\\CurrentControlSet\\Control\\Print\\Environments\\Windows 4.0\\Drivers\\PS Driver]

D. Riekenberg [Sept 07 wine user]: That path was right on win9x, but NT and wine use now for win9x Drivers:

[System\\CurrentControlSet\\Control\\Print\\Environments\\Windows 4.0\\Drivers\\Version-0\\PS Driver]

in fact the PS driver can be reached under different names by the programs emulated by WINE. The Name "PS Driver" was replaced in November 2006. We now use the Printer-Name also for the Drivername

This is the correct Path for NT Drivers since W2K ("EPSON Stylus C48" as example Driver)

[System\\CurrentControlSet\\Control\\Print\\Environments\\Windows NT x86\\Drivers\\Version-3\\EPSON Stylus C48]

With a recent chage (wine-0.9.45), wine [resets] both entries for the Drivers. You can delete the Registry-Path "HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Control\\Print", and wine creates all needed entries.


one user noticed an error and wondered if it was connected to printing and wine registry settings: err:heap:HEAP_CreateSystemHeap system heap base address 0x80000000 not available

D. Riekengerg [pointed out this is not a problem with printing sept 07 wine user]: Your Kernel is not correct configured to work with Wine. 3GB User Memory Area is needed, but some kernels are compiled with 2GB/2GB splitting. Many Windows Applications expect the Heap at a fixed address.

Ports

Keep in mind that wine is a fast moving target, so some of this info may become quickly out of date. It is however a starting point for research and if you can update a point, please add a note about the date and do so. Because of the sharp increase in non wine posts, this page requires a login name to edit.

H. Bostick explained Permission difficulties can prevent access to the ports[Oct 05] : [one users settings for] com ports [were] only available to root, and Wine is not intended to be run by root (and in fact should not be run by root). On my system, /dev/ttyS1 is a symlink to /dev/tts/1 which is owned by root and the tty group. Is your user a member of all such groups that might own the serial ports (tty, serial, com, dialup or dialout, etc)? Please check this (easiest would be to look in /dev and see what group exactly owns the ports and add yourself to it), and after doing so, remove (delete, rm -rf) the /.wine directory in /root (root's HOME folder), as root having a Wine configuration will mess up your user configuration, then try your program again. [wine archive]


Serial Com Port

[It appears more recent versions of wine (wine 1.1.11 was tested) automatically do this for you. check that the ports have the correct permissions and wine should see it, just check if the port exists and if not, add it via a symbolic link under the dosdevices directory - see http://www.winehq.org/docs/wineusr-guide/misc-things-to-configure#AEN407].

A programmer found a program that: did not "see" the COM ports until I added the following entries into the registry:

[HKEY_LOCAL_MACHINE\hardware\devicemap\serialcomm]
"COM2"="COM2"
"COM1"="COM1"

[Nov 05] One user reported: I have found that while many apps will happily Just Work, some apps need the following entries in system.reg: wine archive

[HARDWARE\\DEVICEMAP\\SERIALCOMM] 1131331688
"COM1"="COM1"
"COM2"="COM2"

A user Jun 08 wine user asked about USB serial devices: how should I specify ttyUSB in the registry?

O. Kaaven: You don't.[..]The registry isn't involved at all.[..] You just symlink it into .wine/dosdevices, e.g.

ln -s /dev/ttyUSB ~/.wine/dosdevices/com1

D. Kegel: make sure you can access the serial port from Linux yet. See http://blog.mypapit.net/2008/05/how-to-use-usb-serial-port-converter-in-ubuntu.html

Ben reported Jan 09: After doing a bunch of research and tweaking, I figure out that I need to add the following to my ~/.wine/system.reg:

[Hardware\\Devicemap\\Serialcomm] 1231984861 @=""
"Serial0"="COM1"
"Serial1"="COM2"
"Serial2"="COM3"
"Serial3"="COM4"
"Serial4"="COM5"
"Serial5"="COM6"
"Serial6"="COM7"
"Serial7"="COM8"
"Serial8"="COM9"

This problem and solution was confirmed again in Mar 09 in Winehq Bugzilla entry 15091. If you are able, could you perhaps write a patch for wine? It may be connected, but S. Leichter wrote to the devel list in Apr 09: [A. J] you said in http://www.winehq.org/pipermail/wine-devel/2008-November/070691.html that registry entries for the serial ports should be created from the information received from hal. i 'm planing to implement this code. But before i start coding i like to know where the code should be created. Should the code go into kernel32/oldconfig.c, should i start creating serenum.sys is there any other place?. A. Juliard: It should go somewhere in mountmgr.sys for now.

D. Jovanovic [Apr 09] I saw one of the BSDs has a null modem driver that emulates a pair of connected serial ports as a standard part of the kernel (http://fxr.watson.org/fxr/source/dev/nmdm/nmdm.c), while Linux not only hasn't got it, but when a guy sent a patch into LKML some years ago it got... completely ignored (found that mail once by accident after hours of googling, couldn't find it again).

With a virtual serial port you can do all sorts of nifty things, serial to RFC 2217 allowing access to remote serial port hardware, sharing read-only hardware like GPSes over several virtual serial ports, and monitoring communication between an application and a real serial port. "Mighty handy for use with serial console in Vmware" reads a comment in the BSD driver. Regression testing Wine is just one useful side effect.

So I'll be resuming my work on a virtual serial port kernel module for Linux. It's a shame we still don't have one in 2009. S. Krasukas: Basic tests could probably cover Tx/Rx signals only, so IMHO none kernel module would be necessary -- some user space app can suffice (remserial, socat, nullmodem). But that would tie such test to a specific configuration of a particular linux box... For tests, I suppose Wine really needs some stubby serial driver (eg one comming from the mentioned com0com), which would then communicate with ntdll/wineserver, where the missing functionality could probably be redirected to the linux kernel, when it's implemented there. No? With regard to [someone volunteering to write tests] personally I would start hacking at making com0com to work on Wine. [ Windows device driver, one example is com0com (http://com0com.sourceforge.net/).]

Parallel Port

Sept 06 wine user a poster : I need [..] to set the port numbers for direct access. In the old version of wine it was:

[ports]
"read"  = "0x378-0x37f,0x778,0x779-0x77a" "write"  =
"0x378-0x37f,0x778,0x779-0x77a"

D. Skorka: According to the Wine Users Guide ... http://wiki.winehq.org/UsefulRegistryKeys [these settings go] under HKCU/Software/Wine/VDM/ppdev

However the poster said: I know about this UsefulRegistryKeys but there is only how to set mapping between port_number and /dev/parportN device. I need the direct access to the port without some device.

D. Kegel: Believe it or not, the same registry keys control both modes of parallel port access. See http://source.winehq.org/source/dlls/winedos/ioports.c

The poster reported success:I have solved my problem, [as] I have set the registry in /software/wine/vdm/ppdev

[Software\\Wine\\VDM\\ppdev] 1158041439 
"378"="/dev/parport0"
"379"="/dev/parport0"
"37a"="/dev/parport0"
"37b"="/dev/parport0"
"37c"="/dev/parport0"
"37e"="/dev/parport0"
"37f"="/dev/parport0"
"778"="/dev/parport0"
"779"="/dev/parport0"
"77a"="/dev/parport0"

and the most important thing was to run the application in win 98 "emulation mode". (I [had] ran it in win NT mode)

A programmer wrote [May 2007 wine user] I have a .sys driver for parallel port communication. But it seems wine didn't support loading the driver.

D. Riekenberg: As the first step, you should try to avoid the special Driver and use the Parallelport-Driver from Windows. The default Location in the ObjectManager for the first Parallel Port is: "\Device\Parallel0".

(HKLM\Hardware\Devicemap\Parallel Ports\")

But Parallel Ports are unsupported in wine yet.... (For serial Ports, the Driver is: "dlls\ntdll\serial.c")

The programmer added: And directly accessing to parallel port is not allowed on the XP host, therefore _outp and _inp are useless.

D. Riekenberg: You need to use the Windows-API for the access: CreateFile / ReadFile / WriteFile and DeviceIOControl. [Mar 2007]


[2006]Direct access to the parallel port is necessary for programs such as EPROM burners or ones that use dongles.

This is very slow under wine and puts heavy load on the CPU, which is a known bug 3845 .

There are two ways:

1) The correct and safe way (which works with every parallel port):

Add a device mapping by adding the registry key "Software\Wine\VDM\ppdev". Then add a string entry for every port you want to use:

"378" with value "/dev/parport0" for LPT1,
"278" with value "/dev/parport1" for LPT2,
...

Not all distributions provide the /dev/parport? entries by default, since they're not needed for normal printing. You can create /dev/parport0 with mknod /dev/parport0 c 99 0

Make sure that you have the ppdev driver in your kernel.

Now create a group for all users that should be allowed to access the parallel port and give /dev/parport? to it or just set the rights on /dev/parport? to 777.

2) Quick and dirty (which will only works with parallel ports that are located at the I/O locations the IBM PC uses for parallel ports):

Create the registry key "Software\Wine\VDM\Ports" and add string entries

"read" = "0x779,0x379,0x280-0x2a0"
"write" = "0x779,0x379,0x280-0x2a0"

Run wine as root and you can use LPT1 and LPT2. [Ed. Note running wine as root is not recommended unless you are an expert user of wine.]

[Nov 05] a user posted: Try to set the windows version [as 2000 and then] add the following registry keys

[HKEY_USERS\S-1-5-4\Software\Wine\VDM\Ports]
"read"="0x278-0x27f,0x378-0x37f"
"write"="0x278-0x27f,0x378-0x37f"

and run wine as root. That's how I made an eprom burner that has to do direct parallel port access work. wine archive

Scanners may give messages similar to what was described by one man:

fixme:vxd:VXD_Open Unknown/unsupported VxD L"plkscnr.vxd". Try setting Windows version to 'nt40' or 'win31'.
fixme:vxd:VXD_Open Unknown/unsupported VxD L"scandrv.vxd". Try setting Windows version to 'nt40' or 'win31'.

many vxd drivers dont currently work on Wine due to design reasons. This can be avoided by changing the version of Windows using winecfg

P. Krause: It could be that you application tries to use the vxd files when running on Windows 2000, but do the I/O itself when running under Windows 98. wine archive

Further Reading

ODBC

A user posted: I have in an existing windows installation a large number of 'system DSN data sources' which I would like to have under wine. Is it possible to import these?

Another posted: The system DSN's are stored in the windows registry and can be exported using "regedit". Run regedit under windows and locate

HKEY_LOCAL_MACHINE/SOFTWARE/ODBC

right-click on the ODBC node to export its contents to a file. The result is a text file in a very similar format to the wine registry file and I believe it can be imported using the wine version of "regedit". Or you can just paste the contents into the (text based) wine registry file whilst changing the headers to match the wine registry header's style. wine archive

Time

During a discussion about where to store the information M.McCormack offered: TimeZones are stored in what Wine called the %CurrentVersion% key. It's easy enough to change the program that generates the data to put them in Windows NT\CurrentVersion if that's what is decided to be correct.

A. Jullard: In theory it should be under both, but for now we probably should put it under Windows NT only, until we find an app that depends on the Win9x location.

Drives

A user reported that for a cdrom:

HKLM/Software/Wine/drives (with name "D:", type "REG_SZ", and data "cdrom").

Drive Label and Serial settings seems to be unsupported.

Path

A user asked where to set the path for Wine. J. Earnst [Oct 05] Use regedit and edit the key at wine archive:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment

Another user found his software tried to add the path to autoexec.bat [Dec 05]: the GTK dll path was in autoexec.bat, but it seems wine doesn't take care about it, so i added the dll path to the wine path in system.reg:

PATH"="c:\\windows\\system;c:\\windows;c:\\Program Files\\FichiersCommuns\\GTK\\2.0\\bin"

Path for Dlls

A programmer noted that Dreamweaver MX6 looks in the registry: For additional directory locations to search for DLLs.

HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\App Paths\\EXENAME.EXE

M. McCormack [Oct 06]: The App Pathes key is checked by ShellExecute, not by CreateProcess. [He then explained how to work around this] Try running "wine start exename.exe" wine archive

Networking

Netbios

J. Lang: [April 06] [For] NetBIOS [...] the registry has to be set up [...] You have to set up the WINS servers, if you use them. This isn't documented except in the code (dlls/netapi32/nbt.c.) It's marked with the usual @@ Wine registry key tag. There are some other things you can tweak if necessary. I suppose this could go into winecfg. It can't go into wine.inf, because we can't guess correct values. .[...] Broadcast name resolution works without any setup, and WINS can be added by those that use it. (That should probably be documented someplace.) wine archive

DNS NameServer

R. Klazes [Nov 05]: Lots, if not most, of applications would use the winsock function gethostbyname, which is handled by the Unix gethostbyname function. That works fine ;)

If I add the string registry value

HKLM\System\CurrentControlset\Services\Tcpip\Parameters\DhcpNameServer

and fill it the IP address of a name server it works here. A NT4 nslookup.exe worked immediately, a Win2K version only if I did set the version to NT4. wine archive


Proxy Server

R. Holt [Dec 05] was trying to use wine with some M$ software from behind [a] company firewall: All outgoing connections need to go through our proxy server.[...] To get it to work, I edited my ~/.wine/user.reg and added in the section titled:

[Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings] 1133455573
"ProxyEnable"=dword:00000001
"ProxyServer"="www-proxy.[redacted].org:8080"

A poster tried:

ftp_proxy=ftp://[redacted.bla.com.port]
http_proxy=http://proxy...
https_proxy=http://proxy... no_proxy='localhost, [redacted]'

Any ideas why it doesn't start the download?

M. Hearn:Wine doesn't currently support these environment variables. I sent a patch to add support for $http_proxy so this would work but it hasn't been checked in yet. Until Alexandre makes a decision you must manually fiddle with the registry to set the proxy settings. wine archive

The user then reported I added below

[Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings]
147164925
@=""

[The following]

"ProxyEnable"=dword:00000001
"ProxyServer"="proxy.[redacted:port]"

in the user.reg and it started and completed the download. But after this, iexplore.exe just blinked and closed again

Further Reading

Internet Explorer

Faking it..

P. Vriens [Jul 06 regarding MSN Messenger] if you add \HKLM\SOFTWARE\Microsoft\Internet Explorer\Version (REG_SZ with 6.0.2900.2180) it installs.

D. Kegel: So many apps need this that I use a shell script to create it: http://kegel.com/wine/fakeie.sh.txt (One of these days I'll make that script use regedit...) wine archive

Links

Wine Links

Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox