在没有管理员权限的情况下使用 .NET 框架部署应用程序

Posted

技术标签:

【中文标题】在没有管理员权限的情况下使用 .NET 框架部署应用程序【英文标题】:Deploying application with .NET framework without admin privileges 【发布时间】:2018-02-20 13:13:45 【问题描述】:

免责声明:如果此问题不属于 SO,请提示将其移至何处。

大家好,

我工作的公司开发了一个应用程序,随着时间的推移积累了一堆依赖项:

.NET 3.5 更新 .NET 4.0 更新 VC++ Redist 2010 VC++ Redist 2013 VC++ Redist 2015 我们的专有设备驱动程序

然后将所有内容打包到 Inno Setup 可执行文件中并分发给客户端。最近,有人指出需要自动更新机制,这导致我们遇到权限问题。以下是我需要满足的一些产品需求(但不知道如何满足):

安装程序(和产品)必须支持旧版硬件和软件(读取为 Windows XP 及更高版本) 安装(包括自动更新安装)可能需要管理员登录一次(在首次安装期间)。这意味着自动更新安装程序必须能够在非管理员帐户下静默运行。 安装程序应安装到 commonappdata 文件夹(锁定),并且最终应用程序的行为应相同 依赖项必须包含在应用程序安装程序中。它们不需要包含在自动更新安装程序中。

乍一看,这似乎微不足道,但我尝试的每一种组合,在安装期间或更新时都会遇到“拒绝访问”消息。有谁知道这样做的可靠方法吗?

【问题讨论】:

【参考方案1】:

如果没有管理员权限,您无法更新安装到仅管理员文件夹的应用程序。

实现此类应用程序自动更新的唯一方法是实现 Windows 更新、Mozilla 维护服务、Google Chrome 提升服务、Adobe Acrobat 更新服务和类似服务所做的:

使用管理员权限首次安装时,安装具有管理员权限的服务。 要么让服务本身定期检查更新并启动自动更新; 或者,如果您需要以其他方式触发更新,请为某人(例如,在没有管理员权限的情况下运行的应用程序本身)可以调用的服务实现 API 以触发自动更新。

将具有管理员权限的服务安装到客户端系统是一个巨大的漏洞。因此,如果您决定这样做,请确保 200% 正确,不要在客户端系统中引入漏洞。


相关问题:

Choose right Windows directory to install software and allow auto-updates How to automatically update an application installed with Inno Setup

【讨论】:

以上是关于在没有管理员权限的情况下使用 .NET 框架部署应用程序的主要内容,如果未能解决你的问题,请参考以下文章

部署和配置 ODP.NET 以在不安装实体框架的情况下工作

在 Excel VBA 中调用没有管理权限的 COM 互操作 regasm

萌贝树没有坑骗-server 部署

尝试在没有太多运气的情况下部署实体框架代码优先应用程序?最佳部署策略?

在没有管理员访问权限的情况下使用 Python 获取 CPU 和 GPU 温度 - Windows

Just-In-Time调试器在没有必要的安全权限的情况下启动