Ureader.com  
Microsoft software help and Community
   home   |   control panel login   |   archive   |  
 
platform
active.directory
adsi
adsi.iis-admin
base
com_ole
complus_mts
component_svcs
database
directx
gdi
graphics_mm
internet.client
internet.server
internet.server.isapi-dev
localization
mapi
messaging
msi
mslayerforunicode
multimedia
networking
networking.ipv6
sdk_install
security
shell
telephony.tapi_2
telephony.tapi_3
telephony.tsp
telephony.wte
tools
ui
ui_shell
win_base_svcs
win16
  
 
date: Wed, 05 Sep 2007 00:14:19 -0700,    group: microsoft.public.platformsdk.ui_shell        back       


Windows Explorer context menu problem   
Hi,

I have an interesting problem about adding menu items to Windows
Explorer context menu. Details below:

I have used a sample (ShellExt) from Microsoft Platform SDK for
Windows Server 2003 R2. After some changes, I have built the sample
and got ShellExt.dll file. Then, I have registered the extension
(using ShellExt.reg).

Till now, everthing goes well. But the interesting thing is:

I have two computers which have the same operating system (Windows XP
SP2).

The .dll file runs perfectly at first computer and adds menu items to
Windows Explorer context menu, but it does not do the same task at
second computer.

At first step, I have examined and compared all related registry
entries of two computers. They are same.

Secondly, using a program which is called "ShellExView", I have tried
every non-Microsoft products extensions one by one (disabling and
enabling them) to clarify whether the failure stems from them or not.
Additionally, "ShellExView" shows that the extension ShellExt.dll runs
perfectly at the second computer.

DebugView shows all messages at first computer but nothing at the
second.

After a long research on internet, I have failed to find any clue
about this kind of problem.

May be it seems very strange but the only difference between two
computers is:

The background color of context menu is gray at first computer, and
white at the second.

Thanks in advance!
date: Wed, 05 Sep 2007 00:14:19 -0700   author:   unknown

Re: Windows Explorer context menu problem   
Can you share the contents of your registration and the location of the 
binaries on the two machines?

I imagine you have additional registration that you've done on the first 
computer or a hard-coded path that only applies to the first machine.

