我认为标题已经很清楚说明了问题...我正在用C++编写一个应用程序,需要在运行时确定是否在Wine环境下运行(以更改行为,避免特定的Wine错误)。是否有一种对程序员友好的方法,还是应该处理正在运行的进程?
我认为标题已经很清楚说明了问题...我正在用C++编写一个应用程序,需要在运行时确定是否在Wine环境下运行(以更改行为,避免特定的Wine错误)。是否有一种对程序员友好的方法,还是应该处理正在运行的进程?
这个答案只是用户1457056的评论的复制。由于链接经常失效,答案有时会变得无用。我已经复制了链接内容在这里,以保留此有用的答案:
#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;
}
有许多特定于Wine的注册表项:
HKEY_CURRENT_USER\Software\Wine
HKEY_LOCAL_MACHINE\Software\Wine
Checking if a registry key exists网页中有如何检查这些与Wine相关的注册表键的答案。