防止未签名的应用程序提升 (UAC)

防止未签名的应用程序提升 (UAC)

我正在制作一个 .manifest 文件,所以 Win7 不会用 UAC 来打扰我,因为它是一个未签名的应用程序。(该应用程序很旧,不会升级)

我尝试了网上的几种方法,但都没有用

<?xml version="1.0" encoding="utf-8"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel level="asInvoker" />
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>

我还研究过:

  • 应用程序兼容性工具包(作为这个问题建议),但是太麻烦而且没有解决问题。
  • 这个问题类似,但最终解决了该特定产品的问题(Crimson Editor)

您知道如何制作 .manifest XML 文件以便未签名的应用程序在没有警告的情况下运行吗?

答案1

据我所知,在 Vista 中,任何没有清单的应用程序都不会被提升(但会被虚拟化)。但运行它不会调用安全桌面,除非您执行“以管理员身份运行”。

您给出的示例清单只会确保 Vista 知道您的应用支持 Vista。“作为调用者”表示您的应用不需要管理员权限。但直到您将其设置为“需要管理员”,它才会显示 UAC 提示。(我回答的是 Vista,因为我曾使用过它。我认为 Windows 7 也会有类似的行为)。

答案2

您在这里实际上是在问 UAC 中的漏洞。此类漏洞通常在被发现后由 Microsoft 修补...
在我看来,对这个旧的可执行文件进行数字签名是一个更持久的解决方案。
签名可以在任何现有的可执行文件上进行,并且不需要重新链接或重新编译,也不需要了解任何特殊信息。应用程序签名证书每年只需花费几百美元。

相关内容