반응형
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
👨💻 안녕하세요, 윌리 프로젝트의 윌리 입니다.
MFC 에서 실행파일의 ProductName 과 ProductVersion 알아내는 방법은 어떻게 되는지 간략히 알아보았습니다.

질문 >
MFC 에서 실행파일의 ProductName 과 ProductVersion 알아내는 방법은 어떻게 되나요?
답변 >
MFC에서 실행 파일의 ProductName과 ProductVersion을 알아내려면, Windows API를 사용하여 파일의 버전 정보를 가져와야 합니다.
다음은 GetFileVersionInfo 및 VerQueryValue 함수를 사용하여 실행 파일의 ProductName과 ProductVersion을 가져오는 방법입니다.
1. 코드 예제 (C++ / MFC)
#include <windows.h>
#include <tchar.h>
#include <strsafe.h>
void GetProductInfo(LPCTSTR szFilePath)
{
DWORD dwHandle;
DWORD dwSize = GetFileVersionInfoSize(szFilePath, &dwHandle);
if (dwSize == 0)
{
_tprintf(_T("GetFileVersionInfoSize failed: %lu\\n"), GetLastError());
return;
}
// 버전 정보를 저장할 버퍼 할당
BYTE* pVersionInfo = new BYTE[dwSize];
if (!GetFileVersionInfo(szFilePath, 0, dwSize, pVersionInfo))
{
_tprintf(_T("GetFileVersionInfo failed: %lu\\n"), GetLastError());
delete[] pVersionInfo;
return;
}
// 버전 정보의 루트 블록에서 번역 테이블 확인
struct LANGANDCODEPAGE {
WORD wLanguage;
WORD wCodePage;
} *pLangInfo;
UINT uLen;
if (!VerQueryValue(pVersionInfo, _T("\\\\VarFileInfo\\\\Translation"), (LPVOID*)&pLangInfo, &uLen))
{
_tprintf(_T("VerQueryValue for Translation failed\\n"));
delete[] pVersionInfo;
return;
}
// 첫 번째 언어 및 코드 페이지 선택
TCHAR szSubBlock[256];
StringCchPrintf(szSubBlock, 256, _T("\\\\StringFileInfo\\\\%04x%04x\\\\ProductName"), pLangInfo->wLanguage, pLangInfo->wCodePage);
// ProductName 가져오기
LPTSTR szProductName = nullptr;
if (VerQueryValue(pVersionInfo, szSubBlock, (LPVOID*)&szProductName, &uLen))
{
_tprintf(_T("ProductName: %s\\n"), szProductName);
}
// ProductVersion 가져오기
StringCchPrintf(szSubBlock, 256, _T("\\\\StringFileInfo\\\\%04x%04x\\\\ProductVersion"), pLangInfo->wLanguage, pLangInfo->wCodePage);
LPTSTR szProductVersion = nullptr;
if (VerQueryValue(pVersionInfo, szSubBlock, (LPVOID*)&szProductVersion, &uLen))
{
_tprintf(_T("ProductVersion: %s\\n"), szProductVersion);
}
delete[] pVersionInfo;
}
int main()
{
TCHAR szFilePath[MAX_PATH];
GetModuleFileName(NULL, szFilePath, MAX_PATH); // 현재 실행 파일 경로 가져오기
GetProductInfo(szFilePath);
return 0;
}
2. 코드 설명
- GetModuleFileName(NULL, szFilePath, MAX_PATH);
- 현재 실행 중인 EXE 파일의 전체 경로를 가져옵니다.
- GetFileVersionInfoSize
- 실행 파일의 버전 정보 크기를 확인합니다.
- GetFileVersionInfo
- 실행 파일의 버전 정보를 가져옵니다.
- VerQueryValue
- 버전 정보에서 ProductName 및 ProductVersion을 추출합니다.
3. 실행 예시
ProductName: MyApplication
ProductVersion: 1.0.0.0
이제 실행 파일의 ProductName과 ProductVersion을 가져올 수 있습니다. 😊
🎬 유튜브 채널 🎬
위로그@WiLog
📢 안녕하세요, 위로그@WiLog 시청자 여러분, 저는 윌리(Willee) 입니다. 📢 위로그@WiLog 는 자기계발을 목적으로 하는 채널 입니다. 📢 오늘도 즐겁게~ 자신을 위한 계발을 함께 해보아요~ d^_^b 📌
www.youtube.com
🎬 치지직 채널 🎬
위로그 채널 - CHZZK
지금, 스트리밍이 시작됩니다. 치지직-
chzzk.naver.com
반응형