严重性 代码 说明 项目 文件 行 禁止显示状态 错误 C4996 'GetVersionExW': 被声明为已否决 Project6 C:\Users\86139\source\repos\Project6\源.cpp 14
时间: 2023-07-08 14:52:14 浏览: 138
项目代码版本上传错误需要的话下载去列表下载新的
这个错误提示是因为 `GetVersionEx` 函数已经被微软标记为已经过时,不再推荐使用。为了解决这个问题,可以使用 `VerifyVersionInfo` 函数来获取操作系统版本信息。下面是一个使用 `VerifyVersionInfo` 函数获取操作系统版本信息的示例代码:
```cpp
#include <iostream>
#include <windows.h>
#include <tchar.h>
#pragma comment(lib, "version.lib")
void getSystemInfo()
{
// 获取操作系统版本信息
OSVERSIONINFOEX osvi;
ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
DWORDLONG dwlConditionMask = 0;
VER_SET_CONDITION(dwlConditionMask, VER_MAJORVERSION, VER_EQUAL);
VER_SET_CONDITION(dwlConditionMask, VER_MINORVERSION, VER_EQUAL);
VER_SET_CONDITION(dwlConditionMask, VER_SERVICEPACKMAJOR, VER_GREATER_EQUAL);
VER_SET_CONDITION(dwlConditionMask, VER_SERVICEPACKMINOR, VER_GREATER_EQUAL);
osvi.dwMajorVersion = HIBYTE(_WIN32_WINNT_WIN7);
osvi.dwMinorVersion = LOBYTE(_WIN32_WINNT_WIN7);
osvi.wServicePackMajor = 1;
osvi.wServicePackMinor = 0;
if (VerifyVersionInfo(&osvi, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR, dwlConditionMask))
{
std::cout << "操作系统版本:Windows 7 SP1 或更高版本" << std::endl;
}
else
{
std::cout << "无法获取操作系统版本信息" << std::endl;
}
// 获取计算机名称和用户名
TCHAR szComputerName[MAX_COMPUTERNAME_LENGTH + 1];
DWORD dwSize = sizeof(szComputerName) / sizeof(szComputerName[0]);
GetComputerName(szComputerName, &dwSize);
std::cout << "计算机名称:" << szComputerName << std::endl;
TCHAR szUserName[UNLEN + 1];
dwSize = sizeof(szUserName) / sizeof(szUserName[0]);
GetUserName(szUserName, &dwSize);
std::cout << "当前用户:" << szUserName << std::endl;
// 获取CPU信息
SYSTEM_INFO sysInfo;
GetSystemInfo(&sysInfo);
std::cout << "CPU核心数:" << sysInfo.dwNumberOfProcessors << std::endl;
// 获取内存信息
MEMORYSTATUSEX memInfo;
memInfo.dwLength = sizeof(MEMORYSTATUSEX);
GlobalMemoryStatusEx(&memInfo);
std::cout << "物理内存总量:" << memInfo.ullTotalPhys / (1024 * 1024) << "MB" << std::endl;
std::cout << "可用物理内存:" << memInfo.ullAvailPhys / (1024 * 1024) << "MB" << std::endl;
// 获取硬盘信息
TCHAR szVolumeName[MAX_PATH + 1], szFileSystem[MAX_PATH + 1];
DWORD dwSerialNumber, dwMaxComponentLen, dwFileSystemFlags;
ULARGE_INTEGER FreeBytesAvailable, TotalNumberOfBytes, TotalNumberOfFreeBytes;
GetVolumeInformation(_T("C:\\"), szVolumeName, MAX_PATH, &dwSerialNumber, &dwMaxComponentLen, &dwFileSystemFlags, szFileSystem, MAX_PATH);
GetDiskFreeSpaceEx(_T("C:\\"), &FreeBytesAvailable, &TotalNumberOfBytes, &TotalNumberOfFreeBytes);
std::cout << "硬盘总容量:" << TotalNumberOfBytes.QuadPart / (1024 * 1024 * 1024) << "GB" << std::endl;
std::cout << "可用空间:" << FreeBytesAvailable.QuadPart / (1024 * 1024 * 1024) << "GB" << std::endl;
}
int main()
{
getSystemInfo();
return 0;
}
```
这个示例代码使用 `VerifyVersionInfo` 函数来检查操作系统版本是否符合条件,如果符合,则输出操作系统版本号。同时,这个示例代码还获取了计算机名称、当前用户名、CPU核心数、物理内存总量、可用物理内存、硬盘总容量和可用空间等基本信息。
阅读全文