Определите, работает ли программа под Wine во время выполнения - PullRequest
16 голосов
/ 10 сентября 2011

Я думаю, что заголовок говорит само за себя ... Я пишу приложение на C ++, и мне нужно во время выполнения определить, работаю ли я под Wine (чтобы немного изменить поведение, чтобы избежать конкретной ошибки Wine ). Есть ли удобный для программиста способ или я должен возиться с запущенными процессами?

Ответы [ 2 ]

9 голосов
/ 10 сентября 2011

Существует много записей реестра, относящихся к Wine:

HKEY_CURRENT_USER\Software\Wine
HKEY_LOCAL_MACHINE\Software\Wine

Проверка того, существует ли раздел реестра содержит ответ о том, как проверить эти разделы реестра для Wine.

6 голосов
/ 20 февраля 2017

Этот ответ является всего лишь копией комментария user1457056.Поскольку ссылки часто умирают, ответы иногда становятся бесполезными.Я скопировал содержание ссылки здесь, чтобы сохранить этот полезный ответ:

#include <windows.h>
#include <stdio.h>
int main(void)
{
    static const char *(CDECL *pwine_get_version)(void);
    HMODULE hntdll = GetModuleHandle("ntdll.dll");
    if(!hntdll)
    {
        puts("Not running on NT.");
        return 1;
    }

    pwine_get_version = (void *)GetProcAddress(hntdll, "wine_get_version");
    if(pwine_get_version)
    {
        printf("Running on Wine... %s\n",pwine_get_version());
    }
    else
    {
        puts("did not detect Wine.");
    }

    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...