调用VerQueryValue时语言为0

时间:2017-10-12 17:30:53

标签: winapi visual-c++

下面的代码类似于VerQueryValue()文档中的示例:

// Structure used to store enumerated languages and code pages.

HRESULT hr;

struct LANGANDCODEPAGE {
  WORD wLanguage;
  WORD wCodePage;
} *lpTranslate;

// Read the list of languages and code pages.

VerQueryValue(pBlock, 
              TEXT("\\VarFileInfo\\Translation"),
              (LPVOID*)&lpTranslate,
              &cbTranslate);

// Read the file description for each language and code page.

for( i=0; i < (cbTranslate/sizeof(struct LANGANDCODEPAGE)); i++ )
{
  hr = StringCchPrintf(SubBlock, 50,
            TEXT("\\StringFileInfo\\%04x%04x\\FileDescription"),
            lpTranslate[i].wLanguage,
            lpTranslate[i].wCodePage);
    if (FAILED(hr))
    {
    // TODO: write error handler.
    }

  // Retrieve file description for language and code page "i". 
  VerQueryValue(pBlock, 
                SubBlock, 
                &lpBuffer, 
                &dwBytes); 
}

代码可以检索其他exe文件的字符串信息,但仅针对1个特定文件,它无法检索字符串信息(我注意到这种情况下语言为零)。

通过使用文件浏览器,我可以看到语言是“语言中立”。但是,代码显示语言部分为0,代码页部分为1252。

  1. 将语言设为0是否正常?
  2. 此外,我无法获取CompanyName和其他字符串,但可以从Windows文件浏览器获取。
  3. 以下是VC ++中针对该exe的截图: enter image description here

    有什么想法吗?

0 个答案:

没有答案