2009-02-08 55 views
2

我有一個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選項,我的項目選擇了「嵌入清單與默認設置」。所以這回答它如何到達那裏,但我怎麼能看到這在反射器?

回答

3

也許這是一個win32資源,因此反射器無法看到?您可以使用win32資源編輯器(如this one)查看win32資源。

+1

是的,它是一個非託管資源,VS.NET可以通過打開可執行文件來顯示(感謝那個版本的nobugz)。 – flipdoubt 2009-02-10 04:16:36

8

反射器不會讓您看到非託管資源。您不需要特殊工具,只需使用Visual Studio的File + Open + File並選擇您的.exe即可瀏覽資源。清單可以通過RT_MANIFEST節點訪問。觀衆不是很友善,你會得到一個十六進制轉儲。您可以使用上下文菜單將其導出到文本文件。

C#和VB.NET編譯器自動生成Vista兼容的清單。你可以用/win32manifest command line option覆蓋它。當您使用Project +添加新項目+應用程序清單文件時,IDE將自動執行的操作。

+0

你肯定會說+1我可以使用VS.NET查看非託管資源。 – flipdoubt 2009-02-10 04:15:23

相關問題