社区
非技术区
帖子详情
求一个API, 查询可执行文件版本号的API名称
lvyb050
2012-03-14 09:54:53
怎么现在谷歌也不给力了, 搜都搜不到.
...全文
72
2
打赏
收藏
求一个API, 查询可执行文件版本号的API名称
怎么现在谷歌也不给力了, 搜都搜不到.
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lvyb050
2012-03-15
打赏
举报
回复
哥哥,第一种我不会用啊.
编译也通过了, 但是文件路径是哪个参数?
W170532934
2012-03-14
打赏
举报
回复
1.获得自身的版本信息
//////////////////////////////////////////////////////////////
//
// File: version.cpp
// Description: Sample code for getting version info
// Created: 2008-1-4
// Author: Ken Zhang
// E-Mail: cpp.china@hotmail.com
//
//////////////////////////////////////////////////////////////
/*
The following code shows how to get FILEINFO value from resource file.
These WIN32 functions will be used:
* GetFileVersionInfo
* GetFileVersionInfoSize
* VerQueryValue
* GetModuleFileName
*/
#include <windows.h>
#include <tchar.h>
#include <string>
#include <iostream>
#pragma comment(lib, "version.lib")
using namespace std;
bool GetFileVersion(HMODULE hModule, WORD *pBuffer)
{
TCHAR fname[MAX_PATH];
VS_FIXEDFILEINFO *pVi;
DWORD dwHandle;
string str;
if (::GetModuleFileName(hModule, fname, MAX_PATH))
{
int size = GetFileVersionInfoSize(fname, &dwHandle);
if (size > 0) {
BYTE *buffer = new BYTE[size];
if (GetFileVersionInfo(fname, dwHandle, size, buffer)) {
if (VerQueryValue(buffer, _T("\\"), (LPVOID *)&pVi, (PUINT)&size)) {
pBuffer[0] = HIWORD(pVi->dwFileVersionMS);
pBuffer[1] = LOWORD(pVi->dwFileVersionMS);
pBuffer[2] = HIWORD(pVi->dwFileVersionLS);
pBuffer[3] = LOWORD(pVi->dwFileVersionLS);
delete buffer;
return true;
}
}
delete buffer;
}
}
return false;
}
string GetFileVersion(HMODULE hModule)
{
string str;
WORD buffer[4];
if (GetFileVersion(hModule, buffer))
{
char str2[32];
for (int i = 0; i < sizeof(buffer)/sizeof(WORD); i++)
{
itoa(buffer[i], str2, 10);
str += str2;
if (i != sizeof(buffer)/sizeof(WORD) - 1)
{
str += ".";
}
}
}
return str;
}
void main()
{
cout << "Current version is: " << GetFileVersion(::GetModuleHandle(NULL)) << endl;
}
2.获得其他exe或dll的版本信息
std::string GetFileVersion(const std::string &strFilePath)
{
DWORD dwSize;
DWORD dwRtn;
std::string szVersion;
//获取版本信息大小
dwSize = GetFileVersionInfoSize(_T(strFilePath.c_str()),NULL);
if (dwSize == 0)
{
return "";
}
char *pBuf;
pBuf= new char[dwSize + 1];
if(pBuf == NULL)
return "";
memset(pBuf, 0, dwSize + 1);
//获取版本信息
dwRtn = GetFileVersionInfo(_T(strFilePath.c_str()),NULL, dwSize, pBuf);
if(dwRtn == 0)
{
return "";
}
LPVOID lpBuffer = NULL;
UINT uLen = 0;
//版本资源中获取信息
dwRtn = VerQueryValue(pBuf,
TEXT("\\StringFileInfo\\080404b0\\FileVersion"), //0804中文
//04b0即1252,ANSI
//可以从ResourceView中的Version中BlockHeader中看到
//可以测试的属性
/*
CompanyName
FileDescription
FileVersion
InternalName
LegalCopyright
OriginalFilename
ProductName
ProductVersion
Comments
LegalTrademarks
PrivateBuild
SpecialBuild
*/
&lpBuffer,
&uLen);
if(dwRtn == 0)
{
return "";
}
szVersion = (char*)lpBuffer;
delete pBuf;
return szVersion;
}
void main()
{
std::string strFilePath = "abc.exe";
cout << strFilePath << " version is: " << GetFileVersion(strFilePath) << endl;
}
hibernate3.3.1的jar包
hibernate3.3.1的jar包!!hibernate3.3.1的jar包hibernate3.3.1的jar包hibernate3.3.1的jar包
获得CPU序列号和CPU厂商名
如何获得CPU序列号和CPU厂商名
API
接口规范完整版本
整体规范建议采用RESTful 方式来实施。 协议
API
与用户的通信协议,总是使用HTTPs协议,确保交互数据的传输安全。 域名应该尽量将
API
部署在专用域名之下。https://
api
.example.com如果确定
API
很简单,不会有进一步扩展,可以考虑放在主域名下。https://example.org/
api
/
api
版本控制应该将
API
的
版本号
放入URL。https://
api
.exam...
使用Windows
API
实现运行时动态获取程序文件版本信息
文件版本信息的存在使得应用程序正确的安装文件变得简单,并且使安装程序能够分析文件的当前安装状态。通常,版本信息应该包括文件的
版本号
、文件功能描述以及文件作者等多项重要内容。 在应用层面上,程序员可以通过保存在应用程序文件或动态链接库文件中的版本信息判断
一个
文件是否应该被安装,并确定当前安装文件的冲突。在文件有了版本信息这个属性后,我们编写的程序就能够实现以下功能: 1. 避
Windows
API
详解——获得进程
可执行文件
路径的几种方法
Windows
API
详解——获得进程
可执行文件
路径的几种方法 想获得进程
可执行文件
的路径最常用的方法是通过GetModuleFileNameEx函数获得
可执行文件
的模块路径这个函数从Windows NT 4.0开始到现在的Vista系统都能使用,向后兼容性比较好。第二种方法是GetProcessImageFileName函数,这个函数在Windows XP及其以后的系统中都能使用,使用此函
非技术区
15,447
社区成员
58,120
社区内容
发帖
与我相关
我的任务
非技术区
C/C++ 非技术区
复制链接
扫一扫
分享
社区描述
C/C++ 非技术区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章