我的一个可执行文件将一些配置写入到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上尝试过此操作,但清单文件似乎被忽略,并且在没有足够权限的情况下启动了可执行文件。
答案 0 :(得分:3)
http://blogs.msdn.com/junfeng/archive/2009/05/11/internal-manifest-vs-external-manifest.aspx
引自上述链接: 在Windows XP中,Sx在内部清单之前搜索外部清单。如果找到外部清单,则忽略内部清单。
在Windows Server 2003及更高版本中,顺序相反。内部清单优于外部清单。
如果您使用外部清单,并且您的方案适用于Windows XP,但不适用于Windows Server 2003及更高版本,请仔细检查可执行文件是否没有内部清单
答案 1 :(得分:2)
这会让你感到沮丧 - 深入了解它并发布了一篇文章和一些实用工具来帮助你的清单被忽略:Find Out Why Your External Manifest Is Being Ignored。
答案 2 :(得分:0)
当我使用MT.EXE嵌入清单文件时,它可以正常工作。当我将清单作为单独的文件提供时,仍然不知道为什么它不起作用,但我想嵌入是一个足够好的解决方案。