建荣's profile空谷清音PhotosBlogLists Tools Help

Blog


    October, 2006

    vista下程序的权限

    在win2000/xp下,大家对注册表的操作一般情况下都会成功,但是在vista下,即使你以administrator登录,也不能成功的操作。从微软的官方网站上,可以了解到vista对于权限的控制更加的严格了,administrator用户登录,不代表所有的程序都拥有administrator的权限(http://www.microsoft.com/technet/windowsvista/security/uac.mspx)。
          那么,如何在vista下,让自己的程序能够对注册表进行正常的操作呢?第一个方法就是对程序文件的属性进行设置,把run this program as administrator勾上。第二个方法就需要对自己的程序作一些修改了:为自己的程序添加mainfest:
     
    <requestedExecutionLevel
       level="asInvoker|highestAvailable|requireAdministrator"
       uiAccess="true|false"/>
     
    按照这篇文章上介绍的,给程序加入了mainfest:
     
    <?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.v3">
        <security>
          <requestedPrivileges>
            <requestedExecutionLevel
              level="requireAdministrator"
              uiAccess="false"/>
            </requestedPrivileges>
           </security>
      </trustInfo>
    </assembly>
    

    但是在实际的结果中,发现还是不行,这回程序彻底不能被运行了。在此翻阅msdn,找到了一篇帖子:http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=463884&SiteID=1

    其中对于这个问题进行了讨论,把xmlns的v3修改为v2即可,不知道微软的官方网站是否会给出这方面的说明呢。