我有一个VS2010解决方案,其中包含2个项目 - 一个.NET 4程序,以及一个安装程序.安装程序只是一个简单的安装项目,具有先决条件 - .NET Framework 4.
问题是我需要安装程序setup.exe始终以管理员身份运行,否则安装程序将在UAC下失败.(默认情况下,它不会提示我提升权限.)
我尝试将setup.exe.manifest(如下所示)与setup.exe一起强制以管理员身份运行,但不幸的是Windows忽略了它,很可能因为setup.exe本身已经嵌入了另一个清单文件而且它是设置为asInvoker而不是requireAdministrator.
<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
</asmv1:assembly>
Run Code Online (Sandbox Code Playgroud)
我还尝试添加具有以下属性的启动条件: -
(name): Elevated
Condition: Privileged
Message: This installation requires elevated permissions to continue.
Run Code Online (Sandbox Code Playgroud)
这也没有做任何事情.
那么有人可以阐明如何解决这个问题吗?
PS我知道您可以通过更改setup.exe的兼容性设置来解决此问题,但这是一个手动过程,无法通过自动构建过程(TFS)完成.此外,提供兼容性设置的快捷方式也很奇怪,因为没有人提供同一文件夹中setup.exe的快捷方式,更不用说快捷方式需要事先知道setup.exe的确切路径.(安装包将被移动.)
编辑:顺便说一句,我的问题与这里描述的问题完全相同.但遗憾的是,没有找到该人的解决方案,而提问者只是要求他的客户手动使用"以管理员身份运行",这正是我想要避免的.
我有一个应用程序将程序设置写入Windows注册表是绝对必要的.存储到文件不是一个选项.
为了简化这一点,我想提供一个"管理员权限"唠叨屏幕,而不是试图解释如何右键单击程序文件/捷径.
我找到了一篇相当不错的文章,但是在为清单添加自己的资源文件后,我收到了重复的资源错误.
这应该是由于与内部清单冲突并解决问题我看到很多评论建议在项目选项中禁用"启用运行时主题".我已经浏览了所有菜单,但找不到它,我现在被告知它可能在Delphi 7中不可用并且在以后的版本中引入.
我如何添加自己的清单?
我有一个不需要UAC警告的文件.我使用C#.NET将文件复制到另一个位置
File.Copy("Original.exe", "Copy.exe");
Run Code Online (Sandbox Code Playgroud)
现在我看到Copy.exe需要在Windows 7/Vista下运行UAC警告.
如何在Original.exe和Copy.exe之间进行比较,以确切了解文件发生了什么并手动更改,以便它不再需要UAC.我可以使用哪种工具来实现这一目标?

可执行的是同一个文件:如何知道这两个文件之间的区别?