如何使用 InstallShield 在没有管理员权限的情况下为每个用户注册互操作 .net 程序集

2024-01-20

我正在执行一项任务,在使用 installshield 安装期间注册 .net 程序集时,不提示普通用户弹出窗口(UAC)以批准安装 Windows Addin 应用程序。在 Windows XP 上,它工作正常,但在 Vista 和 Windows 7 上安装时,会弹出一个弹出窗口以供批准。按照要求,是不应该来的。如果 UAC 已打开并在没有管理员权限的情况下为每个用户注册程序集,是否有任何方法可以绕过 vista 和 windows 7 上的此弹出窗口?

请帮忙?

谢谢。


实际上,COM 可以按用户或按计算机注册,因为 HKEY_CLASSES_ROOT 是从 HKEY_CURRENT_USER\Software\Classes 和 HKEY_LOCAL_MACHINE\Software\Classes 派生的视图。如果运行 regasm /regfile:foo.dll,您可以生成一个 regfile,然后更改键名称中的所有引用,使其成为当前用户的本地文件。

在生成的 .reg 文件中,所有 reg 键添加都将添加到 HKEY_CLASSES_ROOT 中。您需要将它们替换为“HKEY_CURRENT_USER\Software\Classes”。

此外,如果您需要 COM 注册才能使用 32 位应用程序并且运行的是 x64,那么对于 HKEY_CLASSES_ROOT\CLSID 的添加,您需要在 CLSID 标记之前插入“\Wow6432Node”。

需要明确的是,“HKEY_CLASSES_ROOT\CLSID”的添加变为“HKEY_CURRENT_USER\Software\Classes\Wow6432Node\CLSID”。要使其在 x86 上工作,您只需对 CLSID 条目进行此更改。

另外,在某些情况下,您可以考虑通过为消耗 COM 服务器的 EXE 创建清单文件来使用注册免费 COM 互操作,以使 ProgID/ClassID 可用于 EXE,而无需实际将注册信息写入注册表。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 InstallShield 在没有管理员权限的情况下为每个用户注册互操作 .net 程序集 的相关文章

随机推荐