Re[3]: Извлечение Информации из exe файлов
От: Alex Kirhenshtein Латвия http://www.netxms.org
Дата: 25.05.07 17:27
Оценка:
Здравствуйте, Robo.Burned, Вы писали:

RB>Искал в гугле VersionInfo resource.


искать надо так:

site:microsoft.com versioninfo

первая линк гула.

RB>Помогите, пожалуйста поподробнеее, желательно хоть с каплей кода.


Примерно так:

#include <stdio.h>
#include <windows.h>

typedef struct t_L
{
    WORD wLanguage;
    WORD wCodePage;    
} L;

int wmain(int argc, wchar_t *argv[])
{
    DWORD size;
    void *buff;
    int verSize, productNameSize, i;
    wchar_t tmp[1024], *productName;
    L *verTrans;

    size = GetFileVersionInfoSize(argv[1], NULL);
    if (size > 0) {
        buff = malloc(size);
        if (buff != NULL)
        {
            if (GetFileVersionInfo(argv[1], 0, size, buff) != 0)
            {
                if (VerQueryValue(buff, L"\\VarFileInfo\\Translation",
                    (LPVOID*)&verTrans, &verSize))
                {
                    for (i = 0; i < verSize / sizeof(L); i++)
                    {
                        wprintf(L"Found translation: lang=%d, cp=%d\n",
                            verTrans[i].wLanguage,
                            verTrans[i].wCodePage);
                        swprintf(tmp, 1024, L"\\StringFileInfo\\%04x%04x\\ProductName",
                            verTrans[i].wLanguage,
                            verTrans[i].wCodePage);
                        if (VerQueryValue(buff, tmp, &productName, &productNameSize))
                        {
                            wprintf(L"Product name: {%s}\n", productName);
                        }
                    }
                }
            }
            free(buff);
        }
    }
    
    return 0;
}
... << RSDN@Home 1.2.0 alpha rev. 679>>
NetXMS: Open Source Network monitoring solution
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.