2

我的一个可执行文件将一些配置写入到 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 上试过这个,但清单文件似乎被忽略了,并且可执行文件在没有足够权限的情况下启动。

4

3 回答 3

3

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 及更高版本,请仔细检查可执行文件没有内部清单

于 2009-10-14T03:05:31.590 回答
2

这会让你发疯 - 深入了解它并发布了一篇文章和一些实用程序来帮助你的清单被忽略:找出你的外部清单被忽略的原因

于 2011-01-07T02:25:18.403 回答
0

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

于 2009-09-18T14:09:10.023 回答