«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как программно получить информацию о версии для DLL и EXE-файлов?

Как программно получить информацию о версии для DLL и EXE-файлов?

Опубликовано 10 ноября 2024 г.
Просматривать:137

How to Programmatically Get Version Information for DLLs and EXEs?

Как программно получить информацию о версии для DLL и EXE-файлов

В сфере разработки программного обеспечения часто возникает необходимость получить информацию о версии, связанную с динамически подключаемыми библиотеками ( DLL) и исполняемые программы (EXE). Используя собственные API-интерфейсы Win32, доступные через C или C, разработчики могут легко получать версии продуктов и файлов этих исполняемых объектов.

API GetFileVersionInfo: разблокировка информации о версии

Ключ к разблокированию информации о версии находится в API GetFileVersionInfo. Эта мощная функция заполняет буфер данными, относящимися к указанному файлу DLL или EXE. Давайте углубимся в тонкости его использования:

  • Определение размера файла: GetFileVersionInfoSize помогает оптимизировать распределение памяти, предоставляя необходимый размер буфера.
  • Получение данных о версии: GetFileVersionInfo предоставляет гранты доступ к информации о версии, надежно хранящейся в буфере.
  • Запрос к буферу: VerQueryValue извлекает подмножество данных о версии, соответствующее предопределенным критериям пользователя.
  • Интерпретация номеров версий: понимание базовой В структуре информации о версии разработчики могут точно проанализировать четырехчастный номер версии с точками (x.x.x.x) из значений dwFileVersionMS и dwFileVersionLS.

Пример получения версии на практике

Следующий код пример иллюстрирует практическое применение API GetFileVersionInfo:

DWORD verHandle = 0;
UINT size = 0;
LPBYTE lpBuffer = NULL;
DWORD verSize = GetFileVersionInfoSize(szVersionFile, &verHandle);

if (verSize != NULL) {
    LPSTR verData = new char[verSize];

    if (GetFileVersionInfo(szVersionFile, verHandle, verSize, verData)) {
        if (VerQueryValue(verData, "\\", (VOID FAR * FAR *)&lpBuffer, &size)) {
            if (size) {
                VS_FIXEDFILEINFO *verInfo = (VS_FIXEDFILEINFO *)lpBuffer;
                if (verInfo->dwSignature == 0xfeef04bd) {
                    // Parse the file version into a four-part dotted string
                    TRACE("File Version: %d.%d.%d.%d\n",
                          (verInfo->dwFileVersionMS >> 16) & 0xffff,
                          (verInfo->dwFileVersionMS >>  0) & 0xffff,
                          (verInfo->dwFileVersionLS >> 16) & 0xffff,
                          (verInfo->dwFileVersionLS >>  0) & 0xffff
                          );
                }
            }
        }
    }
    delete[] verData;
}

В заключение, API GetFileVersionInfo предоставляет комплексное решение для программного получения информации о версии из DLL и EXE-файлов. Используя эту функцию, разработчики могут автоматизировать задачи поиска версий, обеспечивая точность и эффективность своих усилий по разработке программного обеспечения.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3