<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Jigar Mehta's Blog : COM</title><link>http://blogs.msdn.com/jigarme/archive/tags/COM/default.aspx</link><description>Tags: COM</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>CoCreateInstance returns 0x80080005 for Visual Studio 2008 based ATL service??</title><link>http://blogs.msdn.com/jigarme/archive/2008/05/08/cocreateinstance-returns-0x80080005-for-visual-studio-2008-based-atl-service.aspx</link><pubDate>Thu, 08 May 2008 04:37:32 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8468254</guid><dc:creator>Jigar Mehta</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jigarme/comments/8468254.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jigarme/commentrss.aspx?PostID=8468254</wfw:commentRss><description>&lt;p&gt;I just worked with a customer who was facing interesting issue. He was getting 0x80080005 at client when he calls CoCreateInstance. The COM component is implemented within an ATL Service which is running on the same machine (we are not hitting wire/network). Now, typical meaning of this error is,&lt;/p&gt;  &lt;p&gt;CO_E_SERVER_EXEC_FAILURE&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; winerror.h   &lt;br /&gt;Server execution failed&lt;/p&gt;  &lt;p&gt;Generally this means Server (out of process server, either stand alone EXE or service) did not respond to RPCSS within definite time about COM server's successful start. Many things could have happened (may be Server got some exception/error, or server got crashed!)&lt;/p&gt;  &lt;p&gt;But in this case, even if I start the service before making call from client, I get same response from client. Something else was wrong! And after lots of checks here and there, we found out that it is a BUG!&lt;/p&gt;  &lt;p&gt;The bug shows up when,&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;You create a brand new ATL Service project using Wizard with Visual Studio 2008.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The root cause is, newly generated CoClass's rgs file (that holds the component registration information) doesn't contain entry for AppID. So, even if you register the COM component (using &amp;lt;exename.exe&amp;gt; /service), you dont get AppID key generated for CoClass. And COM runtime returns this error at client.&lt;/p&gt;  &lt;p&gt;To fix it,&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Look at your rgs file (for each ATL simple objects you added to COM service project),&lt;/li&gt;    &lt;li&gt;     &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;font face="Verdana"&gt;Replace snippet looking similar to following,           &lt;br /&gt;&lt;/font&gt;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ForceRemove {9ACB97C6-4492-40E8-A1BD-51DFE8962E92} = s 'CMyObject Class'&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;#39;Courier New&amp;#39;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;#39;Courier New&amp;#39;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ProgID = s 'ATLComService.CMyObject.1'&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;#39;Courier New&amp;#39;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; VersionIndependentProgID = s 'ATLComService.CMyObject'&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;#39;Courier New&amp;#39;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ForceRemove 'Programmable'&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;#39;Courier New&amp;#39;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LocalServer32 = s '%MODULE%'&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;#39;Courier New&amp;#39;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 'TypeLib' = s '{E423A7DE-58C7-4535-A864-395DCEDE941F}'&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;#39;Courier New&amp;#39;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; color: #1f497d; font-family: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;font face="Verdana" color="#333333"&gt;with&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;#39;Courier New&amp;#39;"&gt;&amp;#160;&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;#39;Courier New&amp;#39;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ForceRemove {9ACB97C6-4492-40E8-A1BD-51DFE8962E92} = s 'CMyObject Class'&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;#39;Courier New&amp;#39;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;#39;Courier New&amp;#39;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ProgID = s 'ATLComService.CMyObject.1'&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;#39;Courier New&amp;#39;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; VersionIndependentProgID = s 'ATLComService.CMyObject'&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;#39;Courier New&amp;#39;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ForceRemove 'Programmable'&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;#39;Courier New&amp;#39;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LocalServer32 = s '%MODULE%'&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;#39;Courier New&amp;#39;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: yellow"&gt;val AppID = s '%APPID%'&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;#39;Courier New&amp;#39;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 'TypeLib' = s '{E423A7DE-58C7-4535-A864-395DCEDE941F}'&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;#39;Courier New&amp;#39;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/span&gt;&lt;/p&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;span style="font-size: 10pt; font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;font face="Verdana"&gt;There is also another way to permanently fix this issue (Product Team is planning to fix this issue in Visual Studio 2008 SP1), you can also,&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;span style="font-size: 10pt; font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;font face="Verdana"&gt;Go to &lt;font color="#1f497d"&gt;C:\Program Files\Microsoft Visual Studio 9.0\VC\VCWizards\CodeWiz\ATL\Simple\Templates\1033\object.rgs&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;    &lt;li&gt;&lt;span style="font-size: 10pt; font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;font face="Verdana"&gt;&lt;span style="font-size: 10pt; font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;font face="Verdana"&gt;Add following line right before statement for &amp;quot;typelib&amp;quot;                 &lt;br /&gt;                  &lt;p class="MsoNormal"&gt;&lt;span style="color: #1f497d"&gt;[!if APPID_EXIST]&lt;/span&gt;&lt;/p&gt;                  &lt;p class="MsoNormal"&gt;&lt;span style="color: #1f497d"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; val AppID = s '[!output APPID_REGISTRY_FORMAT]'&lt;/span&gt;&lt;/p&gt;                  &lt;p class="MsoNormal"&gt;&lt;span style="color: #1f497d"&gt;[!endif]&lt;/span&gt;&lt;/p&gt;               &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt; &lt;span style="font-size: 10pt; font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;font face="Verdana"&gt;&lt;span style="font-size: 10pt; font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;font face="Verdana"&gt;             &lt;p&gt;&lt;span style="color: #1f497d"&gt;&lt;span style="font-size: 10pt; font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;font face="Verdana" color="#333333"&gt;That should fix the issue.&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;              &lt;p&gt;&lt;span style="color: #1f497d"&gt;&lt;span style="font-size: 10pt; font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;#39;Courier New&amp;#39;"&gt;&lt;font face="Verdana" color="#333333"&gt;Stay tuned.. &lt;img alt="Wave" src="http://us.i1.yimg.com/us.yimg.com/i/mesg/emoticons7/103.gif" /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;           &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8468254" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jigarme/archive/tags/COM/default.aspx">COM</category></item><item><title>How to register .NET Assembly for COM Interop ?</title><link>http://blogs.msdn.com/jigarme/archive/2008/04/28/how-to-register-net-assembly-for-com-interop.aspx</link><pubDate>Mon, 28 Apr 2008 16:55:33 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8435417</guid><dc:creator>Jigar Mehta</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/jigarme/comments/8435417.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jigarme/commentrss.aspx?PostID=8435417</wfw:commentRss><description>&lt;p&gt;Do you want to use your .NET DLL (assembly) from VB6 or C++ application (native code) ? Yes, you can do that using COM Interop. As per COM rules, you need to get your assembly registered on system (in Registry, yes, thats how COM works!).&lt;/p&gt;  &lt;p&gt;To get an assembly registered on system, you can use regasm utility that comes with .net framework.&lt;/p&gt;  &lt;p&gt;If you have .NET Framework 2.0 installed, regasm would be in following path (assuming you have 32-bit OS)   &lt;br /&gt;C:\windows\microsoft.net\Framework\v2.0.50727\regasm.exe&lt;/p&gt;  &lt;p&gt;If you have 64-bit OS as well as .NET framework installed, you should find 32bit version of regasm in,   &lt;br /&gt;C:\windows\microsoft.net\&lt;strong&gt;Framework&lt;/strong&gt;\v2.0.50727\regasm.exe&lt;/p&gt;  &lt;p&gt;and 64 bit version of regasm should be in,   &lt;br /&gt;C:\windows\microsoft.net\&lt;strong&gt;Framework64&lt;/strong&gt;\v2.0.50727\regasm.exe&lt;/p&gt;  &lt;p&gt;More on regasm and its command line options is described &lt;a href="http://msdn2.microsoft.com/en-us/library/tzat5yw6(VS.71).aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;If you are developing project in Visual Studio, there is option to register your assembly with COM Interop in Project Properties (Right click on project and choose properties), Go to Build tab, There is an option for &amp;quot;Register for COM Interop&amp;quot;. (Basically what it does is, it calls regasm after DLL is built!)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/jigarme/WindowsLiveWriter/Howtoregister.NETAssemblyforCOMInterop_1110C/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="501" alt="image" src="http://blogs.msdn.com/blogfiles/jigarme/WindowsLiveWriter/Howtoregister.NETAssemblyforCOMInterop_1110C/image_thumb.png" width="717" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;There are two options while registering the assembly for COM Interop,&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Put your assembly in GAC.&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;If you put your assembly in GAC, you don't have to use /codebase command line switch with regasm, because application will be able to find the assembly using default probing mechanisms.&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Assembly is not in GAC.&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Its advisable to use /codebase command line switch when you dont have your assembly in GAC because that will add absolute path for your assembly in registry so that COM client (your native application which uses .NET assembly) can find it.&lt;/li&gt;      &lt;li&gt;Following is what will be written in case if you choose to use /codebase option while registering. (notice the CodeBase key).&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/jigarme/WindowsLiveWriter/Howtoregister.NETAssemblyforCOMInterop_1110C/image_4.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="165" alt="image" src="http://blogs.msdn.com/blogfiles/jigarme/WindowsLiveWriter/Howtoregister.NETAssemblyforCOMInterop_1110C/image_thumb_1.png" width="1217" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Stay tuned.. &lt;img alt="Wave" src="http://us.i1.yimg.com/us.yimg.com/i/mesg/emoticons7/103.gif" /&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8435417" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jigarme/archive/tags/Interop/default.aspx">Interop</category><category domain="http://blogs.msdn.com/jigarme/archive/tags/COM/default.aspx">COM</category><category domain="http://blogs.msdn.com/jigarme/archive/tags/.NET/default.aspx">.NET</category></item><item><title>Getting error - Library not registered</title><link>http://blogs.msdn.com/jigarme/archive/2007/05/17/getting-error-library-not-registered.aspx</link><pubDate>Thu, 17 May 2007 04:31:58 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2684457</guid><dc:creator>Jigar Mehta</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jigarme/comments/2684457.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jigarme/commentrss.aspx?PostID=2684457</wfw:commentRss><description>&lt;p&gt;&lt;strong&gt;Problem&lt;/strong&gt;: When loading the type-library (using #import directive or even from oleview.exe), getting problem which says something as follows,&lt;/p&gt; &lt;p&gt;&lt;img src="http://img514.imageshack.us/img514/7775/shot0004zn8.jpg"&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Troubleshooting&lt;/strong&gt;:&amp;nbsp;Complete.&lt;/p&gt; &lt;p&gt;Debugged in Windbg and found that OLEAUT32!LoadRegTypeLib was failing.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Solution &lt;/strong&gt;: Upgrading to latest version of OLEVIEW (Platform SDK Sample)&lt;br&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/w9yyfff5(VS.80).aspx"&gt;http://msdn2.microsoft.com/en-us/library/w9yyfff5(VS.80).aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Solves the issue.&lt;/p&gt; &lt;p&gt;Stay tuned.. &lt;img alt="Wave" src="http://us.i1.yimg.com/us.yimg.com/i/mesg/emoticons7/103.gif"&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2684457" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jigarme/archive/tags/COM/default.aspx">COM</category></item><item><title>Changes to COM in Windows Vista</title><link>http://blogs.msdn.com/jigarme/archive/2007/05/04/changes-to-com-in-windows-vista.aspx</link><pubDate>Fri, 04 May 2007 04:07:20 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2402799</guid><dc:creator>Jigar Mehta</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jigarme/comments/2402799.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jigarme/commentrss.aspx?PostID=2402799</wfw:commentRss><description>&lt;p&gt;&lt;/p&gt; &lt;p&gt;The following changes appear in COM in Windows Vista: &lt;ul&gt; &lt;li&gt; &lt;p&gt;The COM elevation moniker allows applications that are running under a limited user account (LUA) to activate COM classes with elevated functionality. For more information, please see &lt;a href="http://msdn2.microsoft.com/ms679687.aspx"&gt;The COM Elevation Moniker&lt;/a&gt;.&lt;/p&gt; &lt;li&gt; &lt;p&gt;When you install an application that makes COM calls on a Windows Vista computer, and you plan to run the application as an administrator, you must install the application per-machine, rather than per-user, or it will not function properly.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;[Note : Content is from MSDN]&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2402799" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jigarme/archive/tags/COM/default.aspx">COM</category><category domain="http://blogs.msdn.com/jigarme/archive/tags/Vista/default.aspx">Vista</category></item><item><title>Regsvr32.exe gives error 'The specified procedure could not be found'</title><link>http://blogs.msdn.com/jigarme/archive/2007/03/17/regsvr32-exe-gives-error-quot-the-specified-procedure-could-not-be-found-quot.aspx</link><pubDate>Sat, 17 Mar 2007 03:35:08 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1897190</guid><dc:creator>Jigar Mehta</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/jigarme/comments/1897190.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jigarme/commentrss.aspx?PostID=1897190</wfw:commentRss><description>&lt;p&gt;Just got a problem where the COM DLL was compiled on Windows&amp;nbsp;XP and while registering the DLL, it was giving error saying "The specified procedure could not be found"..&lt;/p&gt; &lt;p&gt;While debugging the regsvr32 process, found that it was loading the DLL (customer's COM dll) and at that time, one method from Kernel32.dll was getting loaded named GetThreadId.. checking it, we found that on Windows XP kernel32.dll this method was not shipped.. and it was getting successful on the windows 2003 machine because this method is available on win2003 onwards operating system.&lt;/p&gt; &lt;p&gt;The reason of blogging this thing is, the error message that regsvr32.exe gives is somewhat strange. Because when I saw this error, I first checked the export table of the DLL and found everything proper. Then checked import table and found this method GetThreadId which was causing the DLL load failure.. So, in regsvr32.exe still the COM component registration code was not even started (no registry entries were created).&lt;/p&gt; &lt;p&gt;While again talking to customer, found that in his code, he used GetThreadId method at one location, just by commenting that function out, we could successfully register the COM component.&lt;/p&gt; &lt;p&gt;I personally feel that, Regsvr32.exe should give more proper error message!!!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1897190" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jigarme/archive/tags/COM/default.aspx">COM</category></item><item><title>Implementing the Connection Points on the client side..</title><link>http://blogs.msdn.com/jigarme/archive/2007/02/12/implementing-the-connection-points-on-the-client-side.aspx</link><pubDate>Sun, 11 Feb 2007 23:38:23 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1654108</guid><dc:creator>Jigar Mehta</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jigarme/comments/1654108.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jigarme/commentrss.aspx?PostID=1654108</wfw:commentRss><description>&lt;p&gt;While searching a very simple/basic sample with good guidelines on this, I found following article useful..&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.codeproject.com/atl/ConnectionPoint.asp"&gt;http://www.codeproject.com/atl/ConnectionPoint.asp&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1654108" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jigarme/archive/tags/COM/default.aspx">COM</category></item><item><title>HKEY_CLASSES_ROOT is just a logical structure..</title><link>http://blogs.msdn.com/jigarme/archive/2007/02/10/hkey-classes-root-is-just-a-logical-structure.aspx</link><pubDate>Sat, 10 Feb 2007 00:08:55 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1637219</guid><dc:creator>Jigar Mehta</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jigarme/comments/1637219.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jigarme/commentrss.aspx?PostID=1637219</wfw:commentRss><description>&lt;p&gt;Just came to know that HKEY_CLASSES_ROOT is nothing but a logical top level component.. The main source for this root is, HKEY_LOCAL_MACHINE\SOFTWARE\Classes.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;If you want to experiment with it, try creating a new key under HKEY_CLASSES_ROOT and then open HEKY_LOCAL_MACHINE\SOFTWARE\Classes key, you will find newly created key there too.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Dont know how many such secrets windows has hidden inside it!!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1637219" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jigarme/archive/tags/COM/default.aspx">COM</category></item><item><title>COM Apartments..</title><link>http://blogs.msdn.com/jigarme/archive/2007/01/09/com-apartments.aspx</link><pubDate>Tue, 09 Jan 2007 03:02:18 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1436438</guid><dc:creator>Jigar Mehta</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jigarme/comments/1436438.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jigarme/commentrss.aspx?PostID=1436438</wfw:commentRss><description>&lt;p&gt;I was searching for real good examples and theory about COM apartment.. From all the publicly available material, I liked this one the most !&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.codeguru.com/Cpp/COM-Tech/activex/apts/article.php/c5551/"&gt;http://www.codeguru.com/Cpp/COM-Tech/activex/apts/article.php/c5551/&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Hope you will like it and understand from there.&lt;/p&gt; &lt;p&gt;Happy COMing!!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1436438" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jigarme/archive/tags/COM/default.aspx">COM</category></item></channel></rss>