我的同事试图通过RegAsm.exe注册一些COM组件(这是我写的),它说他需要管理员权限。他的帐户具有管理员权限,但他没有以管理员身份登录。有没有办法使用他的常规用户帐户并成功完成这项任务?
发布于 2010-10-22 04:56:36
需要管理员权限才能允许Regasm.exe更新注册表。如果这是UAC的限制,则在桌面上为cmd.exe创建一个快捷方式,并选中“以管理员身份运行此程序”复选框。或者在Visual Studio命令提示符快捷方式上更改此设置,这会更容易。
发布于 2012-08-06 16:04:53
我工作的环境/辖区不可能为所有用户提供本地管理员访问权限(法律/合规/法规将不允许)。
在.NET世界中似乎没有与此函数等效的函数:AtlSetPerUserRegistration
尝试这样做:使用regasm,使用/regfile参数生成注册表项。默认情况下,注册表项应使用HKEY_CLASSES_ROOT (HKCR)作为根目录。修改条目(手动或通过脚本)以使用HKEY_CURRENT_USER (HKCU)。
最后,使用注册表脚本分发您的.NET DLL。您仍然可以在没有管理员权限的情况下运行regedit来注册您的.NET DLL。手动从命令行,使用一个批处理文件,或一个(微小的)单独的安装程序可以处理注册。
发布于 2010-10-22 16:27:40
为什么不使用registration free com呢?它是从2003年才开始支持的,因此不再需要UAC /管理访问权限来安装COM组件。
使用RegFree COM,您可以将COM dlls与将它们作为私有程序集使用的应用程序捆绑在一起-但这并不意味着它们不能正确安装-无论是在注册表中还是在WinSxS中由最终部署install.exe/msi
Subtext wrt实际查询:无COM注册位于始终需要管理访问权限的HKEY_LOCAL_MACHINE键中。
我说谎了:事实上你可以。如果您创建了一个完全没有清单的应用程序,Windows会推断这是一个XP时代的应用程序,该应用程序需要管理访问权限才能运行,并将激活兼容模式,其中包括将对HKLM的写入访问权限重定向到HKCU下的可写位置。因此,COM组件注册“成功”-但仅为当前用户注册。
我不确定为什么在兼容性框架之外通常不支持仅注册当前帐户的功能。
https://stackoverflow.com/questions/3991806
复制相似问题