c++获取K:\WINDOWS\SYSTEM32\NTDLL.DLL OSVERSIONINFOEX
时间: 2023-06-30 09:26:28 浏览: 239
c++获取windows文件版本信息
可以使用Windows API函数GetFileVersionInfoSize和GetFileVersionInfo来获取指定DLL文件的版本信息,然后从中获取操作系统版本信息。
以下是一个示例代码,可以获取K:\WINDOWS\SYSTEM32\NTDLL.DLL文件的版本信息和操作系统版本信息:
```c++
#include <iostream>
#include <windows.h>
#pragma comment(lib, "Version.lib") // 需要链接Version库
int main()
{
// 获取NTDLL.DLL的文件版本信息大小
DWORD dwHandle;
DWORD dwSize = GetFileVersionInfoSize("K:\\WINDOWS\\SYSTEM32\\NTDLL.DLL", &dwHandle);
if (dwSize == 0)
{
std::cout << "GetFileVersionInfoSize failed." << std::endl;
return -1;
}
// 获取NTDLL.DLL的文件版本信息
std::vector<char> buffer(dwSize);
if (!GetFileVersionInfo("K:\\WINDOWS\\SYSTEM32\\NTDLL.DLL", dwHandle, dwSize, buffer.data()))
{
std::cout << "GetFileVersionInfo failed." << std::endl;
return -1;
}
// 获取操作系统版本信息
VS_FIXEDFILEINFO* pFixedFileInfo = nullptr;
UINT dwLen = 0;
VerQueryValue(buffer.data(), "\\", (LPVOID*)&pFixedFileInfo, &dwLen);
if (pFixedFileInfo == nullptr)
{
std::cout << "VerQueryValue failed." << std::endl;
return -1;
}
// 输出操作系统版本信息
std::cout << "Operating System Version: " << ((pFixedFileInfo->dwProductVersionMS >> 16) & 0xffff) << "."
<< (pFixedFileInfo->dwProductVersionMS & 0xffff) << "." << ((pFixedFileInfo->dwProductVersionLS >> 16) & 0xffff)
<< "." << (pFixedFileInfo->dwProductVersionLS & 0xffff) << std::endl;
return 0;
}
```
需要注意的是,需要确保程序运行时有足够的权限访问指定的DLL文件。
阅读全文