Привет.
Пытаюсь считать полное название ОС(например, Windows 10) и вывести его на экран.
Нашёл на китайском форуме решение, немного его переписал, но оно не работает.
Нашёл функцию
https://docs.microsoft.com/en-us/windows/win32/api...
GetProductInfo, но компилятор сообщает что она не существует, хотя она есть в sysinfoapi.h компилятора.
Сам Sysinfoapi.h и windows.h я естественно подключил, но ошибка осталась.
Код, вызывающий ошибку:
std::string GetWindowsVersionString()
{
#include <wincon.h>
#include <sysinfoapi.h>
#include <windows.h>
std::string winver;
OSVERSIONINFO osver;
BOOL bIsWindowsXPorLater;
ZeroMemory(&osver, sizeof(OSVERSIONINFO));
osver.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&osver);
PWORD wProductType;
GetProductInfo(osver.dwMajorVersion,osver.dwMinorVersion,0,0,wProductType);
if (osver.dwMajorVersion == 10 && osver.dwMinorVersion >= 0 && wProductType != VER_NT_WORKSTATION) winver = "Windows 10 Server";
if (osver.dwMajorVersion == 10 && osver.dwMinorVersion >= 0 && wProductType == VER_NT_WORKSTATION) winver = "Windows 10";
if (osver.dwMajorVersion == 6 && osver.dwMinorVersion == 3 && wProductType != VER_NT_WORKSTATION) winver = "Windows Server 2012 R2";
if (osver.dwMajorVersion == 6 && osver.dwMinorVersion == 3 && wProductType == VER_NT_WORKSTATION) winver = "Windows 8.1";
if (osver.dwMajorVersion == 6 && osver.dwMinorVersion == 2 && wProductType != VER_NT_WORKSTATION) winver = "Windows Server 2012";
if (osver.dwMajorVersion == 6 && osver.dwMinorVersion == 2 && wProductType == VER_NT_WORKSTATION) winver = "Windows 8";
if (osver.dwMajorVersion == 6 && osver.dwMinorVersion == 1 && wProductType != VER_NT_WORKSTATION) winver = "Windows Server 2008 R2";
if (osver.dwMajorVersion == 6 && osver.dwMinorVersion == 1 && wProductType == VER_NT_WORKSTATION) winver = "Windows 7";
if (osver.dwMajorVersion == 6 && osver.dwMinorVersion == 0 && wProductType != VER_NT_WORKSTATION) winver = "Windows Server 2008";
if (osver.dwMajorVersion == 6 && osver.dwMinorVersion == 0 && wProductType == VER_NT_WORKSTATION) winver = "Windows Vista";
if (osver.dwMajorVersion == 5 && osver.dwMinorVersion == 2) winver = "Windows Server 2003";
if (osver.dwMajorVersion == 5 && osver.dwMinorVersion == 1) winver = "Windows XP";
if (osver.dwMajorVersion == 5 && osver.dwMinorVersion == 0) winver = "Windows 2000";
if (osver.dwMajorVersion < 5) winver = "unknown";
return winver;
}
Ошибка: In function 'std::string GetWindowsVersionString()':
[Error] 'GetProductInfo' was not declared in this scope
В чём может быть проблема, и если эту ошибку исправить нельзя, то можно иными методами через C++ получать название ОС(Windows) пользователя?