"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso recuperar informações de versão de DLLs e EXEs usando a API Win32 em C ou C++?

Como posso recuperar informações de versão de DLLs e EXEs usando a API Win32 em C ou C++?

Publicado em 2024-11-18
Navegar:735

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

Obtendo informações de versão para DLLs e EXEs

Muitos aplicativos exigem a capacidade de recuperar informações de versão de arquivos. Essas informações são usadas para fins de exibição, como mostrar o número da versão na caixa de diálogo de propriedades.

A API do Win32 fornece diversas funções que podem ser usadas para obter informações de versão. Uma abordagem comum é usar a API GetFileVersionInfo.

Usando GetFileVersionInfo

A função GetFileVersionInfo recupera informações sobre os recursos de versão de um arquivo. As etapas envolvidas no uso desta função são:

  1. Chamar GetFileVersionInfo com o caminho do arquivo e um ponteiro para uma variável DWORD que receberá o identificador para as informações da versão.
  2. Chamar GetFileVersionInfoSize com o caminho do arquivo e o identificador da etapa 1 para determinar o tamanho das informações da versão.
  3. Aloque um buffer do tamanho recuperado na etapa 2.
  4. Chame GetFileVersionInfo novamente com o caminho do arquivo, identificador, tamanho e ponteiro para o buffer da etapa 3 para recuperar as informações da versão.

Extraindo dados de versão

Depois que as informações da versão forem recuperadas, você poderá usar a função VerQueryValue para extrair informações específicas. O código de exemplo a seguir demonstra como extrair a versão do produto e os números de versão do arquivo:

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
                );
            }
        }
    }
}

Seguindo essas etapas, você pode obter programaticamente a versão do produto e os números de versão do arquivo para arquivos DLLs ou EXE usando APIs nativas do Win32 em C ou C.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3