jeffzaroyko at gmail.com
Mon Sep 29 16:34:51 CDT 2008
On Tue, Sep 30, 2008 at 6:52 AM, Austin English <austinenglish at gmail.com> wrote:
> On Mon, Sep 29, 2008 at 3:39 PM, Mark Wagner <carnildo at gmail.com> wrote:
>> What's the best way for an application to detect that it's running under Wine?
>> As part of the installation process, under Windows our program does a
>> full-disk search of all local hard drives, but ignoring network drives
>> and removable media. Under Wine, this doesn't work too well, as
>> there's not a one-to-one mapping between disks and drive letters, and
>> there's usually at least one way to access the entire *nix filesystem.
>> If someone's got a few network drives mounted, the installer could
>> spend hours searching them.
>> Mark Wagner
> Easiest way is probably searching for wine specific registry keys.
Easier still would be checking for wine_get_version in ntdll...
static const char * (CDECL *pwine_get_version)(void);
HMODULE hntdll = GetModuleHandle("ntdll.dll");
puts("Not running on NT.");
pwine_get_version = (void *)GetProcAddress(hntdll, "wine_get_version");
printf("Running on Wine... %s\n",pwine_get_version());
puts("did not detect Wine.");
jeffz at genera:~$ i586-mingw32msvc-gcc detect.c -o detect.exe
jeffz at genera:~$ ~/git/wine/wine detect.exe
Running on Wine... 1.1.5
More information about the wine-devel