Я думаю, что название самоочевидно... Я пишу приложение на С++, и мне нужно определить во время выполнения, если я запущен под Wine (немного изменить bahavior, чтобы избежать конкретной ошибки в Wine). Есть ли удобный для программиста способ или я должен играть с запущенными процессами?
Определите, работает ли программа под Wine во время выполнения
Ответ 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;
}