1. 程式人生 > >VC獲得程式自身的版本號

VC獲得程式自身的版本號

作業系統: Windows7 64位

執行環境: Visual Studio 10

檔案編碼: Unicode

char* GetLocalPogramVersion()
{
	TCHAR pFilePath[MAX_PATH] = {0};     
	DWORD dwRet = GetModuleFileName(NULL, pFilePath, MAX_PATH); 
	if(dwRet == 0)
	{
		TRACE("h獲取程式的檔案路徑失敗,錯誤碼:%s\n",GetLastError());
		return "";
	}
	TRACE("程式自身的全路徑:%s\n",pFilePath);

	//獲取版本資訊大小
	DWORD dwSize = GetFileVersionInfoSize(pFilePath,NULL); 
	if (dwSize == 0) 
	{ 
		TRACE("獲取版本資源長度失敗,檔案不包含版本資訊,錯誤碼:%d\n",GetLastError()); 
		return "";
	}

	TCHAR *pBuf = (TCHAR *)malloc(dwSize + 1); 
	memset(pBuf, 0, dwSize + 1);

	//獲取版本資訊
	DWORD dwRtn = GetFileVersionInfo(pFilePath,NULL, dwSize, pBuf); 
	if(dwRtn == 0) 
	{ 
		TRACE("獲取檔案版本資訊失敗,錯誤碼:%d\n",GetLastError()); 
		return "";
	}

	LPVOID lpBuffer = NULL;
	UINT uLen = 0;

	dwRtn = VerQueryValue(pBuf, TEXT("\\StringFileInfo\\080404b0\\FileVersion"), &lpBuffer, &uLen); 
	if(dwRtn == 0) 
	{ 
		delete pBuf; 
		TRACE("請求的程式版本資訊不存在。\n");
		return "";	 
	}

	int iLen = 2*wcslen((TCHAR*)lpBuffer);//CString,TCHAR漢字算一個字元,因此不用普通計算長度   
	char* chRtn = (char *)malloc(iLen+1); 
	memset(chRtn,0,iLen+1);
	wcstombs(chRtn,(TCHAR*)lpBuffer,iLen+1);//轉換成功返回為非負值

	char* strVersion = (char *)malloc(iLen+1); 
	memset(strVersion,0,iLen+1);
	strcpy(strVersion, chRtn);
	delete pBuf;

	TRACE("程式版本號:%s\n",strVersion);	

	return strVersion;
}


相關推薦

VC獲得程式自身版本

