如何在VS安装程序项目中使用非托管DLL,但用户不需要管理员权限?



我正在为 C# 项目创建一个安装程序。它需要非托管的第三方C++ dll 才能连接到硬件设备。当我从调试器运行项目时,或者当我右键单击 -> 以管理员身份运行时,一切都正常。但是,如果我不以某种方式以管理员身份运行它,它会崩溃。那么如何将安装程序设置为不需要管理员权限即可运行呢?我知道我可以将 app.manifest 中的requestedExecutionLevel设置为requireAdministrator,但我不希望每次都出现 UAC 提示,而且我不确定最终用户的计算机是否能够以管理员身份运行任何内容。

我目前的解决方法是将其直接安装到 C:/,但我想将其安装到所有其他没有此挫折的应用程序安装到的同一程序文件目录中。

受限用户无法仅仅因为正在运行安装而规避安全限制。写入 ProgramFiles 文件夹需要提升(安装所做的其他一些事情可能也是如此(,因此除了提升安装之外别无选择,它将显示 UAC 提升提示。 你还没有说明你使用什么工具来构建你的MSI,但MSI不使用清单,并且(以WiX为例(提升使用包安装特权元素。

用户不需要是管理员,因为 UAC 提示将允许管理员"在肩膀上"键入其凭据以使安装正常工作(如果事实证明这是可能的(。在不需要提升用户的企业类型 GPO 安装中,还有托管部署选项。

让 MSI 调用代码需要创建安装将调用的自定义操作 - 它具有必需的调用约定。然后,您可以从该调用到您的第三方C++ Dll。如果不了解有关要使呼叫的更多信息,则很难添加更多信息。调用是否在安装早期(也许来自 UI(?安装后?这是安装的条件吗?安装后是否可以在应用程序中进行配置检查?

相关内容

最新更新