regasm是不是必须使用管理员权限?

西波 温 1 信誉分
2026-04-22T06:10:20.8933333+00:00

用regasm注册com dll

很简单的一个小class做实验,总是提示要求管理员权限。

但是如果用管理员权限,那么就会写入HKLM而不是HKCU(HKEY_CURRENT_USER)

如果使用输出reg文件再手工改成HKEY_CURRENT_USER\software\classes 的方法,那么原代码中的ComRegisterFunction就不会被调用。

问了几个ai,有的说必须用管理员权限,有的说不用。

好几个ai说用/user参数,问题是regasm根本没有这个参数。

Windows 开发 | Windows 应用 SDK
0 个注释 无注释

1 个答案

排序依据: 非常有帮助
  1. Danny Nguyen (WICLOUD CORPORATION) 8,725 信誉分 Microsoft 外部员工 审查方
    2026-04-22T10:46:13.8233333+00:00

    你好 @西波 温

    regasm 本身没有 /user 参数(/userregsvr32 的参数,不是 regasm 的)。

    是否需要管理员权限取决于 COM 注册写到哪里:

    • 机器范围注册(HKLM\Software\Classes\...)需要管理员权限
    • 用户范围注册(HKCU\Software\Classes\...)不需要管理员权限

    我在 Windows 上做了测试:

    • 在非管理员命令提示符下运行: RegAsm.exe ComTest.dll /codebase 会失败,并提示:“写入注册表时发生错误。使用所选选项需要管理员权限…”
    • 在管理员命令提示符下运行相同命令会成功(“Types registered successfully”),并且会在下面位置创建 CLSID 相关项: HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes\\CLSID\\{guid}

    另外,把输出导出成 .reg 文件再手动导入,并不会执行 [ComRegisterFunction]——这些方法只会在 regasm 进行注册/反注册时被调用。

    如果您觉得此回复有帮助且信息充分,欢迎参考相关指南操作:查看指南 或提供反馈。感谢您的支持。

    此答案是否有帮助?


你的答案

提问者可以将答案标记为“已接受”,审查方可以将答案标记为“已推荐”,这有助于用户了解答案是否解决了提问者的问题。