|
code
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
IE menu extensionHello,
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 "Kathy" <Kathy@kathy> wrote in message news:uz4BvYflJHA.3380@TK2MSFTNGP04.phx.gbl... It can be done for all users by using> 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. > " 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
Show quote
Hide quote
"Steve Easton" <ad***@95isalive.com> skrev i meddelandet Should is not the same as *is*. On my machine it is 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 > > D:\Program\Mirosoft.......... Here in Sweden apps are installed in X:\Program\. /Henning 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 > > > 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. 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. > > > Thank you very much. Now I understand. easy to understand and Microsoft wouldn't be> Why is that so complicated? :) If it were all clear and simple then it would 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 That makes sense. Maybe it would also work in> not use any CLSID, just the menu text is the name of the key. So simple! HKLM. > Now, if I have to use use CLSID, my understanding is that it must be No, you don't have to do that. You have 3 CLSIDs:> generated on target computer. > How to do that? {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 If you also have some kind of program then it's> to uninstall my app, the uninstallation will remove that key from registry. 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. Thank you for helping me. Please see inline.
Kathy "mayayana" <mayayaX***@rcXXn.com> wrote in message No, it does not, hence my question.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. 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 > > What dll?> 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. 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 > > That makes sense. Maybe it would also work in And it also doesn't work in HKLM if you use a unique> > HKLM. > > No, it does not, hence my question...... > They do not discuss HKEY_LOCAL_MACHINE at all. > 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 > I see. Sorry, I assumed you were writing a browser> > > > 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? 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. 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. > >
optional args to a class.Init method
Anyway to move Image control at runtime Dim WithEvents * As HTMLDocument with an Iframe - access denied!? Should Reg-free COM still utilise an installation procedure? Save Picture Q Unsigned C long to signed VB5 Long query. Search a Combobox Cannot pass a control array ? Use ColumnClick and Click Event in MSHFLexGrid Remove empty elements from end of array |
|||||||||||||||||||||||