A. c++ 獲取文件版本信息
c++ 獲取文件版本信息
文件信息結構描述:
struct VS_FIXEDFILEINFO {
DWORD dwSignature; //=0xFEEFO4BD
DWORD dwStrucVersion; //該結構的版本信息,分高低版本
DWORD dwFileVersionMS; //主文件版本
DWORD dwFileVersionLS; //次文件版本
DWORD dwProctVersionMS; //主產品版本
DWORD dwProctVersionLS; //次產品版本
DWORD dwFileFlagsMask; //文件標志掩碼
DWORD dwFileFlags; //文件標志(是否包含調試版本,動態版本結構...)
DWORD dwFileOS; //文件原定的操作系統(VOS_DOS,VOS_NT,VOS__WINDOWS16...)
DWORD dwFileType; //文件類型(VFT_UNKNOWN,VFT_APP,VFT_DLL...)
DWORD dwFileSubtype; //當dwFileType為VFT_APP或VFT_DLL時該值為0,當為驅動信息VFT_APP或字體信息時該值包含其具體的信息
DWORD dwFileDateMS; //主時間戳
DWORD dwFileDateLS; //次時間戳
};
===============================================
struct st_Language
{
WORD wLanguageID;
WORD wCodePage;
};
CString str("D:\\test\\test.exe");
DWORD dwSize = GetFileVersionInfoSize(str,NULL);
if(0 == dwSize) return;
LPBYTE pBlock = (BYTE*)malloc(dwSize);
bool b = GetFileVersionInfo(str,0,dwSize,pBlock);
char* pVerValue = NULL;
UINT nlen1 = 0;
VerQueryValue(pBlock,TEXT("file://VarFileInfo//Translation"),
(LPVOID*)&pVerValue,&nlen1);
//獲取語言
char* pLanValue = NULL;
UINT nLen2 = 0;
VerQueryValue(pBlock,"VarFileInfo\\Translation",(LPVOID*)&pLanValue,&nLen2);
//080404b0為中文
st_Language stlang = *((st_Language *)pLanValue);
//獲取版本屬性
VerQueryValue(pBlock,TEXT("file://%22),(LPVOID*)%26pVerValue,%26nlen1/);
VS_FIXEDFILEINFO *pfixfileinfo = (VS_FIXEDFILEINFO *)pVerValue;
//修改屬性
pfixfileinfo->dwFileVersionLS = 1234;
pfixfileinfo->dwFileVersionMS = 4321;
pfixfileinfo->dwProctVersionLS = 101;
pfixfileinfo->dwProctVersionMS = 1010;
//修改資源
HANDLE handle = BeginUpdateResource(str,FALSE);
BOOL result = UpdateResource(handle
,RT_VERSION
,MAKEINTRESOURCE(1)
,stlang.wLanguageID
,pBlock
,dwSize);
if (result == FALSE)
{
AfxMessageBox("Updata Resource False.");
}
EndUpdateResource(handle,FALSE);
free(pBlock);
B. 如何用批處理獲取exe、dll詳細信息裡面的文件版本
@EchoOff
::.6
Set/PFile=請拖入需要獲取的EXE(DLL):
For%%iIn(%File%)Do(
SetExt=%%~xi
SetPat=%%~pi
For/F%%jIn('WmicDataFileWhere"Drive='%%~di'AndPath='!Pat:=\!'AndExtension='!Ext:~1!'"GetVersion')Do(
SetVer=%%j
)
Echo版本號為:!Ver!
)
Pause
可能原版來的版權本太復雜了(遲遲不見採納),這個版本好多了,直接拖進去就行
調用了wmic,第一次運行可能會自動安裝,Vista及以上請以管理員身份運行.
C. 如何獲取一個文件的版本信息
不是所有文件都一畝磨定皮耐迅有版燃此本信息,只有程序文件可能有版本信息。一般右鍵屬性里查看:

D. 如何獲取一個文件的版本信息
獲取文件脊攜的版本信息廳虧:FileVersionInfo myFileVersionInfo1 = FileVersionInfo.GetVersionInfo(D://扮野神TEST.DLL);textBox1.Text=版本號: + myFileVersion
E. 在bat文件中能不能通過編寫代碼來獲取exe文件的版本信息
@echooff
set"file=R:新建文件夾filever.exe"
for/f"tokens=5"%%iin('filever.exe/s"%file%"')do(setver=%%i&echo%%i)
echo%ver%
pause
純批處理還有沒有直接讀取exe文件版本的命令.如果真要用批專處理讀取exe文件版本可以用 xp安裝盤中的filever.exe 工具.批處理調用這個工具可以讀取文屬件版本信息.filever.exe在附件中
F. 如何用dos命令查看windows中exe文件的版本信息
開始-運行-cmd 回車 鍵入 ver 回車
如果要看某個程序的那就是 開始- 運行 - cmd 回車
程序名 /v 回車
G. vb獲取文件版本信息
'引用復 Microsoft scripting runtime
Dim fver As String
Dim fso As FileSystemObject
Set fso = New FileSystemObject
fver = fso.GetFileVersion("c:\1.exe")'文件路徑可以用其制他方法獲得
MsgBox fver'這里你可以自行用其他方法處理 答案補充 哪裡不行,什麼錯誤?
'引用 Microsoft scripting runtime了么? 答案補充 是在引用裡面,不是部件
H. 如何用dos命令查看windows中exe文件的版本信息
寫一個批處理文件,類似於這樣:
@echo
off
dir
>1.txt
type
1.txt
pause
可以把上面代碼拷到一個空文本文件中,並保存為"a.bat",點擊運行試試。
I. 怎麼獲取DLL的版本信息
1、首先,找到要查看DLL版本信息的DLL文件。

J. Excel 如何獲取及寫入文件版本號
利用公式就可以,
一般文件版本號都是用括弧括起來的
比如[]
利用find函數查找到[所在的位置,再加1就是版本號第一個數字的位置,再利用mid函數提取出來,如果文件版本號為5468,
如:=mid(文件版本號所在的單元格,find("[",文件版本號所在的單元格)+1,大於文件版本號數字個數的值)