C#操作注册表

一、关于注册表
有关注册表的信息请转至:http://www.cnblogs.com/qjym/p/6986394.html
 
二、C#操作注册表的常用类
(1)Resgistry: 静态类,它是C#中注册表的访问入口,通过它可访问到注册表的7大节点;此外它还包含一些简单的注册表键值读写方法
(2)RestryKey: 一般类,包含注册表操作的一切方法,键值的读写、删除、新建、子键的新建等(需要较高的权限)
 
三、注册表的访问
注册表只能逐级访问,当前键只能读写其值或者查找子键,不能向XML一样通过LINQ去访问。
 
四、注册表操作示例:一键设置win 7系统下CF游戏全屏
注意:Win7系统下导致CF等一些游戏不能全屏显示的问题有的可以通过更改注册表设置解决,有的好像要修改显卡设置,具体尚未研究。这里仅以第一种情况为问题场景,介绍C#是如何操作注册表的)
 
        #region Win7游戏全屏设置代码
            //方法:通过更改注册表指定路径下的参数值实现
 
            try
            {
                Console.WriteLine("正在更改注册表设置...");
                Thread.Sleep(1500);
 
                //CKLM至目标父键之间的键名称集合
                string[] treeKeys = new string[7]
            {
                "SYSTEM",
                "CurrentControlSet",
                "Control",
                "GraphicsDrivers",
                "Configuration",
                "ACR0341LY4CN0034203_24_07DD_8C*SEC36490_00_07DB_1C^C1FDFFD8E5D294175FE5650D77ABFF6E",
                "00"
            };
 
                //路由到目标键的父键
                RegistryKey rk = Registry.LocalMachine;
                foreach (var item in treeKeys)
                    rk = rk.OpenSubKey(item);
 
                //由于计算机可能存在多个显示器(如分屏时),键“00”下存在多个键,因此需要分别设置
                string[] subScreenKeyNames = rk.GetSubKeyNames();
                foreach (var item in subScreenKeyNames)
                {
                    RegistryKey sk = rk.OpenSubKey(item, true);//以允许写入的方式打开键
                    sk.SetValue("Scaling", 3);//将原值"4"更改为"3"
                }
 
                Console.WriteLine("更改成功,重启后生效!");
            }
            catch (Exception ex)
            {
                Console.WriteLine("更改注册表设置失败(详细信息: {0}", ex.Message);
            }
 
            Console.Read();
            #endregion
posted @ 2017-06-12 09:36  秋郊饮马  阅读(381)  评论(0编辑  收藏  举报