2012-12-03 53 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 。