スキップしてメイン コンテンツへ

 none
Internet Explorer ExplorerBar RRS feed

回答

  • Yes, per this document you should delete the component category cache as part of your install, but I would do after you register your band object (i.e. do the delete last).  That way it will include your band when the cache is rebuilt.
    2011年8月5日 14:46

すべての返信

  • The rgs file lacks a HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Explorer Bars registration.

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    2011年8月3日 18:12
  • OK I added this line

     

    HKLM
    {
    	Software
    	{
    		Microsoft
    		{
    			'Internet Explorer'
    			{
    				Explorer Bars
    				{
    					ForceRemove	{BE8D0059-D24D-4919-B76F-99F4A2203647} = s 'U-2-Me Sidebar'
    					{
    						val 'BarSize' = b '23 01 00 00 00 00 00 00'
    					}
    				}
    			}
    		}
    	}
    }

     I have uploaded the updated code

    https://skydrive.live.com/#!/?cid=615ed451fd83a613&sc=photos&uc=1&id=615ED451FD83A613%21276


    Adeel
    2011年8月4日 5:25
  • OK I've discovered that this problem is not only with IE 9 but all Windows 7 PCs 64-bit PCs. and adding this line

    HKLM
    {
    	Software
    	{
    		Microsoft
    		{
    			'Internet Explorer'
    			{
    				Explorer Bars
    				{
    					ForceRemove	{BE8D0059-D24D-4919-B76F-99F4A2203647} = s 'U-2-Me Sidebar'
    					{
    						val 'BarSize' = b '23 01 00 00 00 00 00 00'
    					}
    				}
    			}
    		}
    	}
    }

    Makes things worse that the plugin does'nt even work with Windows XP :(. Can someone help me in resolving this? :(


    Adeel
    2011年8月4日 13:22
  • Make sure you compile a 64bit DLL for 64bit windows.

    Register the 32bit dll for the 32bit registry view and the 64bit DLL for the 64bit DLL view

    Also make sure you registered the bar under one of the explorer bar categories.



    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    2011年8月4日 14:19
  • Thanks anyways I found the solution over here

    http://msdn.microsoft.com/en-us/library/aa753590(v=vs.85).aspx#3

    These registry keys needs to be deleted for Windows VISTA & 7

     

    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Discardable\PostSetup\
    Component Categories\{00021493-0000-0000-C000-000000000046}\Enum
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Discardable\PostSetup\
    Component Categories\{00021494-0000-0000-C000-000000000046}\Enum

    Now the question is I have created an MSI Installer of this ExplorerBar addin. So what is the best way of deleting this registry key. Should it be deleted in the installer or the when the plugin is getting registered? Where exactly should I put the code for deleting this registry?

    Thanks in Advance


    Adeel
    2011年8月5日 4:45
  • Hi,

    It should be the very last item in the installer (after you have registered the dll).....

    as the registry key suggests.... PostSetup... these entries are created automatically by the OS when the dll is registered as an Explorer Bar....

    usually a user would have to restart windows for the new Explorer Bar to be accessible from the IE View menu.... deleting the Discardable entries from the registry in the installer removes the need for a user to reboot.

     

    Regards.


    Rob^_^
    2011年8月5日 6:05
  • OK so if I put it in DllRegsiterServer this way....
    STDAPI DllRegisterServer(void)
    {
      // registers object, typelib and all interfaces in typelib
      _Module.RegisterServer(TRUE);
    
    	// This clears the Internet Explorer Browser Helper Object cache
    	// see Q247705 and Q214842 for details
    	MessageBox(NULL, "Registered", "", NULL);
    	
    	::SHDeleteKey(HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Discardable\\PostSetup\\Component Categories\\{00021494-0000-0000-C000-000000000046}\\Enum");
    	::SHDeleteKey(HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Discardable\\PostSetup\\Component Categories\\{00021493-0000-0000-C000-000000000046}\\Enum");
    	//::SHDeleteKey(HKEY_CLASSES_ROOT, "Component Categories\\{00021492-0000-0000-C000-000000000046}\\Enum");
    
    	// registers the ExplorerBar with the correct category
    	ICatRegister* pcr;
    
    	HRESULT hr = S_OK;
    
    	CoInitialize(NULL);
    
    	hr = CoCreateInstance (CLSID_StdComponentCategoriesMgr, 
    		NULL,CLSCTX_INPROC_SERVER,IID_ICatRegister, 
    		(LPVOID*) &pcr);
    
    	if(SUCCEEDED(hr))
    	{
    		hr = pcr->RegisterClassImplCategories(CLSID_CGBandObj, 1, &(CATID)CATID_InfoBand);
    		pcr->Release();
    	}
    
    	CoUninitialize();
    
    	return SUCCEEDED(hr);
    }

    Will it be fine?
    Adeel
    2011年8月5日 7:10
  • Yes, per this document you should delete the component category cache as part of your install, but I would do after you register your band object (i.e. do the delete last).  That way it will include your band when the cache is rebuilt.
    2011年8月5日 14:46