c++获取指定文件的版本号
#include <iostream>
#include <Windows.h>
#include <tchar.h>
#include <string>
#include <vector>
#include <sstream>
#pragma comment(lib, "Version.lib")
bool GetFileVersion(const std::wstring& file_path, std::wstring* version)
{
DWORD version_info_handle_ = NULL;
DWORD version_info_size = ::GetFileVersionInfoSize(file_path.c_str(), &version_info_handle_);
if (version_info_size == 0)
return false;
std::vector<byte> buffer;
buffer.resize(static_cast<size_t>(version_info_size));
if (!::GetFileVersionInfo(file_path.c_str(), 0, version_info_size, &buffer[0]))
return false;
UINT info_size = 0;
VS_FIXEDFILEINFO* file_info = nullptr;
if (!::VerQueryValue(&buffer[0], _T("\\"), (void**)&file_info, &info_size))
return false;
std::wstringstream version_stream;
version_stream << HIWORD(file_info->dwFileVersionMS);
version_stream << _T(".");
version_stream << LOWORD(file_info->dwFileVersionMS);
version_stream << _T(".");
version_stream << HIWORD(file_info->dwFileVersionLS);
version_stream << _T(".");
version_stream << LOWORD(file_info->dwFileVersionLS);
version->assign(version_stream.str());
return true;
}
int main(int argc, char** argv)
{
std::wstring version;
bool ret = GetFileVersion(_T("test.exe"), &version);
return 0;
}
版权声明:本文为本站原创文章,转载请注明出处,非常感谢,如版权漏申明或您觉得任何有异议的地方欢迎与本站取得联系。