[IE7 BETA 2] IUniformResourceLocator/IShellLink & IE7: bug or breach of interface?

Discussion in 'Internet Explorer' started by Patrick Philippot, Feb 27, 2006.

  1. Hi,

    Has the implementation of IUniformResourceLocator/IShellInk changed in
    IE7?

    I have been told that my old utility (Favorg - which I wrote for PC Mag)
    no longer works with IE7. FavOrg retrieves the favicons and modifies the
    Internet Shortcut to make the favicon sticky (a problem apparently still
    not solved in IE7). In order to update the .URL file, Favorg doesn't
    modify the text file directly but uses IUniformResourceLocator and
    IShellLink::SetIconLocation to get/set the URL and the icon location.
    While other utilities directly accessing the text file continue to work,
    Favorg is no longer able to set the icon in an Internet Shortcut.

    So I suspect that the IUniformResourceLocator and / or IShellLink
    interface implementation in IE 7 has changed.

    When I wrote FavOrg, I decided to use this interface instead of directly
    modifying the text file because I'm a good boy and I said to myself,
    well, it's much more work but at least Favorg will still work with
    future versions of IE.

    Please don't tell me I should have written ill-behaved code!

    I can't debug this for the moment because I don't have any system
    available to test IE7. But this behavior seems to clearly indicate that
    something has changed (or is buggy) in the interface implementation and
    obviously, the format of the Internet Shortcut files has changed.

    Any IE7 developer hanging around?

    Thanks.
     
    Patrick Philippot, Feb 27, 2006
    #1
    1. Advertisements

  2. Yes, it obviously has.

    Since the FavIconizer utility continues to work with favicons, I have
    compared the source code of FavIconizer with my own code in FavOrg.

    In order to change the icon assigned to a given Internet Shortcut,
    FavOrg creates an object of type CLSID_InternetShortcut. Then, it
    queries that object for its IShellLink interface and uses
    IShellLink::SetIconLocation to assign a new location to the Internet
    Shortcut. This no longer works in IE 7.

    FavIconizer also creates an object of type CLSID_InternetShortcut but
    it also creates another, separate object of type CLSID_ShellLink and
    uses that object to update the Internet Shortcut's icon location. The
    creation of this additional object is normally useless since the
    Internet Shortcut object is supposed to support IShellLink. But in that
    case , this bypasses the bug in the new implementation of the
    CLSID_InternetShortcut object which obviously no longer supports the
    IShellLink interface correctly.

    This is just a conclusion drawn from the comparison of the source code
    of both programs and I can't confirm this until I decide to install IE 7
    Beta 2 and debug Favorg in that context (I can't imagine another
    explanation, though). But if beta 2 demonstrates such severe bugs, I'm
    reluctant to do this. This would generate too much trouble on my
    systems.
     
    Patrick Philippot, Feb 28, 2006
    #2
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.