zoukankan      html  css  js  c++  java
  • win7 操作注册表

    我们平时都是在xp开发比较多...不过现在很多开发人员也在win7下开发了。

         下面是在 LocalMachine下的 一下注册表操作 ,就不详说了

    private static void DeleteRegistry(string name)
    {
    string[] aimnames;
    RegistryKey hkml = Registry.LocalMachine;
    RegistryKey software = hkml.OpenSubKey("SOFTWARE", true);
    RegistryKey aimdir = software.OpenSubKey("Microsoftss", true);
    aimnames = aimdir.GetSubKeyNames();
    foreach (string aimKey in aimnames)
    {
    if (aimKey == name)
    aimdir.DeleteSubKeyTree(name);
    }
    }

    private static string GetData(string name)
    {
    string registData;
    RegistryKey hkml = Registry.LocalMachine;
    RegistryKey software = hkml.OpenSubKey("SOFTWARE", true);
    RegistryKey aimdir = software.OpenSubKey("Microsoftss", true);
    registData = aimdir.GetValue(name).ToString();
    return registData;
    }

    private static void WriteValue(string name, string tovalue)
    {
    RegistryKey hklm = Registry.LocalMachine;
    RegistryKey software = hklm.OpenSubKey("SOFTWARE", true);
    RegistryKey aimdir = software.CreateSubKey("Microsoftss");
    aimdir.SetValue(name, tovalue);
    }

    private static bool IsExit(string name)
    {
    bool _exit = false;android中记录读取配置信息
    string[] subkeyNames;
    RegistryKey hkml = Registry.LocalMachine;
    RegistryKey software = hkml.OpenSubKey("SOFTWARE", true);
    RegistryKey aimdir = software.OpenSubKey("Microsoftss", true);
    subkeyNames = aimdir.GetValueNames();
    foreach (string keyName in subkeyNames)
    {
    if (keyName == name)
    {
    _exit = true;
    return _exit;
    }
    }
    return _exit;
    }

          比如,当我们在xp系统下 软件执行Writevalue("版本号","v1.0.0.1"),一切都ok! 然后乐的就抛给了客户...没有思考。

    一天客户换了win7系统 ,运了软件了。客户拉着42号鞋子的脸说,怎么软件在win7不能运行了....。问题就是上面开头说的了。

    解决方法是有地....

            这里列举几种.

            第一种、教教客户、或者技术服务人员就好了。这个方法不需要修改我们的代码这是好处之一。只要, 点击.exe 右键

    ,在弹出的菜单中选择【属性】, 选择【兼容性】项,并勾选【以管理员身份运行此程序】就ok了。简单吧

            第二种、也算简单,不过我们就要重新生成软件了。首先、在程序中加入MANIFEST资源,右击工程在菜单->【属性】->【安全性】,在界面中勾选【启用ClickOnce安全设置】,在项目的Properties下就有自动生成app.manifest文件。

            文件内容如下:

    <?xml version="1.0" encoding="utf-8"?>
    < 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">
    < 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">
    < !-- UAC 清单选项
    如果希望更改 Windows 用户帐户控制级别,请用以下节点之一替换
    requestedExecutionLevel 节点。

    <requestedExecutionLevel level="asInvoker" uiAccess="false" />
    < requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
    <requestedExecutionLevel level="highestAvailable" uiAccess="false" />

    如果您希望利用文件和注册表虚拟化提供
    向后兼容性,请删除 requestedExecutionLevel 节点。
    -->
    <requestedExecutionLevel level="asInvoker" uiAccess="false" />
    < /requestedPrivileges>
    < applicationRequestMinimum>
    < defaultAssemblyRequest permissionSetReference="Custom" />
    < PermissionSet class="System.Security.PermissionSet" version="1" Unrestricted="true" ID="Custom" SameSite="site" />
    < /applicationRequestMinimum>
    < /security>
    < /trustInfo>
    < /asmv1:assembly>

    把 <requestedExecutionLevel level="asInvoker" uiAccess="false" /> 的 asInvoker 改为"requireAdministrator"。重新编译一下就ok了。

    看到这个了吧!

    这就是UAC(用户帐户控制)了

    <!-- UAC 清单选项
              如果希望更改 Windows 用户帐户控制级别,请用以下节点之一替换 
              requestedExecutionLevel 节点。
    
          <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
         <span style="color: #ff0000;"><strong> <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" /></strong></span>
          <requestedExecutionLevel  level="highestAvailable" uiAccess="false" />
    
              如果您希望利用文件和注册表虚拟化提供
              向后兼容性,请删除 requestedExecutionLevel 节点。
          -->

    还有其他的方法。不过上面两种比较简单...。

  • 相关阅读:
    JS中的prototype
    Php5.3的lambda函数以及closure(闭包)
    JavaScript事件委托的技术原理
    css 里层元素撑不开外层元素
    扩展VirtualBox虚拟机磁盘容量
    easyUI 条件查询 跟分页数据展示写在了一起的
    (转)Hibernate中关于多表连接查询hql 和 sql 返回值集合中对象问题
    有想去北京工作的的想法了
    第一次写oracle SQL 两个表链接查询
    第三天 SQL小记
  • 原文地址:https://www.cnblogs.com/swarb/p/9924409.html
Copyright © 2011-2022 走看看