Visual Studio 2010 - TYPE_E_REGISTRYACCESS

18

I'm building my VS2010 solution and in output window there is an error just for one project.

In error tab:

Error   161 Cannot register type library "D:\Sites\Website\MyPortal.Website.Controllers\bin\Debug\MyPortal.Website.Controllers.tlb". Error accessing the OLE registry. (Exception from HRESULT: 0x8002801C (TYPE_E_REGISTRYACCESS)) MyPortal.Website.Controllers

In output tab:

Compile complete -- 0 errors, 153 warnings
  MyPortal.Website.Controllers -> D:\Sites\Website\MyPortal.Website.Controllers\bin\Debug\MyPortal.Website.Controllers.dll
c:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(3341,9): warning MSB3214: "D:\Sites\Website\MyPortal.Website.Controllers\bin\Debug\MyPortal.Website.Controllers.dll" does not contain any types that can be registered for COM Interop.
c:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(3341,9): error MSB3213: Cannot register type library "D:\Sites\Website\MyPortal.Website.Controllers\bin\Debug\MyPortal.Website.Controllers.tlb". Error accessing the OLE registry. (Exception from HRESULT: 0x8002801C (TYPE_E_REGISTRYACCESS))
========== Rebuild All: 8 succeeded, 1 failed, 0 skipped ==========

any ideas?

visual-studio-2010
typelib
asked on Stack Overflow Feb 24, 2011 by Junior Mayhé • edited Nov 25, 2014 by VividD

4 Answers

34

When setting Register For Com interop I've found that you do need to run as Administrator.

Without Administrator trying to compile I got errors like:

Cannot register assembly "C:\TFS\Project\Src\ProjectAddin\bin\Debug \ProjectAddin.dll" - access denied. Please make sure you're running the application as administrator. Access to the registry key 'HKEY_CLASSES_ROOT\CLSID{3A6192EA-3C9C-39EB-99A3-3DBFF8CA118F}' is denied.

The above registry key didn't exist so I created it, then trying to compile I got:

Cannot register type library "C:\TFS\Project\Src\ProjectAddin\bin\Debug \ProjectAddin.tlb". Error accessing the OLE registry. (Exception from HRESULT: 0x8002801C (TYPE_E_REGISTRYACCESS))

Solution

Turn off Register for COM interop and the error goes away.

Shift + Right click Visual Studio and open as Administrator, open the project. Tick Register for Com interop and it compiles successfully.

answered on Stack Overflow Jun 4, 2012 by Jeremy Thompson
24

I found out someone changed a property in the csproj.

To solve the error:

  • You just have to right click the project,
  • choose Build tab
  • go to Output section
  • uncheck Register for COM interop
answered on Stack Overflow Feb 25, 2011 by Junior Mayhé
10

For me this problem started when I moved to a Win7 x64 machine. I have other team members without x64 so I assume this is the problem. I need COM interop so can't just turn it off. I was able to solve the problem by un-checking Register for COM interop (in project properties > Build page), and then adding a post-build event to do the COM registration:

"%Windir%\Microsoft.NET\Framework\v2.0.50727\regasm" /codebase "$(TargetPath)"
answered on Stack Overflow Jul 21, 2011 by Rory
3

Since, in your project you have enabled Register for COM interop setting, the same is being executed at the build time. This setting needs admin privileges which are not available under Visual Studio unless you launch Visual Studio as administrator, explicitly.

You can follow the steps available at the following link to launch Visual Studio as administrator and then try building your project again -

How to Run Visual Studio as Administrator by default

answered on Stack Overflow Nov 3, 2016 by SoftEngi • edited May 23, 2017 by Community

User contributions licensed under CC BY-SA 3.0