RegistryHelper::isWindowsVersionAtLeast

0 0 2025-05-29 本文地址:http://www.pnpon.com/fun/detail-33.html
bool RegistryHelper::isWindowsVersionAtLeast(unsigned major, unsigned minor)
{
    if (windowsVersion == 0)
    {
        DWORD handle;
        DWORD size = GetFileVersionInfoSizeW(L"kernel32.dll", &handle);
        if (size != 0)
        {
            void* data = malloc(size);
            if (GetFileVersionInfo(L"kernel32.dll", handle, size, data))
            {
                VS_FIXEDFILEINFO* info;
                UINT len;
                if (VerQueryValueW(data, L"\\", (LPVOID*)&info, &len))
                    windowsVersion = info->dwProductVersionMS;
            }
            free(data);
        }
    }

    // this will only work for major and minor up to 99
    DWORD compareVersion = ((major / 10) << 20) + ((major % 10) << 16) + ((minor / 10) << 4) + (minor % 10);

    return windowsVersion >= compareVersion;
}
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!