http://bugs.winehq.org/show_bug.cgi?id=14035
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |focht@gmx.net
--- Comment #2 from Anastasius Focht focht@gmx.net 2008-06-21 10:18:25 --- Hello,
well the cause of the failure is due to unsupported access flags. The custom action is called "setkeys" (+msi) and this dll probably takes care of any COM registration stuff by writing/creating appropriate registry keys/values.
--- snip --- 0037:Call advapi32.RegCreateKeyExW(80000000,100138e0 L"CLSID\{0DB074F0-617E-4EE9-912C-2965CF2AA5A4}\InprocServer32",00000000,00000000,00000000,000f023f,00000000,7de9685c,7de96860) ret=1000230d 0037:Ret advapi32.RegCreateKeyExW() retval=00000005 ret=1000230d ... --- snip ---
0xf023f = KEY_ALL_ACCESS (0xF003F) | KEY_WOW64_32KEY (0x0200)
winnt.h
+#define KEY_WOW64_64KEY 0x00000100 +#define KEY_WOW64_32KEY 0x00000200
--- quote MSDN --- KEY_WOW64_32KEY (0x0200)
Indicates that an application on 64-bit Windows should operate on the 32-bit registry view. For more information, see Accessing an Alternate Registry View.
This flag must be combined using the OR operator with the other flags in this table that either query or access registry values.
Windows 2000: This flag is not supported. --- quote MSDN ---
See: http://msdn.microsoft.com/en-us/library/ms724878(VS.85).aspx
If you look at code of RegCreateKeyExW():
--- snip dlls/advapi32/registry.c --- LSTATUS WINAPI RegCreateKeyExW( HKEY hkey, LPCWSTR name, DWORD reserved, LPWSTR class, DWORD options, REGSAM access, SECURITY_ATTRIBUTES *sa, PHKEY retkey, LPDWORD dispos) { ...
if (!(access & KEY_ACCESS_MASK) || (access & ~KEY_ACCESS_MASK)) return ERROR_ACCESS_DENIED;
} --- snip dlls/advapi32/registry.c ---
KEY_ACCESS_MASK check doesn't include WOW64 flags yet.
Regards