目标: 在另一个环境中构建一个带有COM互操作的C# DLL供Delphi调用。
问题: Windows正在阻止我的构建,说我没有权限编辑注册表。
上下文:
- 我使用的是Windows 8、Visual Studio 2012,并关闭了用户账户控制(UAC)。
- 我使用RGiesecke的DllExport来注释要导出为DLL的方法,并添加
[DllExport]
标记。 - 我按照这里所建议的使用了
[ComVisible(true)]
。 - 我的解决方案平台目标是x86。
- 我编辑了解决方案的生成属性并选中了
生成 > 输出 > 注册COM互操作
- 我编辑了
AssemblyInfo.cs
并启用了[assembly: ComVisible(true)]
- 我使用强名称为程序集签名
无法注册程序集'absolute\path\to\NameOf.dll',拒绝访问。请确保您以管理员身份运行该应用程序。拒绝访问注册表键'HKEY_CLASSES_ROOT\NameOf.DllClass'
也许我需要以管理员身份运行Visual Studio。但是,如果我以管理员身份运行VS2012,我会得到另一个错误(更随机):无法注册程序集。找不到文件或程序集“RGiesecke.DllExport.Metadata、Version=1.0.0.0、Culture=neutral、PublicKeyToken=ad5f9f4a55b5020b”或它的某一个依赖项。系统找不到指定的文件。
我按照修复:“注册.NET程序集进行COM互操作时出现访问注册表键被拒绝”错误消息的步骤, 找到并更改了HKEY_CLASSES_ROOT\Component Categories\{62C8FE65-4EBB-45e7-B440-6E39B2CDBF29}
的权限。但没有成功。我该如何获取构建DLL以及生成tlb文件所需的权限?