.net - 使用 Reflector,为什么我看不到嵌入在 .NET 应用程序中的 app.manifest?

标签 .net visual-studio windows-vista uac reflector

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

作为 app.manifest 在我的解决方案中存在的后续内容(谁知道多久),它充满了我不确定是否还需要的各种 IPermissions。是什么向该文件添加了内容?它是否包含我不再需要的权限?是否应该修剪或管理?我应该明确添加 trustinfo 吗?我想 app.manifest 只是一个我需要了解更多的谜。

更新:来自 this article ,我了解到我可以使用 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>

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

最佳答案

Reflector 不允许您查看非托管资源。您不需要特殊的工具,只需使用 Visual Studio 的"file"+“打开”+"file"并选择您的 .exe 即可浏览资源。可通过 RT_MANIFEST 节点访问 list 。观众不是很友好,你会得到一个十六进制转储。您可以使用上下文菜单将其导出到文本文件。

C# 和 VB.NET 编译器自动生成 Vista 兼容 list 。您可以使用/win32manifest command line option覆盖它。当您使用“项目”+“添加新项”+“应用程序 list 文件”时,IDE 将自动执行此操作。

关于.net - 使用 Reflector,为什么我看不到嵌入在 .NET 应用程序中的 app.manifest?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/525829/

相关文章:

.net - 滚动你自己的消息循环,有什么陷阱吗?

c# - 为什么 Funcs 不接受超过 16 个参数?

c# - 将第 3 方 C++ DLL 引用到 VS 2013 项目中

windows - 如何检测 Windows 版本是否合法?

c - SendMessage WM_MOUSEMOVE 未按预期工作

在 Vista 上缓冲的 Tomcat 应用程序/catalina 日志,不能被跟踪

c# - 如何在列表上实现增量搜索

.Net 插件框架选择,启用定义插件顺序(包括链接插件)

c# - 如何在Visual Studio中隐藏自定义工具生成的文件

使用 complex.h 库在 Visual Studio 2013 中编译 C 代码