7zip - 自解压可执行文件需要管理员权限并触发兼容性警告

Mr.*_*Boy 8 windows-7 uac self-extracting 7-zip

当我使用 7zip 为 Windows 创建自解压存档可执行文件时,.EXE 会在 Windows7 上触发 UAC。经常在解压后,我得到这个:

在此处输入图片说明

我使用的命令行,如:7z a -sfx7z.sfx dir\。为什么会发生这些事情,我可以修复它们吗?

std*_*err 3

您可能想禁用此警告,如果是这样,请按照以下步骤操作。

  1. 打开服务管理器(按 + R,键入services.msc并点击Enter)。
  2. Program Compatibility Assistance Service在列表中搜索。
  3. 右键单击此服务并选择Stop
  4. 现在再次右键单击Program Compatibility Assistance Service并选择Properties
  5. General在该部分的选项卡下Startup type,单击下拉菜单并选择Disabled
  6. 点击Apply然后OK

注意:程序兼容性帮助监视程序的已知兼容性问题,这对最终用户非常有益。本技巧针对高级用户。


另一种方法probable solution是嵌入清单文件以避免此警报。像这样的东西:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
  <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
    <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> 
      <application> 
        <!--The ID below indicates application support for Windows 7 --> 
          <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/> 
      </application> 
    </compatibility>
  </assembly>
Run Code Online (Sandbox Code Playgroud)

如何将其嵌入application manifest到我的可执行文件中?

您可以使用 Microsoft 的此实用程序(mt.exe- 假设您已安装 sdk)来执行此操作。您可以使用类似的命令,如下所示:

mt.exe  -manifest "foo.manifest" -outputresource:"foo.exe";#1
Run Code Online (Sandbox Code Playgroud)

其他考虑因素

  • 考虑使用此程序(7z SFX-Creator),根据此页面:创建的自解压存档将不再引起警报 PCA
  • 看看IExpress对您是否有用 在此输入图像描述