问题 注册程序集时出错MSB3216


以下是错误详细信息:

在错误列表中:

错误1无法注册程序集“C:\ Users \ cboardman \ Documents \ Visual Studio 2008 \ Projects \ ExcelAddIn1 \ ExcelAddIn1 \ bin \ Debug \ ExcelAddIn1.dll” - 访问被拒绝。请确保您以管理员身份运行该应用程序。访问注册表项“HKEY_CLASSES_ROOT \ ExcelAddIn1 ...”被拒绝。 C:\ Windows \ Microsoft.NET \ Framework \ v3.5 \ Microsoft.Common.targets 3019 9 ExcelAddIn1

在构建输出中:

Target UnmanagedRegistration:       C:\ Windows \ Microsoft.NET \ Framework \ v3.5 \ Microsoft.Common.targets(3019,9):错误MSB3216:无法注册程序集“C:\ Users \ cboardman \ Documents \ Visual Studio 2008 \ Projects \ ExcelAddIn1 \ ExcelAddIn1 \ bin \ Debug \ ExcelAddIn1.dll“ - 访问被拒绝。请确保您以管理员身份运行该应用程序。访问注册表项“HKEY_CLASSES_ROOT \ ExcelAddIn1 ...”被拒绝。   在项目“ExcelAddIn1.csproj”中完成构建目标“UnmanagedRegistration” - 失败。

根据我在网上找到的内容,我需要以管理员身份运行Visual Studio。对于小钉子来说,这似乎是一把大锤子。有没有办法解决这个问题(就像以管理员身份运行注册一样)?


9391
2018-06-25 15:34


起源



答案:


不幸的是,没有一种简单的方法可以做到这一点。默认情况下,注册组件会将条目添加到注册表中的受保护密钥(特别是在HKLM下)。没有管理权限就无法做到这一点。

从技术上讲,可以使用HKCU下的等效键将COM组件注册为非管理员。然而,这不是一个微不足道的变化,我不相信注册程序集的.Net工具可以配置为执行此操作。

我认为您最好的选择是在构建期间禁用注册。然后打开一个单独的Admin窗口,您可以手动注册DLL From以进行调试。只有在更改COM相关接口或DLL的位置时才需要重新注册,因此不必为每个F5完成。


9
2018-06-25 15:48





关闭Visual Studio并重新打开右键单击它 - >以管理员身份运行解决了我的问题。


5
2018-06-08 11:54