2017-08-15 48 views
-1

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

我目前的解决办法是干脆直接安装到C:/,但我想将其安装到所有其他应用程序安装到没有这个挫折相同的Program Files目录。

+0

请一次问一个问题,而不是两个不相关的问题 –

+0

我不知道你所说的“不具有这个挫折其他应用程序”的意思。任何安装到Program Files的安装程序都会生成一个UAC提示。这就是预期的行为 - 如果您不是管理员,则无法在Program Files中安装软件。 –

+0

我删除了另一个问题。通过“没有这个挫折的其他应用程序”我想我的意思是“没有外部库/应用程序,不提示管理员权限的其他应用程序” – zakparks31191

回答

3

受限用户无法绕过安全限制,只是因为他们正在运行一个安装。写入ProgramFiles文件夹需要提升(也许还有其他一些安装过程),所以除了提升安装外别无选择 - 它将显示UAC提升提示。你还没有说过你用什么工具来构建你的MSI,但是MSI没有使用清单,并且(以WiX为例),提升使用Package InstallPrivileges元素。

用户并不需要admin因为UAC提示将允许管理员将其凭据键入“过肩”的安装工作,如果原来是可能的。在企业类型GPO安装中也有托管部署选项,用户无需升级。

具有MSI打电话给你的代码需要创建安装将调用自定义操作 - 它有一个需要调用约定。然后你可以从那里调用你的第三方C++ DLL。不知道更多关于您想要添加更多信息的呼叫。在安装过程中是否打过电话(可能是用户界面)?安装后?这是安装的条件吗?安装完成后,它可以作为应用程序中的配置检查完成吗?

+0

这是有道理的。我想就上下文而言,这是我做过的第一个VS安装程序项目,所以我不确定一些事情。 那么UAC提示只会在第一次启动时出现?使用默认的VS 2010安装程序项目,在启动程序时没有UAC提示,只会启动并挂起。 – zakparks31191

相关问题