[Bug 28663] Adobe Reader X online help fails to load due to IQueryAssociations::GetString not properly handling URL protocols

wine-bugs at winehq.org wine-bugs at winehq.org
Mon Jan 9 16:35:14 CST 2012


http://bugs.winehq.org/show_bug.cgi?id=28663

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
          Component|-unknown                    |shell32
            Summary|Adobe Reader X help fails   |Adobe Reader X online help
                   |to load                     |fails to load due to
                   |                            |IQueryAssociations::GetStri
                   |                            |ng not properly handling
                   |                            |URL protocols

--- Comment #3 from Anastasius Focht <focht at gmx.net> 2012-01-09 16:35:14 CST ---
Hello,

confirming, still present.

The problem seems related how protocol associations are currently handled using
IQueryAssociations (Wine registry).

--- snip ---
...
0024:CALL
ahclient.InitializeAdobeHelpClient(0032f718,0032f6f6,00000002,00000002,0032f718,00000100)
ret=00b95261
0024:RET  ahclient.InitializeAdobeHelpClient() retval=00000000 ret=00b95261
0024:CALL ahclient.DisplayAdobeHelpClientPage(<unknown, check return>)
ret=00b9528e
0024:trace:wininet:InternetOpenA ("HIL", 0x00000001, (null), (null),
0x00000000)
0024:trace:wininet:InternetOpenW (L"HIL", 1, (null), (null), 0)
0024:trace:wininet:InternetOpenW   access type : INTERNET_OPEN_TYPE_DIRECT
0024:trace:wininet:InternetOpenW   flags       :
0024:trace:wininet:InternetOpenW returning 0x162118
0024:trace:wininet:InternetOpenUrlA 
0024:trace:wininet:InternetOpenUrlW (0x1,
L"http://help.adobe.com/en_US/reader/X/using/AH_HOME.html", (null), 00000000,
80000000, 00000000)
0024:trace:wininet:InternetOpenUrlW   flags : INTERNET_FLAG_RELOAD
0024:trace:wininet:WININET_AddRef 0x162118 -> refcount = 2
0024:trace:wininet:get_handle_object handle 1 -> 0x162118
0024:trace:wininet:INTERNET_InternetOpenUrlW (0x162118,
L"http://help.adobe.com/en_US/reader/X/using/AH_HOME.html", (null), 00000000,
80000000, 00000000)
0024:trace:wininet:InternetCrackUrlW
(L"http://help.adobe.com/en_US/reader/X/using/AH_HOME.html" 55 0 0x32e950) 
...
0024:trace:wininet:CommitUrlCacheEntryW
(L"http://help.adobe.com/en_US/reader/using/AH_HOME.html",
L"C:\\users\\focht\\Local Settings\\Temporary Internet
Files\\Content.IE5\\SSCR6K86\\AH_HOME[4]", ..., ..., 1, 0x165bb0, 225, (null),
(null))
0024:trace:wininet:CommitUrlCacheEntryInternal
(L"http://help.adobe.com/en_US/reader/using/AH_HOME.html",
L"C:\\users\\focht\\Local Settings\\Temporary Internet
Files\\Content.IE5\\SSCR6K86\\AH_HOME[4]", ..., ..., 1, 0x164d00, 0, (null),
(null)) 
...
0024:trace:shell:AssocQueryStringW (0x0,2,L"http",L"open",0x32f09c,0x32f094)
0024:trace:shell:AssocCreate
({a07034fd-6caa-4954-ac3f-97a27216f98a},{c46ca590-3c3f-11d2-bee6-0000f805ca57},0x32edc4)
0024:trace:shell:HCR_RegOpenClassIDKey
CLSID\{c46ca590-3c3f-11d2-bee6-0000f805ca57}
0024:trace:shell:HCR_GetClassNameA -- ()
0024:trace:shell:HCR_RegOpenClassIDKey
CLSID\{a07034fd-6caa-4954-ac3f-97a27216f98a}
0024:trace:shell:HCR_GetClassNameA -- (Query file associations)
0024:trace:shell:SHCoCreateInstance
((nil),{a07034fd-6caa-4954-ac3f-97a27216f98a} (Query file
associations),unk:(nil),{c46ca590-3c3f-11d2-bee6-0000f805ca57}
(unknown),0x32edc4)
0024:trace:shell:HCR_RegOpenClassIDKey
CLSID\{a07034fd-6caa-4954-ac3f-97a27216f98a}
0024:trace:shell:HCR_GetClassNameA -- (Query file associations)
0024:trace:shell:DllGetClassObject CLSID:{a07034fd-6caa-4954-ac3f-97a27216f98a}
(Query file associations),IID:{00000001-0000-0000-c000-000000000046}
(IID_IClassFactory)
0024:trace:shell:DllGetClassObject index[8]
0024:trace:shell:IDefClF_fnConstructor (0x160b48)(null)
0024:trace:shell:IDefClF_fnQueryInterface
(0x160b48)->({00000001-0000-0000-c000-000000000046} (IID_IClassFactory))
0024:trace:shell:IDefClF_fnRelease (0x160b48)->(count=2)
0024:trace:shell:DllGetClassObject -- pointer to class factory: 0x160b48
0024:trace:shell:HCR_RegOpenClassIDKey
CLSID\{c46ca590-3c3f-11d2-bee6-0000f805ca57}
0024:trace:shell:HCR_GetClassNameA -- ()
0024:trace:shell:IDefClF_fnCreateInstance
0x160b48->((nil),{c46ca590-3c3f-11d2-bee6-0000f805ca57} (unknown),0x32edc4)
0024:trace:shell:SHAlloc 16 bytes at 0x160b68
0024:trace:shell:IQueryAssociations_fnQueryInterface
(0x160b68,{c46ca590-3c3f-11d2-bee6-0000f805ca57},0x32edc4)
0024:trace:shell:IQueryAssociations_fnAddRef (0x160b68)->(ref before=0)
0024:trace:shell:IQueryAssociations_fnQueryInterface Returning
IQueryAssociations (0x160b68)
0024:trace:shell:QueryAssociations_Constructor returning 0x160b68
0024:trace:shell:IDefClF_fnRelease (0x160b48)->(count=1)
0024:trace:shell:IDefClF_fnRelease -- destroying IClassFactory(0x160b48)
0024:trace:shell:SHCoCreateInstance -- instance: 0x160b68
0024:trace:shell:IQueryAssociations_fnInit (0x160b68)->(0,L"http",(nil),(nil))
0024:trace:shell:IQueryAssociations_fnGetString (0x160b68,0x       0,0x      
2,L"open",0x32f09c,0x32f094)
0024:trace:shell:IQueryAssociations_fnRelease (0x160b68)->(ref before=1)
0024:trace:shell:IQueryAssociations_fnRelease Destroying IQueryAssociations
(0x160b68)
...
0024:RET  ahclient.DisplayAdobeHelpClientPage() retval=00000002 ret=00b9528e
--- snip ---

