【问题标题】:UAC: Manifest file is ignoredUAC:清单文件被忽略
【发布时间】:2009-09-18 12:35:46
【问题描述】:

我的一个可执行文件将一些配置写入到 C:\Program Files\MyApp\config.xml 的 XML 文件中。它需要在 Vista / Server 2008 上以管理员身份运行,否则操作系统不会让它写入该位置。

我包含了一个名为 config.exe.manifest 的清单文件,用于在启动时自动请求管理权限。

这是我的清单文件:

<?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="requireAdministrator" />
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>

我在 Windows Server 2008 上尝试过此操作,但清单文件似乎被忽略,可执行文件在没有足够权限的情况下启动。

【问题讨论】:

    标签: windows-server-2008 uac windows-vista manifest


    【解决方案1】:

    http://blogs.msdn.com/junfeng/archive/2009/05/11/internal-manifest-vs-external-manifest.aspx

    引用自以上链接: 在 Windows XP 中,Sxs 在内部清单之前搜索外部清单。如果找到外部清单,则忽略内部清单。

    在 Windows Server 2003 及更高版本中,顺序相反。内部清单优先于外部清单。

    如果您使用外部清单,并且您的方案适用于 Windows XP,但不适用于 Windows Server 2003 及更高版本,请仔细检查可执行文件没有内部清单

    【讨论】:

      【解决方案2】:

      这会让你发疯 - 深入了解它并发布了一篇文章和一些实用程序来帮助你的清单被忽略:Find Out Why Your External Manifest Is Being Ignored

      【讨论】:

        【解决方案3】:

        好的,当我使用 MT.EXE 嵌入清单文件时它可以工作。仍然不明白为什么当我将清单作为单独的文件提供时它不起作用,但我想嵌入是一个足够好的解决方案。

        【讨论】:

        • antony 是对的:检查您没有在可执行文件中内置 any 清单 - 然后 Windows 的加载器将使用外部的。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-11-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多