c++ 代码修改软件详细信息
时间: 2024-03-03 21:52:56 浏览: 30
如果您想在代码中修改软件的详细信息,可以使用 Win32 API 来实现。以下是一个示例代码,可以修改软件的版本号、版权信息、公司名称等信息:
```c++
#include <Windows.h>
#include <string>
int main()
{
// 获取当前模块句柄
HMODULE hModule = GetModuleHandle(NULL);
// 获取文件版本信息
TCHAR fileName[MAX_PATH];
GetModuleFileName(hModule, fileName, MAX_PATH);
DWORD dwHandle;
DWORD dwSize = GetFileVersionInfoSize(fileName, &dwHandle);
if (dwSize == 0)
{
return 1;
}
std::vector<BYTE> buffer(dwSize);
if (!GetFileVersionInfo(fileName, dwHandle, dwSize, &buffer[0]))
{
return 1;
}
// 获取版本信息中的语言和代码页信息
UINT uLen;
LPVOID lpData;
if (VerQueryValue(&buffer[0], _T("\\VarFileInfo\\Translation"), &lpData, &uLen) && uLen == sizeof(DWORD))
{
DWORD* pTrans = reinterpret_cast<DWORD*>(lpData);
// 构造字符串资源名称
TCHAR verResName[MAX_PATH];
_stprintf_s(verResName, _T("\\StringFileInfo\\%04x%04x\\"), LOWORD(*pTrans), HIWORD(*pTrans));
// 修改版本信息
VerQueryValue(&buffer[0], (verResName + _T("FileVersion")).c_str(), &lpData, &uLen);
_tcscpy_s(reinterpret_cast<TCHAR*>(lpData), uLen, _T("1.0.0.0"));
// 修改公司名称
VerQueryValue(&buffer[0], (verResName + _T("CompanyName")).c_str(), &lpData, &uLen);
_tcscpy_s(reinterpret_cast<TCHAR*>(lpData), uLen, _T("Your Company"));
// 修改版权信息
VerQueryValue(&buffer[0], (verResName + _T("LegalCopyright")).c_str(), &lpData, &uLen);
_tcscpy_s(reinterpret_cast<TCHAR*>(lpData), uLen, _T("Copyright"));
// 修改产品名称
VerQueryValue(&buffer[0], (verResName + _T("ProductName")).c_str(), &lpData, &uLen);
_tcscpy_s(reinterpret_cast<TCHAR*>(lpData), uLen, _T("Your Product"));
// 保存版本信息
if (!VerQueryValue(&buffer[0], _T("\\"), &lpData, &uLen))
{
return 1;
}
VS_FIXEDFILEINFO* pFileInfo = reinterpret_cast<VS_FIXEDFILEINFO*>(lpData);
if (!pFileInfo)
{
return 1;
}
UINT dwBytesWritten;
if (!::VerQueryValue(&buffer[0], _T("\\"), (void**)&pFileInfo, &dwBytesWritten))
{
return 1;
}
if (!::VerSetFileSecurity(fileName, pTrans[0], pTrans[1], VS_USER_DEFINED, &buffer[0], dwSize))
{
return 1;
}
}
return 0;
}
```
注意,这段代码的执行需要管理员权限。另外,如果您希望在运行时修改这些信息,需要修改 PE 文件的头部,这需要使用专门的 PE 文件编辑工具。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)