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

Как я могу получить информацию о версии из DLL и EXE-файлов с помощью Win32 API на C или C++?

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

How can I retrieve version information from DLLs and EXEs using Win32 API in C or C  ?

Получение информации о версии для DLL и EXE-файлов

Многим приложениям требуется возможность получать информацию о версии из файлов. Эта информация используется для отображения, например, для отображения номера версии в диалоговом окне свойств.

Win32 API предоставляет несколько функций, которые можно использовать для получения информации о версии. Одним из распространенных подходов является использование API GetFileVersionInfo.

Использование GetFileVersionInfo

Функция GetFileVersionInfo извлекает информацию о ресурсах версии файла. Шаги, необходимые для использования этой функции:

  1. Вызов GetFileVersionInfo с путем к файлу и указателем на переменную DWORD, которая получит дескриптор информации о версии.
  2. Вызов GetFileVersionInfoSize с помощью путь к файлу и дескриптор из шага 1, чтобы определить размер информации о версии.
  3. Выделите буфер размер, полученный на шаге 2.
  4. Вызовите GetFileVersionInfo еще раз, указав путь к файлу, дескриптор, размер и указатель на буфер из шага 3, чтобы получить информацию о версии.

Извлечение версии Данные

После получения информации о версии вы можете использовать функцию VerQueryValue для извлечения конкретной информации. В следующем примере кода показано, как извлечь версию продукта и номера версий файлов:

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)
            {
                TRACE("File Version: %d.%d.%d.%d\n",
                (verInfo->dwFileVersionMS >> 16) & 0xffff,
                (verInfo->dwFileVersionMS >> 0) & 0xffff,
                (verInfo->dwFileVersionLS >> 16) & 0xffff,
                (verInfo->dwFileVersionLS >> 0) & 0xffff
                );
            }
        }
    }
}

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

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

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

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

Copyright© 2022 湘ICP备2022001581号-3