Debugging session:

--- snip ---
Wine-dbg>bt
Backtrace:
=>0 0x6c81e365 ASSOC_GetValue+0x81(hkey=0x134, pszText=0x33e96c)
[/home/focht/projects/wine/wine-git/dlls/shell32/assoc.c:215] in shell32
(0x0033e930)
  1 0x6c81e478 ASSOC_GetCommand+0x2e(This=0x15c2c0, pszExtra="open",
ppszCommand=0x33e9d0)
[/home/focht/projects/wine/wine-git/dlls/shell32/assoc.c:245] in shell32
(0x0033e9a0)
  2 0x6c81e859 ASSOC_GetExecutable+0x5b(This=0x15c2c0, pszExtra="open",
path="k", pathlen=0x104, len=0x33ecb8)
[/home/focht/projects/wine/wine-git/dlls/shell32/assoc.c:319] in shell32
(0x0033e9f0)
  3 0x6c81ecd8 IQueryAssociations_fnGetString+0x23d(iface=0x15c2c0, cfFlags=0,
str=ASSOCSTR_EXECUTABLE, pszExtra="open", pszOut="????t", pcchOut=0x33f054)
[/home/focht/projects/wine/wine-git/dlls/shell32/assoc.c:432] in shell32
(0x0033ed50)
  4 0x685c20a7 AssocQueryStringW+0x16a(cfFlags=0, str=ASSOCSTR_EXECUTABLE,
pszAssoc="http", pszExtra="open", pszOut="????t", pcchOut=0x33f054)
[/home/focht/projects/wine/wine-git/dlls/shlwapi/assoc.c:197] in shlwapi
(0x0033eda0)
  5 0x02f635b0 in ahclient (+0x135af) (0x0033f26c)
  6 0x02f55a15 in ahclient (+0x5a14) (0x0033f678)
  7 0x00b9528e in acrord32 (+0x42528d) (0x0033f6b0)
--- snip ---

http://source.winehq.org/git/wine.git/blob/f948478f28b8a7c6beb364745b143361cef4edc1:/dlls/shell32/assoc.c#l231

IQueryAssociations_fnInit() opens "http" under HKEY_CLASSES_ROOT.
ASSOC_GetCommand() -> ASSOC_GetValue() tries to read the "file type" value for
"http" from default key.
This obviously fails because the default value is empty (also for other
protocols).
Not sure what data is supposed to be here.

The current ASSOC_GetCommand() registry handling looks strange as if not really
suitable/prepared to handle protocol style associations.

With that code the only way to get the correct shell command is setting default
key to "http" but this looks wrong.

Registry export for "http":

--- snip ---
[HKEY_CLASSES_ROOT\http]
"URL Protocol"=""

[HKEY_CLASSES_ROOT\http\shell]

[HKEY_CLASSES_ROOT\http\shell\open]

[HKEY_CLASSES_ROOT\http\shell\open\command]
@="\"C:\\windows\\system32\\winebrowser.exe\" -nohome"

[HKEY_CLASSES_ROOT\http\shell\open\ddeexec]
@="\"%1\",,-1,0,,,,"
"NoActivateHandler"=""

[HKEY_CLASSES_ROOT\http\shell\open\ddeexec\Application]
@="IExplore"

[HKEY_CLASSES_ROOT\http\shell\open\ddeexec\Topic]
@="WWW_OpenURL" 
--- snip ---

$ sha1sum AdbeRdr1001_en_US.exe 
e71d9871ea3e6168570e0677a50495c40f9213b2  AdbeRdr1001_en_US.exe

$ wine --version
wine-1.3.36-223-gc7cc9a1

Regards

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list