擷取windows可執行檔的version資訊(版本號碼)

來源:互聯網
上載者:User

標籤:

之前在msdn上Version Information看到檔案版本資訊的介紹,看著整體比較複雜,就一直沒做。現在需要擷取ocx檔案的版本號碼,所以尋找了下相關資料,比較有用的就是VS_FIXEDFILEINFO結構,擷取這個參數就基本可以完成任務了。

代碼如下:

 1 //typedef struct tagVS_FIXEDFILEINFO 2 //{ 3 //    DWORD   dwSignature;            /* e.g. 0xfeef04bd */ 4 //    DWORD   dwStrucVersion;         /* e.g. 0x00000042 = "0.42" */ 5 //    DWORD   dwFileVersionMS;        /* e.g. 0x00030075 = "3.75" */ 6 //    DWORD   dwFileVersionLS;        /* e.g. 0x00000031 = "0.31" */ 7 //    DWORD   dwProductVersionMS;     /* e.g. 0x00030010 = "3.10" */ 8 //    DWORD   dwProductVersionLS;     /* e.g. 0x00000031 = "0.31" */ 9 //    DWORD   dwFileFlagsMask;        /* = 0x3F for version "0.42" */10 //    DWORD   dwFileFlags;            /* e.g. VFF_DEBUG | VFF_PRERELEASE */11 //    DWORD   dwFileOS;               /* e.g. VOS_DOS_WINDOWS16 */12 //    DWORD   dwFileType;             /* e.g. VFT_DRIVER */13 //    DWORD   dwFileSubtype;          /* e.g. VFT2_DRV_KEYBOARD */14 //    DWORD   dwFileDateMS;           /* e.g. 0 */15 //    DWORD   dwFileDateLS;           /* e.g. 0 */16 //} VS_FIXEDFILEINFO;17 {18     char szAppFullPath[_MAX_PATH] = {0};19 20     GetModuleFileName(NULL,szAppFullPath,MAX_PATH);//得到程式模組名稱,全路徑21 22     //擷取當前檔案的版本資訊23     DWORD dwLen = GetFileVersionInfoSize(szAppFullPath,NULL); 24     char *pszAppVersion = new char[dwLen+1];25     if(pszAppVersion)26     {27         memset(pszAppVersion,0,sizeof(char)*(dwLen+1));28         GetFileVersionInfo(szAppFullPath,NULL,dwLen,pszAppVersion);29         CString strVersion;30         UINT nLen(0);31         VS_FIXEDFILEINFO *pFileInfo(NULL);32         VerQueryValue(pszAppVersion,"\\",(LPVOID*)&pFileInfo,&nLen);33         if(pFileInfo)34         {35             //擷取檔案版本號碼36             strVersion.Format("%d.%d.%d.%d",HIWORD(pFileInfo->dwFileVersionMS),37                 LOWORD(pFileInfo->dwFileVersionMS),38                 HIWORD(pFileInfo->dwFileVersionLS),39                 LOWORD(pFileInfo->dwFileVersionLS));40         }41     }42 }

基本思路就是先擷取可執行檔所在的全路徑,然後使用GetFileVersionInfo函數,擷取版本資訊;之後使用VerQueryValue函數,查詢版本資訊。

擷取windows可執行檔的version資訊(版本號碼)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.