求高手啊~
代码如下:
char *cPath="D:\\Documents\\Visual Studio 2005\\Projects\\XXOO\\release\\XXOO.exe";

DWORD dwHandle,infoSize;
CString strVersion;
infoSize=GetFileVersionInfoSize(cPath,&dwHandle);
if (!infoSize){AfxMessageBox("no version infomation");return;}
char *infoBuf=new char[infoSize];
GetFileVersionInfo(cPath,0,infoSize,infoBuf);
unsigned int cbTranslate=0;
struct lang_and_code_page
{
WORD wLanguage;
WORD wCodepage;
};
lang_and_code_page *lpTranslate;
VerQueryValue(infoBuf,TEXT("\\varfileinfo\\translation"),(LPVOID*)&lpTranslate,&cbTranslate);

char *lpValueBuf=NULL;
        HANDLE hRes=BeginUpdateResource(cPath,FALSE);
UINT utemp;
char strsublock[200];
StringCchPrintf(strsublock,50,TEXT("\\StringFileInfo\\%04x%04x\\CompanyName"),lpTranslate->wLanguage,lpTranslate->wCodepage);
VerQueryValue(infoBuf,strsublock,(LPVOID *)&lpValueBuf,&utemp);
// char temp[16]="1.0.0.1230";// strcpy(lpValueBuf,"ohmygod");                   //这行注释掉可以读出xxoo程序的companyname
CString fff=lpValueBuf;
CString sss=fff;
UpdateResource(hRes,
RT_VERSION,
"CompanyName",
lpTranslate-> wLanguage,
infoBuf,
infoSize);
EndUpdateResource(hRes,false);
// vers=strVersion;
vers=fff;
UpdateData(false);
delete [] infoBuf;-------------------------------------------------------------------运行以后那个程序的companyname没变化。。函数返回都是true。求大侠指点。。