Ran*_*anH 4 c++ winapi kernel32 windows-10
使用以下代码,我试图检索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);
Run Code Online (Sandbox Code Playgroud)
您正在从此任务的版本信息中读取错误的字段.而不是dwFileVersionMS和dwFileVersionLS使用dwProductVersionMS和dwProductVersionLS.
文件版本字段受supportedOS兼容性问题的影响.这是它们的值取决于supportedOS应用程序清单中声明的级别.另一方面,产品版本字段不依赖于清单.
| 归档时间: |
|
| 查看次数: |
2553 次 |
| 最近记录: |