2009-09-18 116 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及更高版本,請仔細檢查可執行文件不具有內部清單