The utility muirct.exe for some reason accesses the opaque HANDLE that is returned by BeginUpdateResource, it assumes a certain structure in which (on 32bit systems) there is a pointer to the wide repesentation of the file name in offset 0x18 (0x30 on 64bit). Refer to: muirct!BldToolsEndUpdateResourceW called from muirct!CopyChecksumToFile Sample execution: MUIRCT.EXE -c "ui.exe" -e "de-DE\ui.exe.mui" Signed-off-by: Jon Doron <arilou(a)gmail.com> --- dlls/kernel32/resource.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dlls/kernel32/resource.c b/dlls/kernel32/resource.c index 73f3cca363..59bc7a8cdc 100644 --- a/dlls/kernel32/resource.c +++ b/dlls/kernel32/resource.c @@ -635,7 +635,8 @@ DWORD WINAPI SizeofResource( HINSTANCE hModule, HRSRC hRsrc ) typedef struct { - LPWSTR pFileName; + void *Reserved[6]; + LPWSTR pFileName; /* Must be in offset 0x18 on 32bit and 0x30 on 64bit */ BOOL bDeleteExistingResources; struct list root; } QUEUEDUPDATES; -- 2.17.1