Windows读取文件的版本信息
2017-06-20 16:20
267 查看
ValueName:需要取得信息类型
szModuleName:文件名
RetStr:得到的字符串,失败时为空。
szModuleName:文件名
RetStr:得到的字符串,失败时为空。
bool QueryValue(const std::string& ValueName, const std::string& szModuleName, std::string& RetStr) { bool bSuccess = FALSE; BYTE* m_lpVersionData = NULL; DWORD m_dwLangCharset = 0; CHAR *tmpstr = NULL; do { if (!ValueName.size() || !szModuleName.size()) { break; } DWORD dwHandle; DWORD dwDataSize = GetFileVersionInfoSizeA((LPCSTR)szModuleName.c_str(), &dwHandle); if (dwDataSize == 0) { break; } m_lpVersionData = new (std::nothrow) BYTE[dwDataSize]; if (NULL == m_lpVersionData) { break; } //GetFileVersionInfoA失败则返回0,m_lpVersionData用于装载文件的版本信息 if (!GetFileVersionInfoA((LPCSTR)szModuleName.c_str(), dwHandle, dwDataSize, (void*)m_lpVersionData)) { break; } UINT nQuerySize; DWORD* pTransTable; //VerQueryValue这个函数用于从版本资源中获取信息,失败返回0。调用这个函数前,必须先用GetFileVersionInfo函数获取版本资源信息。这个函数会检查资源信息,并将需要的数据复制到一个缓冲区里。pTransTable时要装载数据的地址 if (!VerQueryValueA(m_lpVersionData, "\\VarFileInfo\\Translation", (void **)&pTransTable, &nQuerySize)) { break; } //MAKELONG 将两个16位的数联合成一个无符号的32位数 m_dwLangCharset = MAKELONG(HIWORD(pTransTable[0]), LOWORD(pTransTable[0])); if (m_lpVersionData == NULL) { break; } tmpstr = new (std::nothrow) CHAR[128]; if (NULL == tmpstr) { break; } sprintf_s(tmpstr, 128, "\\StringFileInfo\\%08lx\\%s", m_dwLangCharset, ValueName.c_str()); LPVOID lpData; // 调用此函数查询前需要先依次调用函数GetFileVersionInfoSize和GetFileVersionInfo。"\StringFileInfo\...." 获取文件的字串信息 if (VerQueryValueA((void *)m_lpVersionData, tmpstr, &lpData, &nQuerySize)) { RetStr = (char*)lpData; } bSuccess = TRUE; } while (FALSE); if (m_lpVersionData) { delete[] m_lpVersionData; m_lpVersionData = NULL; } if (tmpstr) { delete[] tmpstr; tmpstr = NULL; } return bSuccess; }
相关文章推荐
- python读取文件的版本信息
- windows下设置QT程序的版本信息、程序图标和可执行文件图标
- C# 文件版本信息读取
- 读取EXE文件的版本信息
- Android检测版本更新(读取apk配置文件中的版本信息)
- 读取二进制可执行文件资源中包含的各项版本信息
- 读取APK包中配置文件 AndroidManifest.xml 中的版本信息
- [置顶] 【PE】Windows平台下为可执行文件或动态库dll添加版本信息
- windows文件属性信息读取与修改,文件属性标题作者修改
- Swift读取App的版本信息与PCH文件详解
- C++ 如何读取文件的版本信息
- golang 实时读取日志文件,windows版本的tail
- 在Windows Mobile和Wince(Windows Embedded CE)下进行Native C++开发,如何取出资源文件中的版本信息
- 读取二进制可执行文件资源中包含的各项版本信息
- 复制、删除、移动文件、获取文件的版本信息、更改文件属性,删除只读文件
- 在asp.net中读取XML文件信息的4种方法(转载)
- 利用Java的Properties类读取配置文件信息
- [11-22]MASM32编程获取文件语言、版本信息v3
- 工程文件版本信息批量处理器(WinForm)
- 在asp.net中读取XML文件信息的4种方法