win32 – 使用VerQueryValue获得应用程序的名称

比如:

Google Chrome:

类似于任务管理器中显示名字,见下图

win32 - 使用VerQueryValue获得应用程序的名称

那么我们就需要使用VerQueryValue, 

从指定的版本信息资源中检索指定的版本信息。若要检索适当的资源,在调用VerQueryValue之前,必须首先调用GetFileVersionInfoSize函数,然后再调用GetFileVersionInfo函数

代码示例:

 

#include <Windows.h>
#include <iostream>
#include <strsafe.h>

#pragma comment(lib,"Version.lib")
struct LANGANDCODEPAGE {
    WORD wLanguage;
    WORD wCodePage;
} *lpTranslate;

int main()
{   
    HANDLE handle = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, FALSE, appid);   
    wchar_t pszFile[MAX_PATH] = L"";
    DWORD len = MAX_PATH;
    if (handle) QueryFullProcessImageName(handle, 0, pszFile, &len);
    UINT dwBytes, cbTranslate;
    DWORD dwSize = GetFileVersionInfoSize(pszFile, (DWORD*)&dwBytes);
    if (dwSize == 0)
    {
        int err = GetLastError();
        return 0;
    }
    LPVOID lpData = (LPVOID)malloc(dwSize);
    ZeroMemory(lpData, dwSize);
    if (GetFileVersionInfo(pszFile, 0, dwSize, lpData))
    {
        VerQueryValue(lpData,
            L"\VarFileInfo\Translation",
            (LPVOID*)&lpTranslate,
            &cbTranslate);
        wchar_t strSubBlock[MAX_PATH] = { 0 };
        wchar_t* lpBuffer;

        for (int i = 0; i < (cbTranslate / sizeof(struct LANGANDCODEPAGE)); i++)
        {
            StringCchPrintf(strSubBlock, 50,
                L"\StringFileInfo\%04x%04x\FileDescription",
                lpTranslate[i].wLanguage,
                lpTranslate[i].wCodePage);
            VerQueryValue(lpData,
                strSubBlock,
                (void**)&lpBuffer,
                &dwBytes);
            std::wcout << lpBuffer << std::endl;
        }
    }
    if (lpData) free(lpData);
    if (handle) CloseHandle(handle);
    return 0;
}

 Note: 这对普通的win32窗口包括控制台似乎不起作用

原文链接: https://www.cnblogs.com/strive-sun/p/13809457.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    win32 - 使用VerQueryValue获得应用程序的名称

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/404816

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年4月25日 下午4:44
下一篇 2023年4月25日 下午4:44

相关推荐