使用反射器,为什么可以';我看不到嵌入在我的.NET应用程序中的app.manifest吗?

使用反射器,为什么可以';我看不到嵌入在我的.NET应用程序中的app.manifest吗?,.net,visual-studio,windows-vista,uac,reflector,.net,Visual Studio,Windows Vista,Uac,Reflector,我有一个WinForms.NET应用程序,根据启用UAC的Vista任务管理器,该应用程序在虚拟化“禁用”的情况下运行,尽管我不记得在应用程序中添加了带有“asInvoker”的清单。VS.NET(此项目已通过VS.NET的所有四个版本)必须添加了我在解决方案资源管理器中看到的\Properties\app.manifest文件,但此文件不包含我希望禁用虚拟化的trustinfo元素。因此,我启动了Reflector以查看实际可执行文件中可能嵌入的内容,但我找不到app.manifest文件。我

我有一个WinForms.NET应用程序,根据启用UAC的Vista任务管理器,该应用程序在虚拟化“禁用”的情况下运行,尽管我不记得在应用程序中添加了带有“asInvoker”的清单。VS.NET(此项目已通过VS.NET的所有四个版本)必须添加了我在解决方案资源管理器中看到的\Properties\app.manifest文件,但此文件不包含我希望禁用虚拟化的trustinfo元素。因此,我启动了Reflector以查看实际可执行文件中可能嵌入的内容,但我找不到app.manifest文件。我应该能够在可执行文件中找到它的清单或标志吗?根据VS2008,构建操作是BaseApplicationManifest,但这是否意味着它没有嵌入到可执行表中?如果我没有要求,有人能解释为什么我的应用程序在禁用虚拟化的情况下运行吗?一旦解释完毕,有人能告诉我在哪里可以通过Reflector在我的应用程序中找到导致这种情况的工件吗

作为app.manifest在我的解决方案中存在了多长时间的后续,它充满了各种各样的iPermission,我不确定我还需要什么。是什么将内容添加到此文件,并且它是否可以包含我不再需要的权限?应该修剪还是管理?我是否应该明确地向其中添加信任信息?我想app.manifest只是一个谜,我需要了解更多

更新:从中,我了解到我可以使用SysInternals/Microsoft 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>
c:\Users\Public\Programs\SysinternalsSuite>sigcheck.exe-m ceo.exe
sigcheck v1.54-sigcheck
版权所有(C)2004-2008 Mark Russinovich
Sysinternals-www.Sysinternals.com
“c:\Users\Public\Programs\SysinternalsSuite\ceo.exe”:
已验证:未签名
存档日期:2009年2月6日下午1:47
出版商:首席执行官图像系统
说明:主菜单
产品:形象执行总裁
版本:2.0.0.0
文件版本:2.0.0.0
显示:

更新2:看来我最终会到达那里。VS 2008在可执行文件的项目页面上添加了一个清单选项,我的项目为该选项选择了“使用默认设置嵌入清单”。这就回答了它是如何到达那里的,但是我如何在Reflector中看到它呢?

也许它是一个win32资源,因此Reflector无法看到它?您可以使用win32资源编辑器查看win32资源,如。

Reflector不允许您查看非托管资源。您不需要特殊的工具,只需使用VisualStudio的File+Open+File并选择您的.exe即可浏览资源。可通过RT_清单节点访问清单。观众不是很友好,你会得到一个十六进制转储。可以使用关联菜单将其导出到文本文件


C#和VB.NET编译器会自动生成与Vista兼容的清单。您可以使用。当您使用Project+Add New Item+Application Manifest File时,IDE将自动执行此操作。

如果您说我可以使用VS.NET查看非托管资源,您肯定会得到+1。是的,这是一种非托管资源,VS.NET只需打开可执行文件即可显示(感谢nobugz)。