根据启用了UAC的Vista任务管理器,我有一个WinForms .NET应用程序,运行时虚拟化“禁用”,尽管我不记得在应用程序中添加了带有"asInvoker“的清单。\Properties\app.manifest (这个项目已经通过了所有四个版本的VS.NET)必须添加了我在解决方案资源管理器中看到的VS.NET文件,但是这个文件不包含我期望禁用虚拟化的trustinfo元素。因此,我启动了Reflector来查看可能嵌入到实际可执行文件中的内容,但是我找不到app.manifest文件。我应该能够在可执行文件中找到它的清单或符号吗?根据VS 2008,构建操作是BaseApplicationManifest,,但这是否意味着它没有嵌入到可执行的程序中?有人能解释为什么我的应用程序运行时没有虚拟化,如果我没有要求它,有人能指点我在我的应用程序中通过Reflector找到导致这个问题的神器吗?
作为app.manifest在我的解决方案中的后续,谁知道有多长时间,它充满了各种各样的IPermissions,我不确定我还需要什么。是什么增加了这个文件的内容,它能包含我不再需要的权限吗?应该修剪还是管理?我应该显式地向它添加信任信息吗?我想app.manifest只是一个谜,我需要了解更多。
更新:来自这篇文章的,我了解到我可以使用SysInternals/Microsoft实用程序查看以下信息,但我不知道我的应用程序是如何与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上看到这个呢?
发布于 2009-02-08 17:02:36
也许它是一个win32资源,因此不能被Reflector看到?您可以看到win32资源具有像这一个这样的win32资源编辑器。
发布于 2009-02-09 19:30:58
反射器不允许您看到非托管资源。您不需要特殊的工具,只需使用Visual的File + Open + File并选择您的.exe浏览资源即可。清单可以通过RT_MANIFEST节点访问。观众不是很友好,你会得到一个六角倾倒。可以使用上下文菜单将其导出到文本文件。
C#和VB.NET编译器自动生成与Vista兼容的清单。您可以用/win32manifest命令行选项覆盖这一点。这就是IDE在使用Project + Add New Item + Application Manifest File时将自动执行的操作。
https://stackoverflow.com/questions/525829
复制相似问题