有時我們需要獲取可執行檔案或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...