我可以在没有管理员的情况下运行RegAsm吗?

时间:2010-10-21 20:51:01

标签: com

我的同事试图通过RegAsm.exe注册一些COM组件(我写的),并说它需要管理员权限。他的帐户具有管理员权限,但他没有以管理员身份登录。有没有办法使用他的常规用户帐户并成功完成此任务?

5 个答案:

答案 0 :(得分:10)

我在环境/司法管辖区工作,根本无法向所有用户提供本地管理员访问权限(法律/合规/法规不允许)。

在.NET世界中似乎没有这个函数的等价物:AtlSetPerUserRegistration

尝试此操作:使用regasm,使用/ regfile参数生成注册表项。默认情况下,注册表项应使用HKEY_CLASSES_ROOT(HKCR)作为根。修改条目(手动或脚本)以使用HKEY_CURRENT_USER(HKCU)。

最后,使用注册表脚本分发.NET DLL。您仍然可以在没有管理员权限的情况下运行regedit来注册.NET DLL。从命令行手动,使用批处理文件或(微小的)单独的安装程序可以处理注册。

答案 1 :(得分:3)

管理员权限是允许Regasm.exe更新注册表所必需的。如果这是UAC限制,则在桌面上为cmd.exe创建快捷方式,然后选中“以管理员身份运行此程序”复选框。或者在Visual Studio命令提示符快捷方式上更改此设置,这更容易。

答案 2 :(得分:3)

为什么不使用registration free com?它自2003年以来一直受到支持,并且不需要UAC /管理访问来安装COM组件。

使用RegFree COM,您可以将COM dll与将其用作私有程序集的应用程序捆绑在一起 - 但这并不意味着它们无法正确安装 - 无论是在注册表中还是在最终部署安装的WinSxS中.EXE / MSI


实际查询的子文本:否 - COM注册位于HKEY_LOCAL_MACHINE键中,始终需要管理员权限。


我撒了谎:其实你可以。如果您创建一个完全没有清单的应用程序,Windows会推断它是一个期望管理访问权限运行的XP时代应用程序,并将激活兼容模式,该模式除了其他功能外,还将对HKLM的写入权限重定向到HKCU下的可写位置。因此COM组件注册“成功” - 但仅为当前用户注册。

我不确定为什么通常在兼容性框架之外不支持仅注册当前帐户的能力。

答案 3 :(得分:2)

我认为这个问题属于其他地方,但Windows使用的权限最少,因此如果他是普通用户和管理员的用户,那么他获得普通用户权限。使用runas来完成这项工作或右键单击该项并“以管理员身份运行”

答案 4 :(得分:1)

  

我已登录拥有管理员权限的帐户。但是 RegAsm.exe 仍然表示它需要管理员权限。

[来自我的 Windows 2008 R2 的一些注意事项。 在支持UAC的其他Windows操作系统上进行确认。以下假设您可以更改 本地安全策略。 ]

在默认配置中,用户帐户控制(UAC)设置为本地管理员授予完全权限,但限制Administrators组其他成员的权限。要解除对管理员组其他成员的UAC限制,请执行以下操作:

  1. 选择开始 - > 所有程序 - > 管理工具 - > 本地安全政策
  2. 选择本地政策 - > 安全选项
  3. 在右侧面板中,双击底部的第三个条目,其中显示用户帐户控制:以管理员批准模式运行所有管理员
  4. 点击已停用
  5. 单击确定以关闭对话框并关闭本地安全策略配置工具。
  6. 重新启动计算机以完成对UAC设置的此更改。