• 关于软件开发中兼容win7注册表的解决方案


                          关于软件开发中兼容win7注册表的解决方案  

     

    编写人:CC阿爸

     

    2014-3-14

     

    l  近来在开发一winform程序时,发现在xp 系统访问注册表一切正常。可偏这个时候,微软又提醒大家。Xp今年的4月份会寿终正寝了。因此必需要考虑到对win7的兼容。

    Win7在访问时,返回的注册表值,就是与实际看到的不一致。

    经过在网上搜索部分解决方案,以下这位同学的解决方案才是正解,终于找到相关解决办法。

    首先读取注册表要给用户管理员得权限。exe在Vista或Win7下不以管理员权限运行,会被UAC(用户帐户控制)阻止访问系统某些功能,如修改注册表操作等;如何让exe以管理员权限运行呢,方法有两种,一个是直接修改exe属性;另一个是在程序中加入MANIFEST资源,下面分别介绍。

    1.   直接修改exe属性:

    1)   右击“exe”,在弹出的菜单中选择“属性”,出现的界面如下图:

    2)   选择“兼容性”项,并勾选“以管理员身份运行此程序”项即可。

    2.    在C#程序中加入MANIFEST资源,

    1)         打开vs2008工程,看在Properties下是否有app.manifest这个文件;如没有,右击工程在菜单中选择“属性”,出现界面如下:

     

    2)         选中“安全性”,在界面中勾选“启用ClickOnce安全设置”后,在Properties下就有自动生成app.manifest文件。

    3)         打开app.manifest文件,在<security>下加入

     <requestedPrivileges>
              <requestedExecutionLevel level="requireAdministrator" cess="false"/>
      </requestedPrivileges>
    View Code

    4)         重新编译即可。全部代码如下:

     <?xml version="1.0" encoding="utf-8"?>
    6)    <asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    7)      <assemblyIdentity version="1.0.0.0" name="MyApplication.app" />
    8)      <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    9)        <security>
    10)        <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
    11)          <!-- UAC 清单选项
    12)              如果希望更改 Windows 用户帐户控制级别,请用以下节点之一替换
    13)              requestedExecutionLevel 节点。
    14)   
    15)          <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
    16)          <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
    17)          <requestedExecutionLevel  level="highestAvailable" uiAccess="false" />
    18)   
    19)              如果您希望利用文件和注册表虚拟化提供
    20)              向后兼容性,请删除 requestedExecutionLevel 节点。
    21)          -->
    22)          <!--<requestedExecutionLevel level="asInvoker" uiAccess="false" />-->
    23)          <requestedPrivileges>
    24)            <requestedExecutionLevel level="requireAdministrator" cess="false"/>
    25)          </requestedPrivileges>
    26)   
    27)        </requestedPrivileges>
    28)        <applicationRequestMinimum>
    29)          <PermissionSet class="System.Security.PermissionSet" version="1" Unrestricted="true" ID="Custom" SameSite="site" />
    30)          <defaultAssemblyRequest permissionSetReference="Custom" />
    31)        </applicationRequestMinimum>
    32)      </security>
    33)    </trustInfo>
    34)     </asmv1:assembly>
    View Code
  • 相关阅读:
    网站的域名带www的和不带www的有什么区别呀
    网站域名加WWW与不加WWW区别
    QQ第三方登录报错error=-1
    Centos7 Apache配置虚拟主机的三种方式
    HTTP和HTTPS有什么区别? 什么是SSL证书?使用ssl证书优势?
    微博第三方登录时,域名使用错误报错, Laravel Socialite Two InvalidStateException No message
    Laravel5.1 实现第三方登录认证教程之
    php第三方登录(微博登录,仿照慕课网)
    php实现第三方登录
    laravel5.4 前后台未登陆,跳转到各自的页面
  • 原文地址:https://www.cnblogs.com/bribe/p/3788694.html
Copyright © 2020-2023  润新知