http://bugs.winehq.org/show_bug.cgi?id=29014
--- Comment #4 from Anastasius Focht focht@gmx.net 2011-11-07 17:02:05 CST --- Hello Austin,
the signature in spec file needs correction, last parameter is ptr type. It might be useful to log out parameters passed into stub to know which object is being checked (REFCLSID -> debugstr_guid() etc.)
Returning "FALSE" by default might not be a good idea.
MSDN: http://msdn.microsoft.com/en-us/library/bb432180.aspx
--- quote --- Return value
FALSE if the object should be blocked from instantiating; TRUE otherwise. Remarks
This is a helper function for Explorer and Internet Explorer that allows those applications to detect bad extension objects and either block them from running or fix them.
If the database indicates that a shim should be used to fix the extension and bShimIfNecessary is TRUE, this function loads Shimeng.dll and applies the fix. ... --- quote ---
Basically you tell IE to block every shell extension. As long as Wine doesn't do shimming it should behave as if the API is not present meaning that all extensions are allowed to be instantiated - even the bad guys.
Example "FALSE":
"7b8a2d94-0ac9-11d1-896c-00c04fb6bfc4" = CLSID_SecurityManager
--- snip --- WINEDEBUG=+tid,+seh,+relay,+apphelp wine 'C:\Program Files\Internet Explorer\iexplore' ... 0029:Call KERNEL32.LoadLibraryA(77fc9340 "appHelp.dll") ret=77f71734 ... 0029:Ret KERNEL32.LoadLibraryA() retval=7ddb0000 ret=77f71734 ... 0029:Call KERNEL32.GetProcAddress(7ddb0000,77fc96aa "ApphelpCheckShellObject") 0029:Ret KERNEL32.GetProcAddress() retval=7ddbb7a4 ret=77f7166a 0029:Call apphelp.ApphelpCheckShellObject(777693f0,00000001,016acc38) ret=77f69412 0029:fixme:apphelp:ApphelpCheckShellObject stub: {7b8a2d94-0ac9-11d1-896c-00c04fb6bfc4}, 1, 0x16acc38) 0029:Ret apphelp.ApphelpCheckShellObject() retval=00000000 ret=77f69412 ... <object never instanciated> --- snip ---
Example "TRUE":
--- snip --- WINEDEBUG=+tid,+seh,+relay,+apphelp wine 'C:\Program Files\Internet Explorer\iexplore' ... 0033:Call KERNEL32.LoadLibraryA(77fc9340 "appHelp.dll") ret=77f71734 ... 0033:Ret KERNEL32.LoadLibraryA() retval=7dda0000 ret=77f71734 0033:Call KERNEL32.GetProcAddress(7dda0000,77fc96aa "ApphelpCheckShellObject") ret=77f7166a 0033:Ret KERNEL32.GetProcAddress() retval=7ddb07a4 ret=77f7166a 0033:Call apphelp.ApphelpCheckShellObject(777693f0,00000001,016acc38) ret=77f69412 0033:fixme:apphelp:ApphelpCheckShellObject stub: {7b8a2d94-0ac9-11d1-896c-00c04fb6bfc4}, 1, 0x16acc38) 0033:Ret apphelp.ApphelpCheckShellObject() retval=00000001 ret=77f69412 0033:Call ole32.CoCreateInstance(777693f0,00000000,00000001,77769400,016acc74) ret=77f6942c ... 0033:Call advapi32.RegOpenKeyExW(80000000,016aca0e L"CLSID\{7B8A2D94-0AC9-11D1-896C-00C04FB6BFC4}",00000000,00020019,016aca68) ret=7e5a6eeb ... 0033:Call advapi32.RegOpenKeyExW(80000001,6141a588 L"Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\",00000000,00020019,001ede68) ret=61413393 ... 0033:Ret ole32.CoCreateInstance() retval=00000000 ret=77f6942c ... --- snip ---
Regards