我们正在创建一个C#.net应用程序,它使用开发的.dll文件 C ++。它还需要由第三方开发的一些用户控件 (与应用程序捆绑为.dll。)如果我们运行此应用程序 启用了UAC的计算机,它按预期执行。但是,如果我们 使用通过Visual Studio部署创建的安装程序部署它 项目,它崩溃了。如果安装的可执行文件是“运行方式” 管理员“它有效。 此外,如果添加了需要管理员权限的清单 安装后,C#可执行文件运行正常,但是UAC要求 每次运行exectable时都获得权限。 是否可以指定始终以管理员身份运行 没有每次UAC弹出窗口或安装程序更改此类 它不需要管理员权限安装后运行 (因为应用程序如果在没有安装的情况下运行则不需要admin 特权)?
答案 0 :(得分:3)
显然,如果没有UAC提示,则无法以管理员身份运行。这将使恶意软件编写者的生活变得容易。
我怀疑它的安装位置很重要。通常是在\ Program Files \下,这也是它的默认工作目录。但是,在非管理员帐户下运行时,程序可能无法在那里写入。 DLL是否可能尝试写入当前工作目录?
答案 1 :(得分:0)
实际上有一个解决方案。将需要提升的代码驱逐到Windows服务。然后,您的应用程序可以调用您的服务来运行提升的命令(使用WCF,RPC,远程处理或任何您想要的任何内容)。
但你必须小心:
答案 2 :(得分:0)
如前所述,如果在应用程序清单中请求管理员权限,则在应用程序启动期间无法绕过UAC提示符。
您可以使用解决方法:安装期间,为日志文件或文件夹中的每个人设置写入权限。
请注意,这不是一个“干净”的解决方案。相反,你应该改变DLL的代码,以便在其他地方登录。