HTH,
-- 
James Finnigan [MSFT] ( http://blogs.msdn.com/jamesfi )
This posting is provided "AS IS" with no warranties, and confers no rights. 
Use of included script samples are subject to the terms specified at 
http://www.microsoft.com/info/cpyright.htm.

 wrote in message 
news:1188976459.843309.31410@r29g2000hsg.googlegroups.com...
> Hi,
>
> I have an interesting problem about adding menu items to Windows
> Explorer context menu. Details below:
>
> I have used a sample (ShellExt) from Microsoft Platform SDK for
> Windows Server 2003 R2. After some changes, I have built the sample
> and got ShellExt.dll file. Then, I have registered the extension
> (using ShellExt.reg).
>
> Till now, everthing goes well. But the interesting thing is:
>
> I have two computers which have the same operating system (Windows XP
> SP2).
>
> The .dll file runs perfectly at first computer and adds menu items to
> Windows Explorer context menu, but it does not do the same task at
> second computer.
>
> At first step, I have examined and compared all related registry
> entries of two computers. They are same.
>
> Secondly, using a program which is called "ShellExView", I have tried
> every non-Microsoft products extensions one by one (disabling and
> enabling them) to clarify whether the failure stems from them or not.
> Additionally, "ShellExView" shows that the extension ShellExt.dll runs
> perfectly at the second computer.
>
> DebugView shows all messages at first computer but nothing at the
> second.
>
> After a long research on internet, I have failed to find any clue
> about this kind of problem.
>
> May be it seems very strange but the only difference between two
> computers is:
>
> The background color of context menu is gray at first computer, and
> white at the second.
>
> Thanks in advance!
>
date: Wed, 5 Sep 2007 23:51:52 -0700   author:   James Finnigan [MSFT]

Re: Windows Explorer context menu problem   
> Can you share the contents of your registration and the location of the
> binaries on the two machines?
>
> I imagine you have additional registration that you've done on the first
> computer or a hard-coded path that only applies to the first machine.
>
> HTH,
> --
> James Finnigan [MSFT] (http://blogs.msdn.com/jamesfi)
> This posting is provided "AS IS" with no warranties, and confers no rights.
> Use of included script samples are subject to the terms specified athttp://www.microsoft.com/info/cpyright.htm.
>

First of all, thank you very much for your kind answer.

After your message, I have changed

HKEY_CLASSES_ROOT\CLSID\{2C4BBD71-
F932-410A-8603-415085CE28D9}\InProcServer32

         Default = "shellext.dll" path idenfication to

         "D:\WINDOWS\system32\ShellExt.dll"

but nothing have changed at second computer.


ShellExt.Reg (I have used the same file on both computers)
----------------------------------------------------------------------------

REGEDIT4

[HKEY_CLASSES_ROOT\CLSID\{2C4BBD71-F932-410A-8603-415085CE28D9}]
   @="Shell Extension Sample"
[HKEY_CLASSES_ROOT\CLSID\{2C4BBD71-
F932-410A-8603-415085CE28D9}\InProcServer32]
   @="shellext.dll"
     "ThreadingModel"="Apartment"

[HKEY_CLASSES_ROOT\.gak]
   @="GAKFile"
[HKEY_CLASSES_ROOT\GAKFile]
   @="Shell Extension file"
[HKEY_CLASSES_ROOT\GAKFile\shellex\ContextMenuHandlers]
   @="GAKMenu"
[HKEY_CLASSES_ROOT\GAKFile\shellex\ContextMenuHandlers\GAKMenu]
   @="{2C4BBD71-F932-410A-8603-415085CE28D9}"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell
Extensions\Approved]
   "{2C4BBD71-F932-410A-8603-415085CE28D9}"="Shell Extension Sample"


First Computer (shellext works prefectly on this computer):
------------------------------------------------------------------------------------

File path :           C:\WINDOWS\system32\ShellExt.dll


Registry entries:


1. HKEY_CLASSES_ROOT\CLSID\{2C4BBD71-
F932-410A-8603-415085CE28D9}

         Default = "Shell Extension Sample"

2. HKEY_CLASSES_ROOT\CLSID\{2C4BBD71-
F932-410A-8603-415085CE28D9}\InProcServer32

         Default = "shellext.dll"
         ThreadingModel = "Apartment"

3. HKEY_CLASSES_ROOT\.gak

         Default = "GAKFile"

4. HKEY_CLASSES_ROOT\GAKFile

         Default = "Shell Extension file"

5. HKEY_CLASSES_ROOT\GAKFile\shellex\ContextMenuHandlers

         Default = "GAKMenu"

6. HKEY_CLASSES_ROOT\GAKFile\shellex\ContextMenuHandlers\GAKMenu

         Default = "{2C4BBD71-F932-410A-8603-415085CE28D9}"

7. HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{2C4BBD71-
F932-410A-8603-415085CE28D9}

         Default = "Shell Extension Sample"

8. HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{2C4BBD71-
F932-410A-8603-415085CE28D9}\InProcServer32

         Default = "shellext.dll"
         ThreadingModel = "Apartment"

9. HKEY_LOCAL_MACHINE\SOFTWARE\Classes\GAKFile

         Default = "Shell Extension file"

10. HKEY_LOCAL_MACHINE\SOFTWARE\Classes\GAKFile\shellex
\ContextMenuHandlers

         Default = "GAKMenu"

11. HKEY_LOCAL_MACHINE\SOFTWARE\Classes\GAKFile\shellex
\ContextMenuHandlers\GAKMenu

         Default = "{2C4BBD71-F932-410A-8603-415085CE28D9}"

12. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell
Extensions\Approved

         {2C4BBD71-F932-410A-8603-415085CE28D9} = "Shell Extension
Sample"



Second Computer
--------------------------------------------------------------------------------

File path :           D:\WINDOWS\system32\ShellExt.dll


Registry entries:


1. HKEY_CLASSES_ROOT\CLSID\{2C4BBD71-
F932-410A-8603-415085CE28D9}

         Default = "Shell Extension Sample"

2. HKEY_CLASSES_ROOT\CLSID\{2C4BBD71-
F932-410A-8603-415085CE28D9}\InProcServer32

         Default = "shellext.dll"
         ThreadingModel = "Apartment"

3. HKEY_CLASSES_ROOT\.gak

         Default = "GAKFile"

4. HKEY_CLASSES_ROOT\GAKFile

         Default = "Shell Extension file"

5. HKEY_CLASSES_ROOT\GAKFile\shellex\ContextMenuHandlers

         Default = "GAKMenu"

6. HKEY_CLASSES_ROOT\GAKFile\shellex\ContextMenuHandlers\GAKMenu

         Default = "{2C4BBD71-F932-410A-8603-415085CE28D9}"

7. HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Shell
Extensions\Cached

   {2C4BBD71-F932-410A-8603-415085CE28D9} {000214E8-0000-0000-
C000-000000000046} 0x401 (REG_BINARY) = "01 00 00 00 31 00 39 00 76 ca
da 59 df eb c7 01"

8. HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{2C4BBD71-
F932-410A-8603-415085CE28D9}

         Default = "Shell Extension Sample"

9. HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{2C4BBD71-
F932-410A-8603-415085CE28D9}\InProcServer32

         Default = "shellext.dll"
         ThreadingModel = "Apartment"

10. HKEY_LOCAL_MACHINE\SOFTWARE\Classes\GAKFile

         Default = "Shell Extension file"

11. HKEY_LOCAL_MACHINE\SOFTWARE\Classes\GAKFile\shellex
\ContextMenuHandlers

         Default = "GAKMenu"

12. HKEY_LOCAL_MACHINE\SOFTWARE\Classes\GAKFile\shellex
\ContextMenuHandlers\GAKMenu

         Default = "{2C4BBD71-F932-410A-8603-415085CE28D9}"

13. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell
Extensions\Approved

         {2C4BBD71-F932-410A-8603-415085CE28D9} = "Shell Extension
Sample"

14. HKEY_USERS\S-1-5-21-1935655697-2111687655-839522115-500\Software
\Microsoft\Windows\CurrentVersion\Shell Extensions\Cached

         {2C4BBD71-F932-410A-8603-415085CE28D9} {000214E8-0000-0000-
C000-000000000046} 0x401 (REG_BINARY) = "01 00 00 00 31 00 39 00 76 ca
da 59 df eb c7 01"
date: Thu, 06 Sep 2007 05:37:09 -0700   author:   unknown

Re: Windows Explorer context menu problem   
You might be running afoul of verclsid (introduced in this update 
http://www.microsoft.com/technet/security/Bulletin/MS06-015.mspx).  Perhaps 
you don't have all the dependencies you need on the second machine (for 
instance, a particular version of the c-runtime).  Anyway, verclsid verifies 
that a COM object is going to do a few basic things without crashing.

I would check this by using depends.exe from the second machine and making 
sure that you've got all your dependencies.  If that works, try debugging 
verclsid as it checks out your extension.  I don't remember the syntax, but 
you can just debug verclsid whenever it it run a couple times to get an idea 
for how to invoke it.  Image File Execution Options is a reasonable way of 
doing that (http://msdn2.microsoft.com/en-us/library/a329t4ed.aspx).

I don't see anything really wrong with the registration and the fact that 
verclsid seems to be invoking your stuff is also evidence that it's hooked 
up right and that there is something wrong with loading your dll.

HTH,
-- 
James Finnigan [MSFT] ( http://blogs.msdn.com/jamesfi )
This posting is provided "AS IS" with no warranties, and confers no rights. 
Use of included script samples are subject to the terms specified at 
http://www.microsoft.com/info/cpyright.htm.

 wrote in message 
news:1189082229.399975.163940@50g2000hsm.googlegroups.com...
>> Can you share the contents of your registration and the location of the
>> binaries on the two machines?
>>
>> I imagine you have additional registration that you've done on the first
>> computer or a hard-coded path that only applies to the first machine.
>>
>> HTH,
>> --
>> James Finnigan [MSFT] (http://blogs.msdn.com/jamesfi)
>> This posting is provided "AS IS" with no warranties, and confers no 
>> rights.
>> Use of included script samples are subject to the terms specified 
>> athttp://www.microsoft.com/info/cpyright.htm.
>>
>
> First of all, thank you very much for your kind answer.
>
> After your message, I have changed
>
> HKEY_CLASSES_ROOT\CLSID\{2C4BBD71-
> F932-410A-8603-415085CE28D9}\InProcServer32
>
>         Default = "shellext.dll" path idenfication to
>
>         "D:\WINDOWS\system32\ShellExt.dll"
>
> but nothing have changed at second computer.
>
>
> ShellExt.Reg (I have used the same file on both computers)
> ----------------------------------------------------------------------------
>
> REGEDIT4
>
> [HKEY_CLASSES_ROOT\CLSID\{2C4BBD71-F932-410A-8603-415085CE28D9}]
>   @="Shell Extension Sample"
> [HKEY_CLASSES_ROOT\CLSID\{2C4BBD71-
> F932-410A-8603-415085CE28D9}\InProcServer32]
>   @="shellext.dll"
>     "ThreadingModel"="Apartment"
>
> [HKEY_CLASSES_ROOT\.gak]
>   @="GAKFile"
> [HKEY_CLASSES_ROOT\GAKFile]
>   @="Shell Extension file"
> [HKEY_CLASSES_ROOT\GAKFile\shellex\ContextMenuHandlers]
>   @="GAKMenu"
> [HKEY_CLASSES_ROOT\GAKFile\shellex\ContextMenuHandlers\GAKMenu]
>   @="{2C4BBD71-F932-410A-8603-415085CE28D9}"
>
> [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell
> Extensions\Approved]
>   "{2C4BBD71-F932-410A-8603-415085CE28D9}"="Shell Extension Sample"
>
>
> First Computer (shellext works prefectly on this computer):
> ------------------------------------------------------------------------------------
>
> File path :           C:\WINDOWS\system32\ShellExt.dll
>
>
> Registry entries:
>
>
> 1. HKEY_CLASSES_ROOT\CLSID\{2C4BBD71-
> F932-410A-8603-415085CE28D9}
>
>         Default = "Shell Extension Sample"
>
> 2. HKEY_CLASSES_ROOT\CLSID\{2C4BBD71-
> F932-410A-8603-415085CE28D9}\InProcServer32
>
>         Default = "shellext.dll"
>         ThreadingModel = "Apartment"
>
> 3. HKEY_CLASSES_ROOT\.gak
>
>         Default = "GAKFile"
>
> 4. HKEY_CLASSES_ROOT\GAKFile
>
>         Default = "Shell Extension file"
>
> 5. HKEY_CLASSES_ROOT\GAKFile\shellex\ContextMenuHandlers
>
>         Default = "GAKMenu"
>
> 6. HKEY_CLASSES_ROOT\GAKFile\shellex\ContextMenuHandlers\GAKMenu
>
>         Default = "{2C4BBD71-F932-410A-8603-415085CE28D9}"
>
> 7. HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{2C4BBD71-
> F932-410A-8603-415085CE28D9}
>
>         Default = "Shell Extension Sample"
>
> 8. HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{2C4BBD71-
> F932-410A-8603-415085CE28D9}\InProcServer32
>
>         Default = "shellext.dll"
>         ThreadingModel = "Apartment"
>
> 9. HKEY_LOCAL_MACHINE\SOFTWARE\Classes\GAKFile
>
>         Default = "Shell Extension file"
>
> 10. HKEY_LOCAL_MACHINE\SOFTWARE\Classes\GAKFile\shellex
> \ContextMenuHandlers
>
>         Default = "GAKMenu"
>
> 11. HKEY_LOCAL_MACHINE\SOFTWARE\Classes\GAKFile\shellex
> \ContextMenuHandlers\GAKMenu
>
>         Default = "{2C4BBD71-F932-410A-8603-415085CE28D9}"
>
> 12. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell
> Extensions\Approved
>
>         {2C4BBD71-F932-410A-8603-415085CE28D9} = "Shell Extension
> Sample"
>
>
>
> Second Computer
> --------------------------------------------------------------------------------
>
> File path :           D:\WINDOWS\system32\ShellExt.dll
>
>
> Registry entries:
>
>
> 1. HKEY_CLASSES_ROOT\CLSID\{2C4BBD71-
> F932-410A-8603-415085CE28D9}
>
>         Default = "Shell Extension Sample"
>
> 2. HKEY_CLASSES_ROOT\CLSID\{2C4BBD71-
> F932-410A-8603-415085CE28D9}\InProcServer32
>
>         Default = "shellext.dll"
>         ThreadingModel = "Apartment"
>
> 3. HKEY_CLASSES_ROOT\.gak
>
>         Default = "GAKFile"
>
> 4. HKEY_CLASSES_ROOT\GAKFile
>
>         Default = "Shell Extension file"
>
> 5. HKEY_CLASSES_ROOT\GAKFile\shellex\ContextMenuHandlers
>
>         Default = "GAKMenu"
>
> 6. HKEY_CLASSES_ROOT\GAKFile\shellex\ContextMenuHandlers\GAKMenu
>
>         Default = "{2C4BBD71-F932-410A-8603-415085CE28D9}"
>
> 7. HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Shell
> Extensions\Cached
>
>   {2C4BBD71-F932-410A-8603-415085CE28D9} {000214E8-0000-0000-
> C000-000000000046} 0x401 (REG_BINARY) = "01 00 00 00 31 00 39 00 76 ca
> da 59 df eb c7 01"
>
> 8. HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{2C4BBD71-
> F932-410A-8603-415085CE28D9}
>
>         Default = "Shell Extension Sample"
>
> 9. HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{2C4BBD71-
> F932-410A-8603-415085CE28D9}\InProcServer32
>
>         Default = "shellext.dll"
>         ThreadingModel = "Apartment"
>
> 10. HKEY_LOCAL_MACHINE\SOFTWARE\Classes\GAKFile
>
>         Default = "Shell Extension file"
>
> 11. HKEY_LOCAL_MACHINE\SOFTWARE\Classes\GAKFile\shellex
> \ContextMenuHandlers
>
>         Default = "GAKMenu"
>
> 12. HKEY_LOCAL_MACHINE\SOFTWARE\Classes\GAKFile\shellex
> \ContextMenuHandlers\GAKMenu
>
>         Default = "{2C4BBD71-F932-410A-8603-415085CE28D9}"
>
> 13. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell
> Extensions\Approved
>
>         {2C4BBD71-F932-410A-8603-415085CE28D9} = "Shell Extension
> Sample"
>
> 14. HKEY_USERS\S-1-5-21-1935655697-2111687655-839522115-500\Software
> \Microsoft\Windows\CurrentVersion\Shell Extensions\Cached
>
>         {2C4BBD71-F932-410A-8603-415085CE28D9} {000214E8-0000-0000-
> C000-000000000046} 0x401 (REG_BINARY) = "01 00 00 00 31 00 39 00 76 ca
> da 59 df eb c7 01"
>
date: Thu, 6 Sep 2007 17:21:49 -0700   author:   James Finnigan [MSFT]

Re: Windows Explorer context menu problem   
> You might be running afoul of verclsid (introduced in this updatehttp://www.microsoft.com/technet/security/Bulletin/MS06-015.mspx).  Perhaps
> you don't have all the dependencies you need on the second machine (for
> instance, a particular version of the c-runtime).  Anyway, verclsid verifies
> that a COM object is going to do a few basic things without crashing.
>
> I would check this by using depends.exe from the second machine and making
> sure that you've got all your dependencies.  If that works, try debugging
> verclsid as it checks out your extension.  I don't remember the syntax, but
> you can just debug verclsid whenever it it run a couple times to get an idea
> for how to invoke it.  Image File Execution Options is a reasonable way of
> doing that (http://msdn2.microsoft.com/en-us/library/a329t4ed.aspx).
>
> I don't see anything really wrong with the registration and the fact that
> verclsid seems to be invoking your stuff is also evidence that it's hooked
> up right and that there is something wrong with loading your dll.
>
> HTH,
> --
> James Finnigan [MSFT] (http://blogs.msdn.com/jamesfi)
> This posting is provided "AS IS" with no warranties, and confers no rights.
> Use of included script samples are subject to the terms specified athttp://www.microsoft.com/info/cpyright.htm.

I have checked all dependencies. The result is same for both machines
and no problem about dependencies.

Then, from the  verclsid update link (updatehttp://www.microsoft.com/
technet/security/Bulletin/MS06-015.mspx), I have reached the following
link:

http://support.microsoft.com/kb/918165

Here, the article tells about manual steps to add shell extensions to
the "allow list". I have added the following value to the registry for
the extension:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell
Extensions\Cached
     {2C4BBD71-F932-410A-8603-415085CE28D9} {000214E8-0000-0000-
C000-000000000046} 0x401 (REG_DWORD) = 1

But, it did not changed the result.

To try another shell extension (newcntx.dll), which gives the same
results with ShellExt on both computers, I have used the same method
and I have added the following value:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell
Extensions\Cached
        {E0147448-0B85-4C6A-A70D-6F54422210F6} {000214E8-0000-0000-
C000-000000000046} 0x401 = 1

The result was positive at the second computer. newcntx.dll menu items
are added to the windows explorer context menu.

All the registry entries for newcntx.dll:

1. HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\MyNewCntx
         Default = "{E0147448-0B85-4C6A-A70D-6F54422210F6}"

2. HKEY_CLASSES_ROOT\CLSID\{E0147448-0B85-4C6A-A70D-6F54422210F6}
         Default = "MyNewCntx"

3. HKEY_CLASSES_ROOT\CLSID\{E0147448-0B85-4C6A-
A70D-6F54422210F6}\InProcServer32
         Default = "D:\Program Files\My New Context\newcntx.dll"
         ThreadingModel = "Apartment"

4. HKEY_CLASSES_ROOT\Directory\shellex\ContextMenuHandlers\MyNewCntx
         Default = "{E0147448-0B85-4C6A-A70D-6F54422210F6}"

5. HKEY_CLASSES_ROOT\Folder\shellex\ContextMenuHandlers\MyNewCntx
         Default = "{E0147448-0B85-4C6A-A70D-6F54422210F6}"

6. HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Shell
Extensions\Cached
        {E0147448-0B85-4C6A-A70D-6F54422210F6} {000214E8-0000-0000-
C000-000000000046} 0x401 = "01 00 00 00 31 00 39 00 b4 79 16 41 47 f1
c7 01"

7. HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shellex\ContextMenuHandlers
\MyNewCntx
        Default = "{E0147448-0B85-4C6A-A70D-6F54422210F6}"

8. HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{E0147448-0B85-4C6A-
A70D-6F54422210F6}
        Default = "MyNewCntx"

9. HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{E0147448-0B85-4C6A-
A70D-6F54422210F6}\InProcServer32
        Default = "D:\Program Files\My New Context\newcntx.dll"
        ThreadingModel = "Apartment"

10. HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shellex
\ContextMenuHandlers\MyNewCntx
        Default = "{E0147448-0B85-4C6A-A70D-6F54422210F6}"

11. HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shellex
\ContextMenuHandlers\MyNewCntx
        Default = "{E0147448-0B85-4C6A-A70D-6F54422210F6}"

12. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell
Extensions\Approved
        {E0147448-0B85-4C6A-A70D-6F54422210F6} = "MyNewCntx"

13. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell
Extensions\Cached
        {E0147448-0B85-4C6A-A70D-6F54422210F6} {000214E8-0000-0000-
C000-000000000046} 0x401 = 1

14. HKEY_USERS\S-1-5-21-1935655697-2111687655-839522115-500\Software
\Microsoft\Windows\CurrentVersion\Shell Extensions\Cached

        {E0147448-0B85-4C6A-A70D-6F54422210F6} {000214E8-0000-0000-
C000-000000000046} 0x401 = "01 00 00 00 31 00 39 00 b4 79 16 41 47 f1
c7 01"

Consequently, security update MS06-015 is not installed at the first
computer. Cverclsid.exe, coming with security update MS06-015, blocks
the shellext.dll and newcntx.dll at the second computer. Adding item
13 for newcntx.dll have solved the problem. But this solution is not
valid for shellext.dll.

Instead of adding item 13 to the registry, renaming verclsid.exe file
to verclsid.old gave the same result.

The most interesting thing is:

Softwares like Winzip, Winrar, Axcrypt, etc. use their extensions
without any problem  at the second computer and they have same
registry entries with newcntx.dll except item 13. They need not adding
item 13.
date: Fri, 07 Sep 2007 13:53:03 -0700   author:   unknown

Re: Windows Explorer context menu problem   
Right - the other applications don't need those entries because they are 
going to pass the verclsid test anyway.
The next thing to do is debug explorer and see if your dll is getting 
loaded.  Probably, you're getting loaded (now that you've faked passing the 
verclsid test), and you can debug the failure right in explorer - put a 
breakpoint on your DLLGetClassObject and step out from there.  Perhaps 
you're failing some internal call on the second machine - only debugging can 
tell (and apparently my guessing hasn't turned up too much yet :).

However, failing the verclsid test means that you've got something pretty 
fundamental that's broken.  So you need to track down where that's failing 
as well (it may be for the same reason).

HTH,
-- 
James Finnigan [MSFT] ( http://blogs.msdn.com/jamesfi )
This posting is provided "AS IS" with no warranties, and confers no rights. 
Use of included script samples are subject to the terms specified at 
http://www.microsoft.com/info/cpyright.htm.

 wrote in message 
news:1189198383.279575.226360@y42g2000hsy.googlegroups.com...
>> You might be running afoul of verclsid (introduced in this 
>> updatehttp://www.microsoft.com/technet/security/Bulletin/MS06-015.mspx). 
>> Perhaps
>> you don't have all the dependencies you need on the second machine (for
>> instance, a particular version of the c-runtime).  Anyway, verclsid 
>> verifies
>> that a COM object is going to do a few basic things without crashing.
>>
>> I would check this by using depends.exe from the second machine and 
>> making
>> sure that you've got all your dependencies.  If that works, try debugging
>> verclsid as it checks out your extension.  I don't remember the syntax, 
>> but
>> you can just debug verclsid whenever it it run a couple times to get an 
>> idea
>> for how to invoke it.  Image File Execution Options is a reasonable way 
>> of
>> doing that (http://msdn2.microsoft.com/en-us/library/a329t4ed.aspx).
>>
>> I don't see anything really wrong with the registration and the fact that
>> verclsid seems to be invoking your stuff is also evidence that it's 
>> hooked
>> up right and that there is something wrong with loading your dll.
>>
>> HTH,
>> --
>> James Finnigan [MSFT] (http://blogs.msdn.com/jamesfi)
>> This posting is provided "AS IS" with no warranties, and confers no 
>> rights.
>> Use of included script samples are subject to the terms specified 
>> athttp://www.microsoft.com/info/cpyright.htm.
>
> I have checked all dependencies. The result is same for both machines
> and no problem about dependencies.
>
> Then, from the  verclsid update link (updatehttp://www.microsoft.com/
> technet/security/Bulletin/MS06-015.mspx), I have reached the following
> link:
>
> http://support.microsoft.com/kb/918165
>
> Here, the article tells about manual steps to add shell extensions to
> the "allow list". I have added the following value to the registry for
> the extension:
>
> HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell
> Extensions\Cached
>     {2C4BBD71-F932-410A-8603-415085CE28D9} {000214E8-0000-0000-
> C000-000000000046} 0x401 (REG_DWORD) = 1
>
> But, it did not changed the result.
>
> To try another shell extension (newcntx.dll), which gives the same
> results with ShellExt on both computers, I have used the same method
> and I have added the following value:
>
> HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell
> Extensions\Cached
>        {E0147448-0B85-4C6A-A70D-6F54422210F6} {000214E8-0000-0000-
> C000-000000000046} 0x401 = 1
>
> The result was positive at the second computer. newcntx.dll menu items
> are added to the windows explorer context menu.
>
> All the registry entries for newcntx.dll:
>
> 1. HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\MyNewCntx
>         Default = "{E0147448-0B85-4C6A-A70D-6F54422210F6}"
>
> 2. HKEY_CLASSES_ROOT\CLSID\{E0147448-0B85-4C6A-A70D-6F54422210F6}
>         Default = "MyNewCntx"
>
> 3. HKEY_CLASSES_ROOT\CLSID\{E0147448-0B85-4C6A-
> A70D-6F54422210F6}\InProcServer32
>         Default = "D:\Program Files\My New Context\newcntx.dll"
>         ThreadingModel = "Apartment"
>
> 4. HKEY_CLASSES_ROOT\Directory\shellex\ContextMenuHandlers\MyNewCntx
>         Default = "{E0147448-0B85-4C6A-A70D-6F54422210F6}"
>
> 5. HKEY_CLASSES_ROOT\Folder\shellex\ContextMenuHandlers\MyNewCntx
>         Default = "{E0147448-0B85-4C6A-A70D-6F54422210F6}"
>
> 6. HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Shell
> Extensions\Cached
>        {E0147448-0B85-4C6A-A70D-6F54422210F6} {000214E8-0000-0000-
> C000-000000000046} 0x401 = "01 00 00 00 31 00 39 00 b4 79 16 41 47 f1
> c7 01"
>
> 7. HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shellex\ContextMenuHandlers
> \MyNewCntx
>        Default = "{E0147448-0B85-4C6A-A70D-6F54422210F6}"
>
> 8. HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{E0147448-0B85-4C6A-
> A70D-6F54422210F6}
>        Default = "MyNewCntx"
>
> 9. HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{E0147448-0B85-4C6A-
> A70D-6F54422210F6}\InProcServer32
>        Default = "D:\Program Files\My New Context\newcntx.dll"
>        ThreadingModel = "Apartment"
>
> 10. HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shellex
> \ContextMenuHandlers\MyNewCntx
>        Default = "{E0147448-0B85-4C6A-A70D-6F54422210F6}"
>
> 11. HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shellex
> \ContextMenuHandlers\MyNewCntx
>        Default = "{E0147448-0B85-4C6A-A70D-6F54422210F6}"
>
> 12. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell
> Extensions\Approved
>        {E0147448-0B85-4C6A-A70D-6F54422210F6} = "MyNewCntx"
>
> 13. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell
> Extensions\Cached
>        {E0147448-0B85-4C6A-A70D-6F54422210F6} {000214E8-0000-0000-
> C000-000000000046} 0x401 = 1
>
> 14. HKEY_USERS\S-1-5-21-1935655697-2111687655-839522115-500\Software
> \Microsoft\Windows\CurrentVersion\Shell Extensions\Cached
>
>        {E0147448-0B85-4C6A-A70D-6F54422210F6} {000214E8-0000-0000-
> C000-000000000046} 0x401 = "01 00 00 00 31 00 39 00 b4 79 16 41 47 f1
> c7 01"
>
> Consequently, security update MS06-015 is not installed at the first
> computer. Cverclsid.exe, coming with security update MS06-015, blocks
> the shellext.dll and newcntx.dll at the second computer. Adding item
> 13 for newcntx.dll have solved the problem. But this solution is not
> valid for shellext.dll.
>
> Instead of adding item 13 to the registry, renaming verclsid.exe file
> to verclsid.old gave the same result.
>
> The most interesting thing is:
>
> Softwares like Winzip, Winrar, Axcrypt, etc. use their extensions
> without any problem  at the second computer and they have same
> registry entries with newcntx.dll except item 13. They need not adding
> item 13.
>
date: Fri, 7 Sep 2007 22:06:24 -0700   author:   James Finnigan [MSFT]

Google
 
Web ureader.com


    COPYRIGHT 2007, YARDI TECHNOLOGY LIMITED, ALL RIGHT RESERVE  |   contact us