2012-12-03 52 views
1

我想修改我的exe资源中的一些字符串。该资源类型是一个字符串表, ,但是当我使用UpdateResource函数时,我不知道必须传递哪个参数,所以它指向字符串表中的原始数据。修改win32本机exe中字符串表类型的资源

类型参数是RT_STRING,但我应该发送到MAKEINTRESOURCEW()

HANDLE hExeFile = BeginUpdateResource(L"d:\\m.exe", FALSE); 
WCHAR mail[]={L"[email protected]"}; 
UpdateResource(hExeFile,RT_STRING,MAKEINTRESOURCEW(?????), MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), (LPVOID)mail, wcslen(mail)*2); 
EndUpdateResource(hExeFile, FALSE); 
+0

也许你有代码可以帮助 – Firo

+0

[UpdateResource更新字符串表]可能的重复(http://stackoverflow.com/questions/14088057/updating-a-string-table-with-updateresource) – IInspectable

回答

1

exe文件在运行时无法更新自己的资源。资源被OS锁定并且是只读的。但是,如果您可以更新资源,那么显然您必须知道资源的ID才能更新资源。如果它是编译器生成的资源,那么除非编译器使用可预测的ID号(例如1),否则可能是运气不好的。否则,使用.rc文件来定义自己的资源数据,然后可以使用任何您想要的ID 。