Win32 GetFileVersion C++ code

Discussion on data structures & algorithms, programming languages, computer science and more
Post Reply
doctorlai
Site Admin
Posts:44
Joined:Tue Jan 15, 2013 3:16 pm
Win32 GetFileVersion C++ code

Post by doctorlai » Thu Mar 20, 2014 6:06 pm

Code: Select all

int GetFileVersion(const char *filename, char *ver)
{
    DWORD dwHandle, sz = GetFileVersionInfoSizeA( filename, & dwHandle );
    if ( 0 == sz )
    {
        return 1;
    }
   char *buf = new char[sz];
    if ( !GetFileVersionInfoA( filename, dwHandle, sz, & buf[ 0 ] ) )
    {
      delete buf;
        return 2;
    }
    VS_FIXEDFILEINFO * pvi;
    sz = sizeof( VS_FIXEDFILEINFO );
    if ( !VerQueryValueA( & buf[ 0 ], "\\", (LPVOID*)&pvi, (unsigned int*)&sz ) )
    {
      delete buf;
        return 3;
    }
    sprintf( ver, "%d.%d.%d.%d"
            , pvi->dwProductVersionMS >> 16
            , pvi->dwFileVersionMS & 0xFFFF
            , pvi->dwFileVersionLS >> 16
            , pvi->dwFileVersionLS & 0xFFFF
            );
   delete buf;
   return 0;
}

doctorlai
Site Admin
Posts:44
Joined:Tue Jan 15, 2013 3:16 pm

Re: Win32 GetFileVersion C++ code

Post by doctorlai » Sun Jun 28, 2015 2:14 am

Use GetFileVersionInfoW, VerQueryValueW and GetFileVersionInfoSizeW to enforce a unicode version

Post Reply