我有一个不需要 UAC 警告的文件。我使用 C#.NET 将文件复制到另一个位置
File.Copy("Original.exe", "Copy.exe");
现在我看到 Copy.exe 需要 UAC 警告才能在 Windows 7/Vista 下运行。
我如何在 Original.exe 和 Copy.exe 之间进行比较,以准确查看文件发生了什么并手动更改它,使其不再需要 UAC。我可以使用哪个工具来实现这一目标?

两个可执行文件是同一个文件:如何知道这两个文件之间的区别?
我有一个不需要 UAC 警告的文件。我使用 C#.NET 将文件复制到另一个位置
File.Copy("Original.exe", "Copy.exe");
现在我看到 Copy.exe 需要 UAC 警告才能在 Windows 7/Vista 下运行。
我如何在 Original.exe 和 Copy.exe 之间进行比较,以准确查看文件发生了什么并手动更改它,使其不再需要 UAC。我可以使用哪个工具来实现这一目标?

两个可执行文件是同一个文件:如何知道这两个文件之间的区别?
WindowsInstaller Detection Technology是这种行为的原因。有一组条件强制可执行文件被视为需要管理员权限:
- 32 位可执行文件
- 没有请求执行级别的应用程序
- 在启用 LUA 的情况下作为标准用户运行的交互式进程
在创建 32 位进程之前,会检查以下属性以确定它是否是安装程序:
- 文件名包括“安装”、“设置”、“更新”等关键字。
- 以下版本控制资源字段中的关键字:供应商、公司名称、产品名称、文件描述、原始文件名、内部名称和导出名称。
- 嵌入在可执行文件中的并排清单中的关键字。
- 可执行文件中链接的特定 StringTable 条目中的关键字。
- 可执行文件中链接的 RC 数据中的关键属性。
- 可执行文件中的目标字节序列。
相关 MSDN 文章:http ://technet.microsoft.com/en-us/library/cc709628%28WS.10%29.aspx
可能的解决方案:
requestedExecutionLevelmt例如,或者一些通用资源编辑器)添加或修改清单update,install并setup在可执行文件名中复制文件后,尝试像这样设置文件的 acl:
var file = new FileInfo("copy.exe")
var fileSecurity = file.GetAccessControl();
fileSecurity.AddAccessRule(new FileSystemAccessRule(new SecurityIdentifier(WellKnownSidType.WorldSid, null),
FileSystemRights.FullControl,
AccessControlType.Allow));
file.SetAccessControl(fileSecurity);
您可能会发现问题出在位置而不是文件上。Win 7 非常挑剔,特别是如果您尝试更改 Program Files 下的任何内容。
您是否尝试将原始文件放在新位置以检查是否还需要 UAC 批准?