首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

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

2013-12-11 
哪位朋友能帮忙把这个manifest补全?win7的UAC使用各位高手,我在网上查了一段知识,是关于manifest的,但是作

哪位朋友能帮忙把这个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

热点排行