C 檔案操作 獲取可執行檔案或DLL版本資訊

2021-08-07 20:38:37 字數 2292 閱讀 7812

有時我們需要獲取可執行檔案或dll檔案的版本資訊,用於比對工具版本是否需要更新,那麼如何獲取檔案的版本資訊呢?

如下是一種版本資訊的獲取方法,可供參考

#pragma comment(lib,"version.lib") 

#include #include int getversioninfo(unsigned int* major_ver, unsigned int* minor_ver, unsigned int* build_num, unsigned int* revision_num)

// get file version indo

//如果需要獲取外部exe版本資訊,可以直接將路徑賦值給versionfilepath

dword dwhnd;

dword dwverinfosize;

if( 0 >= (dwverinfosize = getfileversioninfosize(versionfilepath,

&dwhnd)) )

buf = new char[dwverinfosize];

if( null == buf )

// get file version info

if(!getfileversioninfo(versionfilepath,

dwhnd,

dwverinfosize,

buf))

// read the list of languages and code pages.

struct langandcodepage

*lptranslate;

unsigned int cbtranslate;

if(!verqueryvalue(buf, "\\varfileinfo\\translation", (void**)&lptranslate, &cbtranslate))

// get fileversion string from resource

vs_fixedfileinfo* p_version;

unsigned int version_len = 0;

if(!verqueryvalue(buf, "\\", (void**)&p_version, &version_len))

s_major_ver = (p_version->dwfileversionms >> 16) & 0x0000ffff;

s_minor_ver = p_version->dwfileversionms & 0x0000ffff;

s_build_num = (p_version->dwfileversionls >> 16) & 0x0000ffff;

s_revision_num = p_version->dwfileversionls & 0x0000ffff;

/* get file comments

const char* p_comments;

unsigned int comments_len = 0;

sprintf_s(temp, sizeof(temp), "\\stringfileinfo\\%04x%04x\\comments", lptranslate[0].wlanguage, lptranslate[0].wcodepage);

if(!verqueryvalue(buf, temp, (void**)&p_comments, &comments_len))

*/} // return version number

if( null != major_ver )

if( null != minor_ver )

if( null != build_num )

if( null != revision_num )

_error:

delete buf;

return status;

}

unsigned int majorversion;

unsigned int minorversion;

unsigned int buildnumber;

unsigned int revisionnumber;

static char versionstring[max_path];

getversioninfo(&majorversion,

&minorversion,

&buildnumber,

&revisionnumber);

if( 0 == revisionnumber )

else

C 獲取可執行檔案位址

net core裡由於僅保留最基層的類庫,編譯後,一些附加類庫是無法附加生成的,所以一些原來的寫法不具有通用性,下面的通用性寫法,適用於.net 標準類庫與.net core類庫 可執行檔案位址 private readonly string locationpath system.io.direc...

bat操作可執行檔案

最近專案需要用bat來執行一些程式 以前對bat的語法不熟悉,借這個機會學習了一下bat的語法。其實bat檔案的語法不是很難,只要熟悉一下幾個基本的命令,大部分都能用它們來解決實際問題。本人用到的命令有 echo 顯示字元 後台執行命令 start w 等待某個命令執行完畢 if exists 檔案...

C 呼叫可執行檔案

一,語法 c 提供process類來對本地或遠端程序進行訪問,以及啟動或停止本地程序。更多語法資訊 二,using system using system.collections.generic using system.diagnostics using system.linq using sys...