Com 我可以在不担任管理员的情况下运行RegAsm吗?

Com 我可以在不担任管理员的情况下运行RegAsm吗?,com,Com,我的同事试图通过RegAsm.exe注册一些COM组件(我写的),它说他需要管理员权限。他的帐户具有管理员权限,但未以管理员身份登录。有没有办法使用他的常规用户帐户并成功完成此任务?我认为这个问题属于其他地方,但Windows使用的权限最少,因此,如果他是一个既是普通用户又是管理员的用户,他将获得普通用户权限。使用runas进行此操作,或者右键单击该项目,并且需要“以管理员身份运行”管理员权限才能允许Regasm.exe更新注册表。如果这是UAC限制,则在桌面上为cmd.exe创建快捷方式,并选

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

我认为这个问题属于其他地方,但Windows使用的权限最少,因此,如果他是一个既是普通用户又是管理员的用户,他将获得普通用户权限。使用runas进行此操作,或者右键单击该项目,并且需要“以管理员身份运行”管理员权限才能允许Regasm.exe更新注册表。如果这是UAC限制,则在桌面上为cmd.exe创建快捷方式,并选中“以管理员身份运行此程序”复选框。或者在Visual Studio命令提示符快捷方式上更改此设置,这样更容易。

为什么不使用?它自2003年以来才得到支持,因此无需UAC/管理访问即可安装COM组件

使用RegFree COM,您可以将COM DLL与将其作为专用程序集使用的应用程序捆绑在一起,但这并不意味着它们无法正确安装-通过最终部署install.exe/msi在注册表或WinSxS中安装


潜台词描述了实际的查询:no-COM注册在HKEY_LOCAL_机器密钥中,该密钥始终需要管理访问权限


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


我不知道为什么在兼容框架之外通常不支持仅注册当前帐户的功能。

我工作的环境/司法管辖区根本不可能为所有用户提供本地管理员访问权限(法律/合规/法规不允许)

在.NET world中似乎没有类似的函数:

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

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

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

[根据我对Windows 2008 R2的一些说明。在支持UAC的其他Windows操作系统上确认。以下假设允许您更改本地安全策略。]

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

  • 选择启动->所有程序->管理工具->本地安全策略
  • 选择本地策略->安全选项
  • 在右侧面板中,双击底部的第三个条目,其内容为用户帐户控制:在管理员批准模式下运行所有管理员
  • 单击禁用
  • 单击确定关闭对话框并关闭本地安全策略配置工具
  • 重新启动计算机以完成对UAC设置的更改