读书人

何位朋友能帮忙把这个manifest补全?w

发布时间: 2013-12-11 16:44:13 作者: rapoo

哪位朋友能帮忙把这个manifest补全?win7的UAC使用

各位高手,我在网上查了一段知识,是关于manifest的,但是作者没有写完,各项也不明白是什么意思,有朋友了解这个manifest的各项吗?

Win7 UAC 与读写 Program Files
Redfox @ 2010-06-19 19:01

Win7 UAC 与读写 Program Files

最近有个程序运行时需要在当前目录下生成一个文件。开发时都一切正常。但安装到 Program Files 下时,一切就不那么正常了。文件是写了,保存也成功了,也能读出来。但文件目录下没这个文件。让我很是奇怪,文件哪去了?隐藏了?显示隐藏文件也没有!怪事了。网上一搜。原来是 Win7 开了 UAC 后,文件读写被重定向到 {userprofile}\AppData\... 去了。
问题也不是什么大事,但总是不爽。

网上搜了一下。在资源文件里加一个 manifest 如下定义

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>


1 24 uac.manifest 的方式编译到 exe 里。问题是解决了。但这样生成的 exe 有一个盾牌的图标。每次运行时会有一个提示,需要用管理员身份运行。有点不爽。

发现 Kugoo 之类的,用 Delphi 写的程序,为什么没有盾牌图标,运行也没提示,为什么可以读写 Program Files ?

测试若干。 发现是因为 exe 的权限不一样。

找到问题就好办了

首先 manifest 这样定义

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
type="win32"
name="CodeGear RAD Studio"
version="11.0.2852.9797"
processorArchitecture="*"/>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
publicKeyToken="6595b64144ccf1df"
language="*"
processorArchitecture="*"/>
</dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="asInvoker"

======================
作者没有写完:(
[解决办法]

<?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"
processorArchitecture="X86"
name="IsUserAdmin"
type="win32"/>
<description>Description of your application</description>
<!-- Identify the application security requirements. -->
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="requireAdministrator"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>

[解决办法]
参考:http://msdn.microsoft.com/en-us/library/windows/desktop/bb756929.aspx

读书人网 >.NET

热点推荐