Replace deprecated WINAPI GetVersionInfoEx (#6496)
* Replace deprecated WINAPI GetVersionInfoExmaster
parent
d386586201
commit
c830347a57
|
@ -268,7 +268,7 @@ if(WIN32)
|
|||
else() # Probably MinGW = GCC
|
||||
set(PLATFORM_LIBS "")
|
||||
endif()
|
||||
set(PLATFORM_LIBS ws2_32.lib shlwapi.lib ${PLATFORM_LIBS})
|
||||
set(PLATFORM_LIBS ws2_32.lib version.lib shlwapi.lib ${PLATFORM_LIBS})
|
||||
|
||||
# Zlib stuff
|
||||
set(ZLIB_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/../../zlib/zlib-1.2.5"
|
||||
|
|
|
@ -32,6 +32,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||
#include <windows.h>
|
||||
#include <wincrypt.h>
|
||||
#include <algorithm>
|
||||
#include <shlwapi.h>
|
||||
#endif
|
||||
#if !defined(_WIN32)
|
||||
#include <unistd.h>
|
||||
|
@ -173,20 +174,26 @@ bool detectMSVCBuildDir(const std::string &path)
|
|||
std::string get_sysinfo()
|
||||
{
|
||||
#ifdef _WIN32
|
||||
OSVERSIONINFO osvi;
|
||||
std::ostringstream oss;
|
||||
std::string tmp;
|
||||
ZeroMemory(&osvi, sizeof(OSVERSIONINFO));
|
||||
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
|
||||
GetVersionEx(&osvi);
|
||||
tmp = osvi.szCSDVersion;
|
||||
std::replace(tmp.begin(), tmp.end(), ' ', '_');
|
||||
|
||||
oss << "Windows/" << osvi.dwMajorVersion << "."
|
||||
<< osvi.dwMinorVersion;
|
||||
if (osvi.szCSDVersion[0])
|
||||
oss << "-" << tmp;
|
||||
oss << " ";
|
||||
std::ostringstream oss;
|
||||
LPSTR filePath = new char[MAX_PATH];
|
||||
UINT blockSize;
|
||||
VS_FIXEDFILEINFO *fixedFileInfo;
|
||||
|
||||
GetSystemDirectoryA(filePath, MAX_PATH);
|
||||
PathAppendA(filePath, "kernel32.dll");
|
||||
|
||||
DWORD dwVersionSize = GetFileVersionInfoSizeA(filePath, NULL);
|
||||
LPBYTE lpVersionInfo = new BYTE[dwVersionSize];
|
||||
|
||||
GetFileVersionInfoA(filePath, 0, dwVersionSize, lpVersionInfo);
|
||||
VerQueryValueA(lpVersionInfo, "\\", (LPVOID *)&fixedFileInfo, &blockSize);
|
||||
|
||||
oss << "Windows/"
|
||||
<< HIWORD(fixedFileInfo->dwProductVersionMS) << '.' // Major
|
||||
<< LOWORD(fixedFileInfo->dwProductVersionMS) << '.' // Minor
|
||||
<< HIWORD(fixedFileInfo->dwProductVersionLS) << ' '; // Build
|
||||
|
||||
#ifdef _WIN64
|
||||
oss << "x86_64";
|
||||
#else
|
||||
|
@ -197,6 +204,9 @@ std::string get_sysinfo()
|
|||
oss << "x86";
|
||||
#endif
|
||||
|
||||
delete[] lpVersionInfo;
|
||||
delete[] filePath;
|
||||
|
||||
return oss.str();
|
||||
#else
|
||||
struct utsname osinfo;
|
||||
|
|
Loading…
Reference in New Issue