作業系統: Windows7 64位 執行環境: Visual Studio 10 檔案編碼: Unicode char* GetLocalPogramVersion() { TCHAR pFi

Delphi2010如何獲取程式內部自身版本

用原來的GetFileVersionInfo只能獲取Delpi7的程式版本號,用在Delphi2010中就不管用了 //------ 獲取檔案版本號function F_GetFileVersion(FN: string): string;var  Temp, InfoSi

Qt軟體開發文件16---軟體更新:寫入程式版本資訊並讀取程式版本

實現軟體更新,需要寫入本地軟體的版本號,並讀取出來,與伺服器版本號相比較,決定是否進行軟體的更新。 1.寫入版本資訊: 寫入一個rc檔案,並將其匯入到Qt工程中。  在Qt工程中,利用RC_FILE+=version.rc 匯入工程  QT+VS編譯時,利用cmake匯入

C#如何設定程式名稱/版本和圖示

在開啟的【屬性】視窗中,修改【程式集名稱】為需要的程式名稱【Listview示例程式】, 修改【預設名稱空間】名稱為本程式對應的標題名稱。 【程式集名稱】就是生成的程式檔案的名稱。 到這一步,程式的名稱修改完成,需要繼續修改圖示。

如何獲取應用程式版本和版本名

實現獲取應用程式的版本號和阪本名,通過獲取包管理器開始;步驟如下: 程式如下 public class MainActivity extends AppCompatActivity { Co

C#如何獲得檔案的版本

 獲取檔案的版本號寫成一個函式。 /// <summary> /// 獲取檔案的版本號 /// </summary> /// <param name="filePath">檔案的完整路徑</param> /// <r

獲取當前程式版本

private int getVersionCode() { try { //獲取packagemanager的例項 PackageManager packageManager = getPackageManager(); //getPackageN

Android基礎:教你如何獲取軟體自身版本和Android系統版本

前言 在Android軟體開發過程中,版本升級常常需要得到軟體版本,與伺服器作對比後決定是否升級,那麼如何獲取軟體版本呢?有時我們需要獲取系統版本已決定載入合適的資原始檔,系統版本又如何得到呢?假如我

c# winform獲取當前路徑exe程式版本

 通常軟體自動更新時,需要比較新版本與舊版本的版本號,如果新檔案的版本號比舊檔案高,就替換舊檔案。(版本號一般可以在Visual Studio的程式資訊裡定義)  如何取得當前exe程式的版本號呢

微信小程式比較版本

小程式基礎庫版本號使用 semver 規範,格式為 Major.Minor.Patch,其中Major、Minor、Patch均為整數,1.9.901、2.44.322、10.32.44 都是符合 se

vc設定程式版本, 獲取程式版本

最近正在學vc,很多不會的,真是寸步難行,好在這個世界有網路這個好東西,遇到問題百度一下或是GOOGLE總能找到看來很有道理的答案,為了方便以後自己的學習,就總結了一下放在這裡,也歡迎大家發表真知灼見。 //很好,很方便,無需修改,可作為程式模組直接呼叫。 //獲取軟體當前的版本 //該版本號是在資原始檔

VS版本VC版本之間的關系

vc vs 版本VC11是Visual C++的第十一個版本 是一個運行庫 在2012年跟Visual studio 2012一起發布 是Visual studio 2012必備的運行庫如下是括號是VS的版本號,左邊是VC版本號VC6VC7(2003)VC8(2005)VC9(2008)VC10(2010)V

【虛擬機器】關於VMware 提示“無法獲得VMCI驅動程式版本:控制代碼無效”的解決方案

一、問題的出現     在VMware進行完虛擬機器安裝嚮導之後,剛要開啟虛擬機器進行作業系統的安裝時,會出現“無法獲得VMCI驅動程式的版本:控制代碼無效”的錯誤提示,如圖1 所示。(本人執行環境為Windows 10,VMware 12) &

linux 程式、動態庫、靜態庫內部新增版本和編譯時間

給程式和庫新增版本號和庫,有利於維護和升級。 當然你可以在檔名上體現,比如有個程式叫 yun,檔名寫為 yun_1.0.2,但這個需要每次手動維護,而且不能100%確保當前程式就是那個版本。所以,把版本號體現在程式內部,是一個不錯的選擇。 --------------------------

Android獲取APP的應用程式名稱、包名、圖示,版本基本資訊

在開發過程中  我們經常需要獲取程式名稱, 包名 版本號等相關資訊,只需要用到下面這個工具類,即可: /跟App相關的輔助類 public class AppUtils { /** * 獲取應用程式名稱 */ public stati

MFC中獲取程式自身版本資訊

收集整理自CSDN論壇。 首先、在Stdafx.h中引入連結庫: #pragma comment(lib,"Version.lib") 在對應的處理方法中如下: char FileVerInfo[4096]; DWORD dwVerLen = 0; CString strPath

Delphi中取得程式版本

Delphi做的程式,如果想包含版本資訊, 必須在Delphi的整合編輯環境的選單“Project/Options/Version Info”裡面新增版本資訊。即在Version Info 選項卡中選中“Include version information in project”項,並在“Module ve

Android獲得當前作業系統的版本

activity_main.xml檔案中<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.

關於VMware問題:無法獲得 VMCI 驅動程式版本: 控制代碼無效。驅動程式“vmci.sys”的版本不正確......

問題 解決 根據配置檔案路徑找到對應的.vmx檔案: 用編輯器開啟,找到vmci0.present = “TRUE”一項: 將該項修改為:vmci0.present = “FALSE”

[轉貼]VC編譯器版本_MSC_VER and _MSC_FULL_VER

                   Visual Studio version and discrimination macros Abbreviation Pro