2009-09-18 114 views
2

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

我包含一个名为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

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

+1

antony是对的:检查你没有任何内置的可执行文件 - 然后Windows的loader会使用外部的。 – 2009-11-10 19:57:28

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