Home All Groups Group Topic Archive Search About
Author
23 Feb 2009 8:34 PM
Kathy
Hello,
          Is it possible to add IE menu extension for all users, or it must
always be bind to the current user?
I have a problem distributing program installation among several
workstations:
I need to automate that process but how to do that?
From MSDN:
"
You create new items for the Tools menu by adding entries to the registry.
Each new Tools menu item is added under the registry key
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Extensions. Each menu
item is identified by a GUID.
"
Please advise,
Kathy

Author
23 Feb 2009 10:17 PM
Steve Easton
"Kathy" <Kathy@kathy> wrote in message news:uz4BvYflJHA.3380@TK2MSFTNGP04.phx.gbl...
> Hello,
>          Is it possible to add IE menu extension for all users, or it must always be bind to the current
> user?
> I have a problem distributing program installation among several workstations:
> I need to automate that process but how to do that?
> From MSDN:
> "
> You create new items for the Tools menu by adding entries to the registry. Each new Tools menu item is added
> under the registry key HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Extensions. Each menu item is
> identified by a GUID.
> "

It can be done for all users by using
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Extensions

Be aware that you must create a new unique CLSID/GUID using GUIDGEN.EXE
which should be in C:\Program Files\Microsoft Visual Studio\COMMON\Tools

--

Steve Easton
Author
24 Feb 2009 12:18 AM
Henning
Show quote Hide quote
"Steve Easton" <ad***@95isalive.com> skrev i meddelandet
news:uYHnUSglJHA.5028@TK2MSFTNGP04.phx.gbl...
> "Kathy" <Kathy@kathy> wrote in message
> news:uz4BvYflJHA.3380@TK2MSFTNGP04.phx.gbl...
>> Hello,
>>          Is it possible to add IE menu extension for all users, or it
>> must always be bind to the current user?
>> I have a problem distributing program installation among several
>> workstations:
>> I need to automate that process but how to do that?
>> From MSDN:
>> "
>> You create new items for the Tools menu by adding entries to the
>> registry. Each new Tools menu item is added under the registry key
>> HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Extensions. Each
>> menu item is identified by a GUID.
>> "
>
> It can be done for all users by using
> HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Extensions
>
> Be aware that you must create a new unique CLSID/GUID using GUIDGEN.EXE
> which should be in C:\Program Files\Microsoft Visual Studio\COMMON\Tools
>
> --
>
> Steve Easton
>
>

Should is not the same as *is*. On my machine it is
D:\Program\Mirosoft.......... Here in Sweden apps are installed in
X:\Program\.

/Henning
Author
24 Feb 2009 5:00 AM
Kathy
Are you 100% sure, Steve?
I can create the extension menu creating the registry key under
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Extensions
but when I've tried the same under
HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Extensions
no menu is created.
Kathy

Show quoteHide quote
"Steve Easton" <ad***@95isalive.com> wrote in message
news:uYHnUSglJHA.5028@TK2MSFTNGP04.phx.gbl...
> "Kathy" <Kathy@kathy> wrote in message
> news:uz4BvYflJHA.3380@TK2MSFTNGP04.phx.gbl...
>> Hello,
>>          Is it possible to add IE menu extension for all users, or it
>> must always be bind to the current user?
>> I have a problem distributing program installation among several
>> workstations:
>> I need to automate that process but how to do that?
>> From MSDN:
>> "
>> You create new items for the Tools menu by adding entries to the
>> registry. Each new Tools menu item is added under the registry key
>> HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Extensions. Each
>> menu item is identified by a GUID.
>> "
>
> It can be done for all users by using
> HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Extensions
>
> Be aware that you must create a new unique CLSID/GUID using GUIDGEN.EXE
> which should be in C:\Program Files\Microsoft Visual Studio\COMMON\Tools
>
> --
>
> Steve Easton
>
>
>
Author
24 Feb 2009 6:23 AM
mayayana
It works fine for me, but I'm only able to test it in Win98
with IE5 at the moment. There are several requirements:

* The key:

HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Extensions\xxx
where xxx is an arbitrary CLSID - NOT the CLSID for your extension.

* Values in that key:

Value:               Data:

clsid               {1FBA04EE-3024-11D2-8F1F-0000F87ABD16}  (must be that
clsid)

ClsidExtension       xxx        (xxx here must be your extension CLSID.)

MenuStatusBar      [text to show in status bar]

MenuText            [text to show on menu]

If you want to have a menu button, also add:

ButtonText      [text on button]

