繁体   English   中英

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

[英]How to use an unmanaged DLL in VS installer project, but without the user needing admin rights?

我正在为C#项目创建安装程序。 它需要不受管理的第三方C ++ dll才能连接到硬件设备。 当我从调试器运行项目时,或在已安装的程序上右键单击->以管理员身份运行时,一切正常。 但是,如果我不以某种管理员身份运行它,它将崩溃。 那么,如何将安装程序设置为无需管理员权限即可运行? 我知道我可以设置requestedExecutionLevel在app.manifest到requireAdministrator ,但我不希望UAC提示每一次,我不知道最终用户的机器将能够运行任何东西作为管理员。

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

受限制的用户不能仅仅因为他们正在运行安装来规避安全性限制。 写入ProgramFiles文件夹需要提升权限(安装可能还会做其他事情),因此除了提升安装之外别无选择-它将显示UAC提升提示。 您没有说过要使用什么工具来构建MSI,但是MSI不使用清单,并且(以WiX为例)高程使用Package InstallPrivileges元素。

用户不需要成为管理员,因为如果可能的话,UAC提示符将允许管理员“凭空”键入其凭据以使安装正常进行。 公司类型的GPO安装中还有托管部署选项,不需要提升用户。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM