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 ***** 看有码。 嘿嘿,这个帖子要回复看看!!... 有这种情况? 不會吧. 你連8.1也玩了喔, 了不起 8.1的PG一样搞吗 看有码。~ zhuxinlang 发表于 2013-9-5 14:30 static/image/common/back.gif
8.1的PG一样搞吗
WIN8的PG暂时破不了。 这个BUG很恐怖啊 看看楼主怎么解决 还有这事啊 恢复看看。。。。 刚好遇到这个问题 逗比微软。。。 学习了
回帖看码 好吧,这个要回 好吧,这个要回 这么有趣必须看一下 学习~~~~ 看下,,,我记得通过 manifest
可以解决。。 看下,,,我记得通过 manifest
可以解决。。 dsaddadsa 每日阅览 每日进步 叮叮叮 谢谢分享!我就是喜欢你。 huifu 回复看内容 来看看这个问题的 gfw,如果您要查看本帖隐藏内容请回复 是我想到的那个办法么?
好奇 看看~ 强力围观 分享下,自己的
/*
* 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