c獲取exe和dll的版本資訊

2022-03-03 06:44:42 字數 2068 閱讀 4513

struct

progress

;void getinfofromexeanddll(progress &proitem)

; dword dwsize = 0

; uint uisize = getfileversioninfosize(proitem.strfullpath, &dwsize);

if (0 ==uisize)

ptstr pbuffer = new

tchar[uisize];

if (null ==pbuffer)

memset((

void*)pbuffer, 0

, uisize);

//獲取exe 或 dll 的資源資訊,存放在pbuffer內

if (!getfileversioninfo(proitem.strfullpath, 0

, uisize, (pvoid)pbuffer))

langandcodepage *planguage = null; //

這裡這樣設定沒關係了。

uint uiothersize = 0

;

//獲取資源相關的 codepage 和language

if (!verqueryvalue(pbuffer, "

\\varfileinfo\\translation

",(pvoid*)&planguage, &uiothersize))

//重點

char* ptmp =null;

tchar subblock[max_path];

memset((

void*)subblock, 0, sizeof

(subblock));

uint ulen = 0

;

//獲取每種 codepage 和 language 資源的相關資訊

//這個地方原本是用for迴圈獲取每一種codepage 和 language,但是獲取了他的長度後發現,長度太短了,而我們想要獲取的東西卻又比較多,經過測試,只使用第一組資料即可

//在字串格式化的\\最後乙個字串的名稱就是我們想要獲取的屬性名稱,它們可以是

/*

companyname 

filedescription

fileversion

internalname

originalfilename

productname

productversion

comments

legaltrademarks

privatebuild

specialbuild

*/

int ret = uiothersize / sizeof

(langandcodepage);

if (ret > 0

)

wsprintf(subblock, text(

"\\stringfileinfo\\%04x%04x\\companyname

"), planguage[0].wlanguage, planguage[0

].wcodepage);

if(verqueryvalue(pbuffer, subblock, (pvoid*)&ptmp, &ulen))

strcpy_s(proitem.strsoftwarevendors, ptmp);

wsprintf(subblock, text(

"\\stringfileinfo\\%04x%04x\\fileversion

"), planguage[0].wlanguage, planguage[0

].wcodepage);

if(verqueryvalue(pbuffer, subblock, (pvoid*)&ptmp, &ulen))

strcpy_s(proitem.strsoftwareversion, ptmp);

}deletepbuffer;

pbuffer =null;

}

DLL和EXE的區別

動態鏈結庫 dynamic link library,縮寫為dll 是乙個可以被其它應用程式共享的程式模組,其中封裝了一些可以被共享的例程和資源。動態鏈結庫檔案的副檔名一般是dll,也有可能是drv sys和fon,它和可執行檔案 exe 非常類似.區別dll中雖然包含了可執行 卻不能單獨執行,而應...

DLL和EXE的區別

動態鏈結庫 dynamic link library,縮寫為dll 是乙個可以被其它應用程式共享的程式模組,其中封裝了一些可以被共享的例程和資源。動態鏈結庫檔案的副檔名一般是dll,也有可能是drv sys和fon,它和可執行檔案 exe 非常類似.區別dll中雖然包含了可執行 卻不能單獨執行,而應...

DLL和EXE的區別

原創 2009年05月12日 16 59 00 動態鏈結庫 dynamic link library,縮寫為dll 是乙個可以被其它應用程式共享的程式模組,其中封裝了一些可以被共享的例程和資源。動態鏈結庫檔案的副檔名一般是dll,也有可能是drv sys和fon,它和可執行檔案 exe 非常類似.區...