Tesla.Angela 发表于 2013-9-1 19:01:10

GetVersionEx在WIN8.1 RTM X64上遇到的奇怪问题以及解决方案

测试代码如下:OSVERSIONINFOA osi={0};
osi.dwOSVersionInfoSize=sizeof(OSVERSIONINFOA);
GetVersionExA(&osi);
printf("osi.dwBuildNumber=%ld",osi.dwBuildNumber);此函数在WIN8.1 RTM X64上的返回值竟然是9200而不是9600!

此图中有两个记事本,一个是WINDOWS NT的记事本,一个是WINDOWS 8自带的记事本,可见两者显示的版本号不同。

临时解决方案:**** Hidden Message *****

wjshome 发表于 2013-9-1 19:07:30

看有码。

soulper 发表于 2013-9-1 19:12:28

嘿嘿,这个帖子要回复看看!!...

jzy1115 发表于 2013-9-2 20:23:05

有这种情况?

kk1025 发表于 2013-9-2 22:04:31

不會吧. 你連8.1也玩了喔, 了不起

zhuxinlang 发表于 2013-9-5 14:30:32

8.1的PG一样搞吗

iloveqqp 发表于 2013-9-8 12:34:52

看有码。~

Tesla.Angela 发表于 2013-9-14 09:49:32

zhuxinlang 发表于 2013-9-5 14:30 static/image/common/back.gif
8.1的PG一样搞吗

WIN8的PG暂时破不了。

404022 发表于 2013-11-24 22:27:08

这个BUG很恐怖啊

cxjnet 发表于 2014-1-1 01:09:16

看看楼主怎么解决

chenjava 发表于 2014-2-12 10:08:18

还有这事啊

silence_liu 发表于 2014-3-20 11:32:55

恢复看看。。。。

850390626 发表于 2014-4-25 22:50:05

刚好遇到这个问题

0xAA55 发表于 2014-6-5 15:08:14

逗比微软。。。

mlyknown 发表于 2014-11-4 14:43:25

学习了

thegfw 发表于 2014-11-4 19:47:37

回帖看码

baohongyu 发表于 2014-11-15 11:30:23

好吧,这个要回

baohongyu 发表于 2014-11-15 11:30:45

好吧,这个要回

qq569582281 发表于 2014-12-7 19:44:55

这么有趣必须看一下

zfdyq 发表于 2015-1-19 08:30:50

学习~~~~

andylau004 发表于 2015-1-22 00:48:40

看下,,,我记得通过 manifest
可以解决。。

andylau004 发表于 2015-1-22 00:48:54

看下,,,我记得通过 manifest
可以解决。。

xiaomo 发表于 2015-4-12 00:51:25

dsaddadsa

upring 发表于 2015-4-20 10:52:18

每日阅览 每日进步

Archar 发表于 2015-5-4 10:14:07

叮叮叮

绿林科技 发表于 2015-6-11 17:59:53

谢谢分享!我就是喜欢你。

qq295593362 发表于 2015-6-15 19:09:21

huifu 回复看内容

284406022 发表于 2015-6-16 09:25:19

来看看这个问题的

gfw 发表于 2015-6-17 12:23:34

gfw,如果您要查看本帖隐藏内容请回复

sam7894604 发表于 2015-6-25 19:22:42

是我想到的那个办法么?
好奇 看看~

tongzeyu 发表于 2015-9-2 14:01:17

强力围观

andylau004 发表于 2015-9-2 16:39:04

分享下,自己的



/*
        * Parameter(s): dwMajorVer    主版本
                          dwMinorVer    次版本
                                          dwBuildNumber build号
        * Description   : 调用RtlGetNtVersionNumbers获取系统版本信息
        * Return      : TRUE    成功
                          FALSE   失败
*/
BOOL GetNtVersionNumbers( DWORD& dwMajorVer, DWORD& dwMinorVer, DWORD& dwBuildNumber )
{
        BOOL bRet= FALSE;
        HMODULE hModNtdll= NULL;
        if (hModNtdll= ::LoadLibraryW(L"ntdll.dll"))
        {
                typedef void (WINAPI *pfRTLGETNTVERSIONNUMBERS)(DWORD*,DWORD*, DWORD*);
                pfRTLGETNTVERSIONNUMBERS pfRtlGetNtVersionNumbers;
                pfRtlGetNtVersionNumbers = (pfRTLGETNTVERSIONNUMBERS)::GetProcAddress(hModNtdll, "RtlGetNtVersionNumbers");
                if (pfRtlGetNtVersionNumbers)
                {
                        pfRtlGetNtVersionNumbers(&dwMajorVer, &dwMinorVer,&dwBuildNumber);
                        dwBuildNumber &= 0x0ffff;
                        bRet = TRUE;
                }
                ::FreeLibrary(hModNtdll);
                hModNtdll = NULL;
        }

        return bRet;
}
页: [1] 2
查看完整版本: GetVersionEx在WIN8.1 RTM X64上遇到的奇怪问题以及解决方案