Icon             YourExt.dll,xx  (where xx is the icon number in the DLL0

HotIcon         YourExt.dll,xx  (where xx is the icon number for icon
                     used when     hovering.)

All of the above are string values.
Author
24 Feb 2009 6:12 PM
Kathy
Thank you very much. Now I understand.
Why is that so complicated?
In HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Extensions I do
not use any CLSID, just the menu text is the name of the key. So simple!
Now, if I have to use use CLSID, my understanding is that it must be
generated on target computer.
How to do that?
Also, I believe I need to store that value somewhere so, when user decides
to uninstall my app, the uninstallation will remove that key from registry.
Please help,
Kathy

Show quoteHide quote
"mayayana" <mayayaX***@rcXXn.com> wrote in message
news:%23pookiklJHA.4520@TK2MSFTNGP03.phx.gbl...
> It works fine for me, but I'm only able to test it in Win98
> with IE5 at the moment. There are several requirements:
>
> * The key:
>
> HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Extensions\xxx
> where xxx is an arbitrary CLSID - NOT the CLSID for your extension.
>
> * Values in that key:
>
> Value:               Data:
>
> clsid               {1FBA04EE-3024-11D2-8F1F-0000F87ABD16}  (must be that
> clsid)
>
> ClsidExtension       xxx        (xxx here must be your extension CLSID.)
>
> MenuStatusBar      [text to show in status bar]
>
> MenuText            [text to show on menu]
>
> If you want to have a menu button, also add:
>
> ButtonText      [text on button]
>
> Icon             YourExt.dll,xx  (where xx is the icon number in the DLL0
>
> HotIcon         YourExt.dll,xx  (where xx is the icon number for icon
>                     used when     hovering.)
>
> All of the above are string values.
>
>
Author
24 Feb 2009 9:31 PM
mayayana
> Thank you very much. Now I understand.
> Why is that so complicated?

:) If it were all clear and simple then it would be
easy to understand and Microsoft wouldn't be
able to sell certifications. CLSIDs, especially, are
a great way to manufacture unwieldy complexity
that intimidates people.

> In HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Extensions I do
> not use any CLSID, just the menu text is the name of the key. So simple!

  That makes sense. Maybe it would also work in
HKLM.

> Now, if I have to use use CLSID, my understanding is that it must be
> generated on target computer.
> How to do that?

  No, you don't have to do that. You have 3 CLSIDs:

{1FBA04EE-3024-11D2-8F1F-0000F87ABD16} is the
official CLSID of Extensions. It must be in the clsid
value, in you Extensions subkey.

The second CLSID is the CLSID for your Extension.
It's the same CLSID that you'll find in the key
HKCR\YourDLL.YourExt\CLSID\   after your
DLL is registered.

  The 3rd CLSID is for the name of your Extensions
subkey. That needs to be generated, in theory, but
it's random. It's just being used to create a unique
key name. Since you've found that your Extension
class.server name works then you could probably
also use that. (That was the whole point of the
class.server format in COM, after all -- to create
unique names.)

> Also, I believe I need to store that value somewhere so, when user decides
> to uninstall my app, the uninstallation will remove that key from
registry.

  If you also have some kind of program then it's
not a big job to "install" and uninstall the Extension
through that. You just need to write or remove the
Registry key and register the DLL.

  If the Extension is stand-alone then you need to
write some kind of installer. Depending on where the
Extension is being installed, a simple VBScript might
be plenty to do the job. If it's more commercial then
you probably need to write an EXE to call RegSvr32,
to write the Registry keys, to register in the Uninstall
key, and to do the uninstall. But there's no reason you
can't hard-code your CLSIDs in that installer.
Author
25 Feb 2009 1:41 AM
Kathy
Thank you for helping me. Please see inline.
Kathy
"mayayana" <mayayaX***@rcXXn.com> wrote in message
news:e3wREeslJHA.5980@TK2MSFTNGP06.phx.gbl...
> snip<
> In HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Extensions I do
>> not use any CLSID, just the menu text is the name of the key. So simple!
>
>  That makes sense. Maybe it would also work in
> HKLM.

No, it does not, hence my question.
On MSDN site there is only HKEY_CURRENT_USER mentioned.
Please see this:
http://msdn.microsoft.com/en-us/library/bb735853(VS.85).aspx
Adding to the Top-Level Menu
You create new items for the Tools menu by adding entries to the registry.
Each new Tools menu item is added under the registry key
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Extensions .........

They do not discuss HKEY_LOCAL_MACHINE  at all.

< snip >
>
> The second CLSID is the CLSID for your Extension.
> It's the same CLSID that you'll find in the key
> HKCR\YourDLL.YourExt\CLSID\   after your
> DLL is registered.

What dll?
I do not use any custom dll.
My application is just a compiled executable.
I am using inno setup as the installation package for my app.
That CLSID is confusing me. If I do not register dll, and I do not need to
generate it, where I can get it from?
Thanks,
             Kathy
Author
25 Feb 2009 2:20 AM
mayayana
> >  That makes sense. Maybe it would also work in
> > HKLM.
>
> No, it does not, hence my question......
> They do not discuss HKEY_LOCAL_MACHINE  at all.
>
   And it also doesn't work in HKLM if you use a unique
CLSID to name the subkey? You should probably try
using a new CLSID for the subkey name before giving up,
since that's the way they specify it's supposed to be
done. In case you don't have Guidgen, here's a fresh
GUID you can use:
   {C3EBAF81-02B6-11de-B5C3-0018F80E1435}

  I used to distribute a browser extension that I installed
to HKLM and it always worked fine. (Though that was for
Win9x.) It was my understanding that HKLM was originally
where it was supposed to be installed. That's how it's
presented in the book V.B. Shell Programming. And it's
mentioned by Microsoft:

http://msdn.microsoft.com/en-us/library/aa753588.aspx

   (Unfortunately, the new MSDN pages don't seem to be
as informative about date of posting and supported
systems as the old format used to be, so I don't know
if that's an outdated page.)

  If you did everything right and it never showed up on
XP (?) then it may just not work on XP. I haven't tested
that myself. It could also vary by browser rather than
OS version. Security has been gradually tightened in later
versions of IE. XP SP2 brought in a lot of IE restrictions
like Local_Machine_Lockdown, for instance. And IE 7 is even
more restricted. There's very little functionality that one
can depend on throughout the different versions of IE.

> < snip >
> >
> > The second CLSID is the CLSID for your Extension.
> > It's the same CLSID that you'll find in the key
> > HKCR\YourDLL.YourExt\CLSID\   after your
> > DLL is registered.
>
> What dll?
> I do not use any custom dll.
> My application is just a compiled executable.
> I am using inno setup as the installation package for my app.
> That CLSID is confusing me. If I do not register dll, and I do not need to
> generate it, where I can get it from?

   I see. Sorry, I assumed you were writing a browser
extension. So you're just going to create a menu that runs
your EXE? According to the page you linked it looks like you'll
need to add the Exec Registry value, but won't need a
ClsidExtension value. So you don't need that GUID. But
you still need a new GUID for the key name. Use the one
above for that. I just made it with Guidgen. (Guidgen is
a tool for doing just that. If you have VS6 it's in
Microsoft Visual Studio\Common\Tools.  I don't know if
it ships with VB6. It may be on the CD.)

   I've never used Inno. If it can run an EXE during setup
you could just make a little program to write the Registry
entry. Personally I think it'd be better to write that into
your program, giving people the option to add or remove
the menu item at any time. It's not good manners to just
alter other software without permission. That's the kind of
sleazy thing that's usually only done by adware, by Microsoft,
or by ISPs who customize IE during their setup.
Author
1 Mar 2009 9:50 PM
Kathy
Thank you very much.
I appreciate your help,
Kathy

Show quoteHide quote
"mayayana" <mayayaX***@rcXXn.com> wrote in message
news:ul0JT$ulJHA.6060@TK2MSFTNGP05.phx.gbl...
>
>> >  That makes sense. Maybe it would also work in
>> > HKLM.
>>
>> No, it does not, hence my question......
>> They do not discuss HKEY_LOCAL_MACHINE  at all.
>>
>   And it also doesn't work in HKLM if you use a unique
> CLSID to name the subkey? You should probably try
> using a new CLSID for the subkey name before giving up,
> since that's the way they specify it's supposed to be
> done. In case you don't have Guidgen, here's a fresh
> GUID you can use:
>   {C3EBAF81-02B6-11de-B5C3-0018F80E1435}
>
>  I used to distribute a browser extension that I installed
> to HKLM and it always worked fine. (Though that was for
> Win9x.) It was my understanding that HKLM was originally
> where it was supposed to be installed. That's how it's
> presented in the book V.B. Shell Programming. And it's
> mentioned by Microsoft:
>
> http://msdn.microsoft.com/en-us/library/aa753588.aspx
>
>   (Unfortunately, the new MSDN pages don't seem to be
> as informative about date of posting and supported
> systems as the old format used to be, so I don't know
> if that's an outdated page.)
>
>  If you did everything right and it never showed up on
> XP (?) then it may just not work on XP. I haven't tested
> that myself. It could also vary by browser rather than
> OS version. Security has been gradually tightened in later
> versions of IE. XP SP2 brought in a lot of IE restrictions
> like Local_Machine_Lockdown, for instance. And IE 7 is even
> more restricted. There's very little functionality that one
> can depend on throughout the different versions of IE.
>
>> < snip >
>> >
>> > The second CLSID is the CLSID for your Extension.
>> > It's the same CLSID that you'll find in the key
>> > HKCR\YourDLL.YourExt\CLSID\   after your
>> > DLL is registered.
>>
>> What dll?
>> I do not use any custom dll.
>> My application is just a compiled executable.
>> I am using inno setup as the installation package for my app.
>> That CLSID is confusing me. If I do not register dll, and I do not need
>> to
>> generate it, where I can get it from?
>
>   I see. Sorry, I assumed you were writing a browser
> extension. So you're just going to create a menu that runs
> your EXE? According to the page you linked it looks like you'll
> need to add the Exec Registry value, but won't need a
> ClsidExtension value. So you don't need that GUID. But
> you still need a new GUID for the key name. Use the one
> above for that. I just made it with Guidgen. (Guidgen is
> a tool for doing just that. If you have VS6 it's in
> Microsoft Visual Studio\Common\Tools.  I don't know if
> it ships with VB6. It may be on the CD.)
>
>   I've never used Inno. If it can run an EXE during setup
> you could just make a little program to write the Registry
> entry. Personally I think it'd be better to write that into
> your program, giving people the option to add or remove
> the menu item at any time. It's not good manners to just
> alter other software without permission. That's the kind of
> sleazy thing that's usually only done by adware, by Microsoft,
> or by ISPs who customize IE during their setup.
>
>