簡體   English   中英

Windows 8次要版本返回0而不是2

[英]windows 8 minor version returning 0 instead of 2

我有C ++代碼,其目的是查找Windows版本:

OSVERSIONINFOEX osvi;
BOOL bOsVersionInfoEx;

int iRet = OS_UNKNOWN;

ZeroMemory ( & osvi, sizeof ( OSVERSIONINFOEX ) );
osvi.dwOSVersionInfoSize = sizeof ( OSVERSIONINFOEX );

if ( !( bOsVersionInfoEx = GetVersionEx ( ( OSVERSIONINFO * ) & osvi ) ) )
{
    osvi.dwOSVersionInfoSize = sizeof ( OSVERSIONINFO );
    if ( ! GetVersionEx ( ( OSVERSIONINFO * ) & osvi ) )
        return OS_UNKNOWN;      
}
//the rest is irrelevant ...

iRet將返回一個內部枚舉值,用於標識Windows版本。 它將根據osvi.dwPlatformId,osvi.dwMajorVersion和osvi.dwMinorVersion中返回的值進行調整。

根據MSDN,對於Windows 8,MajorVersion的值為6,而MinorVersion的值為2。

我已將此代碼編譯到dll中,並且如果我從測試EXE程序調用DLL,則該代碼實際上可以工作。

但是,如果我從Windows安裝程序包(MSI)中的“自定義操作”中從相同的DLL調用相同的代碼,則GetVersionEx()為MinorVersion字段返回0。

還有其他人遇到此錯誤嗎? 有人知道如何解決嗎?

事實證明,在Windows 7+上使用GetVersion(Ex)時,默認情況下Windows Installer涉及該版本。 答案始終是Vista SP0。 您可以改用VersionNT MSI值。

來源: http : //blogs.msdn.com/b/cjacks/archive/2009/05/06/why-custom-actions-get-a-windows-vista-version-lie-on-windows-7.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM