我有一個WinForms .NET應用程序,根據啓用了UAC的Vista任務管理器,即使我不記得在應用程序中添加帶「asInvoker」的清單,也會運行虛擬化「Disabled」。 VS.NET(這個項目已經通過了VS.NET的所有四個版本)必須添加我在解決方案資源管理器中看到的文件\ Properties \ app.manifest但是這個文件不包含trustinfo元素我會擁有預計會禁用虛擬化。所以我啓動了Reflector來查看可能嵌入到我的實際可執行文件中的內容,但是找不到app.manifest文件。我應該能夠在可執行文件中找到它的清單或標誌嗎?根據VS 2008,構建動作是BaseApplicationManifest,但這是否意味着它沒有嵌入可執行文件?有人可以解釋爲什麼我的應用程序運行時禁用了虛擬化,如果我沒有問它,並且一經解釋,是否有人可以指向我通過Reflector在我的應用程序中找到導致此問題的工件的位置?使用Reflector,爲什麼我看不到在我的.NET應用程序中嵌入的app.manifest?
作爲app.manifest在我的解決方案中的後續行動,知道誰知道多久,它充滿了各種IPermissions,我不知道我需要更多。什麼內容添加到這個文件,並可以包含我不再需要的權限?是否應該修剪或管理?我應該明確添加trustinfo嗎?我想app.manifest只是我需要進一步瞭解的一個謎。
更新:從this article,我意識到,我可以使用的Sysinternals /微軟Sigcheck實用程序,請參見下面的信息,但我不知道我的應用程序是怎麼用MyApplication.app簽署。構建過程中發生了什麼?
c:\Users\Public\Programs\SysinternalsSuite>sigcheck.exe -m ceo.exe
sigcheck v1.54 - sigcheck
Copyright (C) 2004-2008 Mark Russinovich
Sysinternals - www.sysinternals.com
"c:\Users\Public\Programs\SysinternalsSuite\ceo.exe":
Verified: Unsigned
File date: 1:47 PM 2/6/2009
Publisher: CEO Image Systems
Description: Main Menu
Product: Image Executive CEO
Version: 2.0.0.0
File version: 2.0.0.0
Manifest:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<requestedExecutionLevel level="asInvoker" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
更新2:看起來我會實現這個目標最終。 VS 2008在可執行文件的項目頁面上添加了一個Manifest選項,我的項目選擇了「嵌入清單與默認設置」。所以這回答它如何到達那裏,但我怎麼能看到這在反射器?
是的,它是一個非託管資源,VS.NET可以通過打開可執行文件來顯示(感謝那個版本的nobugz)。 – flipdoubt 2009-02-10 04:16:36