2009-02-08 59 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

相关问题