Подтвердить что ты не робот

Определите, работает ли программа под Wine во время выполнения

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

4b9b3361

Ответ 1

Есть много конкретных записей реестра Wine:

HKEY_CURRENT_USER\Software\Wine
HKEY_LOCAL_MACHINE\Software\Wine

Проверка наличия ключа реестра имеет ответ на вопрос о том, как проверить эти ключи реестра, специфичные для Wine.

Ответ 2

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

#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;
}