需要在没有UAC弹出窗口的情况下提升权限

Eld*_*Mor 5 c# uac

我有一个应用程序,它是另一个应用程序(我的主要应用程序)的启动器.启动器进入FTP服务器,下载更新并安装它们.但是,更新可执行文件需要将一些DLL和EXE复制到主应用程序的安装目录中,该目录位于Program Files中.因此,我目前需要提升更新程序的权限.

这是一个问题,因为我的应用程序在启动时启动,并且通常只会加载到系统托盘(该应用程序与messenger/skype相当).如果我在尝试"静默"更新应用程序时开始在屏幕上弹出UAC警告,那就不再那么沉默了.

我现在看到的唯一避免问题的方法是向所有用户授予程序文件安装目录的权限,但我不愿意这样做.还有其他想法吗?

我使用的是Windows 7,应用程序都在C#中.

Ree*_*sey 12

这样做会违反用户访问控制的基本原则.

根据设计,无法在避免提示的同时提升权限.如果有办法做到这一点,UAC将变得毫无用处.


话虽这么说,你可以尝试围绕这个问题进行设计.您可能需要考虑制作一个执行更新的Windows服务,而不是使您的程序成为启动/系统托盘应用程序.这可以作为管理员在启动时运行(而不是登录),并且它已经以提升的权限运行.

如果您需要系统托盘应用程序,它可能是一个与服务"对话"的单独应用程序.