是的,通常情况下使用 regasm 注册 DLL 必须使用管理员权限。这是因为 regasm 需要向系统注册表(特别是 HKEY_LOCAL_MACHINE)写入 COM 组件信息,普通用户权限无法修改这些受保护的区域。如果不用管理员权限运行,往往会遇到“拒绝访问”或注册失败的错误。虽然可以通过导出 reg 文件修改为 HKCU 来规避,但这会导致 ComRegisterFunction 不被调用等副作用,因此官方推荐及大多数实践均要求以管理员身份运行命令提示符来执行 regasm 命令,确保注册过程完整且权限充足。
如何用 RegAsm.exe 在开发/生产环境中注册 C#/VB.NET 开发的 DLL
创建 C#或 VB.Net DLL 后,您需要在目标计算机上注册。并将所需的项添加到注册表中。注册表允许允许 COM 客户端 (VB6 应用程序或 Microsoft VBA,例如 Access,Excel 等) 创建.NET Framework 类。类一经注册,则在任何 COM 客户程序都可以使用它,就好像该类是一个 COM 类。类仅在安装程序集时注册一次。程序集中的类实例直到被实际注册时,才能从 COM 中创建。Regasm.exe 所在路径没有被系统添加 PATH 环境变量中,因此,REGASM 命令无法识别。使用时,需要 DOS 窗口切换到其存储路径后才能运行运行。4.0 以上版本的.Net Framework 使用一个新的 RegAsm.exe,它位于.Net FrameworkV4.0 文件夹中。如果您收到此错误"RegAsm:错误 RA0000:无法加载”c:\ Windows\ system32 \ SimpleCalc.dll"因为它不是一个有效的.NET 程序集“,您可能在使用.Net4 版本以下的 RegAsm.exe 进行 注册.Net4 以上版本创建的 DLL。所以当注册由.Net Framework4 以上版本创建的 DLL 程序集时,我们不能使用.Net Framework 2.0 / 3.0 / 3.5 文件夹中的 RegAsm.exe 进行注册。(截至 2017 年 9 月 24 日)
在 c#项目中如何正确使用 regasm
确定需要注册的 DLL:首先,你需要明确要注册哪个 DLL。请注意,你可能需要以管理员身份运行命令提示符,以确保有足够的权限执行注册操作。如果你使用的是 Visual Studio 的开发人员命令提示符,它会自动将这个路径添加到系统的 PATH 环境变量中,因此你可以直接在命令提示符中输入 regasm 来运行它。此外,regasm 还提供了许多其他选项,如/nologo(不显示版权信息)、/verbose(显示详细输出) 等。来查看所有可用选项。5. 检查注册结果:注册完成后,你可以检查注册表以确保程序集已成功注册。如果你需要注册 Windows 注册表项,应该使用专门的注册表编辑器或通过编程方式 (如使用 C#的 Microsoft.Win32 命名空间) 进行操作。(搜索结果收录于 2024 年 9 月 24 日)
如何用 RegAsm.exe 在开发/生产环境中注册 C#/VB.NET 开发的 DLL
要执行 RegAsm.exe,请用管理员权限打开一个命令提示符窗口,并进行切换到到 RegAsm.exe 所在的文件夹并运行它 (否则将获得"RegAsm 不被识别为内部或外部命令,可操作的程序或批处理文件”错误消息)。(来自 2019 年 11 月 11 日的资料) RegAsm.exe 存在于.NET Framework 的不同版本路径下,根据版本选择正确的路径运行,且可能需要以管理员权限执行。(撰于 2021 年 7 月 20 日)
FAQ
regasm 注册失败常见原因是什么?
常见原因包括权限不足未使用管理员运行、.NET 版本不匹配导致 RegAsm 工具版本错误、以及 DLL 路径未正确切换等。
如何确认 regasm 是否注册成功?
注册完成后,可以检查注册表以确保程序集已成功注册,或使用专门的注册表编辑器查看相关项是否存在。