我有一个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选项,我的项目选择了“嵌入清单与默认设置”。所以这回答它如何到达那里,但我怎么能看到这在反射器?
是的,它是一个非托管资源,VS.NET可以通过打开可执行文件来显示(感谢那个版本的nobugz)。 – flipdoubt 2009-02-10 04:16:36