我有一个 WinForms .NET 应用程序,根据启用了 UAC 的 Vista 任务管理器,即使我不记得向应用程序添加带有“asInvoker”的清单,它也会在虚拟化“已禁用”的情况下运行。VS.NET(这个项目已经通过了所有四个版本的 VS.NET)必须添加了我在解决方案资源管理器中看到的\Properties\app.manifest文件,但是这个文件不包含我希望禁用虚拟化的trustinfo元素. 所以我启动了 Reflector 以查看可能嵌入到我的实际可执行文件中的内容,但我找不到 app.manifest 文件。我应该能够在可执行文件中找到它的清单或标志吗?根据 VS 2008,构建动作是BaseApplicationManifest,但这是否意味着它没有嵌入到可执行文件中?如果我没有要求,有人可以解释为什么我的应用程序在禁用虚拟化的情况下运行,并且一旦解释,有人可以指出我在哪里找到通过反射器在我的应用程序中导致此问题的工件?
作为 app.manifest 在我的解决方案中的后续行动,谁知道多久,它充满了我不确定我是否需要的各种 IPermissions。什么向这个文件添加了内容,它是否可以包含我不再需要的权限?应该修剪还是管理?我应该明确添加 trustinfo 吗?我猜 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>
更新2:看起来我最终会到达那里。VS 2008在可执行文件的项目页面上添加了一个Manifest选项,我的项目为此选择了“使用默认设置嵌入清单”。所以这回答了它是如何到达那里的,但是我如何在 Reflector 中看到它呢?