![](/img/trans.png)
[英]Why do we need to link kernel32.dll, user32.dll, etc… in Windows C++?
[英]Why does GetFileVersionInfo on kernel32.dll in Windows 10 return version 6.2?
我正在嘗試檢索kernel32.dll
版本以執行Windows版本檢查。 然而,由於某種原因,即使kernel32.dll
的版本(如文件屬性中所示)是10.0.10586.0,返回的版本是:6.2.10586.0怎么來的?
DWORD dwDummy;
DWORD dwFVISize = GetFileVersionInfoSize(lpszFilePath, &dwDummy);
LPBYTE lpVersionInfo = new BYTE[dwFVISize];
if (GetFileVersionInfo(lpszFilePath, 0, dwFVISize, lpVersionInfo) == 0)
{
return FALSE;
}
UINT uLen;
VS_FIXEDFILEINFO *lpFfi;
BOOL bVer = VerQueryValue(lpVersionInfo, L"\\", (LPVOID *)&lpFfi, &uLen);
if (!bVer || uLen == 0)
{
return FALSE;
}
DWORD dwFileVersionMS = lpFfi->dwFileVersionMS;
DWORD dwFileVersionLS = lpFfi->dwFileVersionLS;
delete[] lpVersionInfo;
DWORD dwLeftMost = HIWORD(dwFileVersionMS);
DWORD dwSecondLeft = LOWORD(dwFileVersionMS);
DWORD dwSecondRight = HIWORD(dwFileVersionLS);
DWORD dwRightMost = LOWORD(dwFileVersionLS);
您正在從此任務的版本信息中讀取錯誤的字段。 而不是dwFileVersionMS
和dwFileVersionLS
使用dwProductVersionMS
和dwProductVersionLS
。
文件版本字段受supportedOS
兼容性問題的影響。 這是它們的值取決於應用程序清單中聲明的supportedOS
級別。 另一方面,產品版本字段不依賴於清單。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.