运行时判断程序是否在 Wine 下运行

发布于 2024-12-04 02:19:09 字数 116 浏览 0 评论 0原文

我认为标题是不言自明的...我正在用 C++ 编写一个应用程序,我需要在运行时确定我是否在 Wine 下运行(稍微改变一下行为以避免特定的 Wine bug)。 有没有一种程序员友好的方式或者我应该摆弄正在运行的进程?

I think the title is self explanatory... I'm writing an application in C++ and I need to determine at runtime if I'm running under Wine (to change the bahavior a little in order to avoid a specific Wine bug).
Is there a programmer-friendly way or should I fiddle with running processes?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

无语# 2024-12-11 02:19:09

这个答案只是用户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;
}

This answer is just a copy of user1457056's comment. Since links often die, answers occasionally become useless. I have copied the link content here in order to preserve this useful answer:

#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;
}
白况 2024-12-11 02:19:09

有许多 Wine 特定的注册表项:

HKEY_CURRENT_USER\Software\Wine
HKEY_LOCAL_MACHINE\Software\Wine

检查注册表项是否存在 具有如何检查这些特定于 Wine 的注册表项的答案。

There are many Wine specific registry entries:

HKEY_CURRENT_USER\Software\Wine
HKEY_LOCAL_MACHINE\Software\Wine

Checking if a registry key exists has the answer of how to check for these Wine-specific registry keys.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文