C#操作注册表(转)起名

壹.读取钦赐名称的注册表的值
private string GetRegistData(string name)
{
   string registData;
   RegistryKey hkml = Registry.LocalMachine;
   RegistryKey software = hkml.OpenSubKey(“SOFTWARE”,true);
   RegistryKey aimdir = software.OpenSubKey(“XXX”,true);
   registData = aimdir.GetValue(name).ToString();
   return registData;
}
如上是读取的注册表中HKEY_LOCAL_MACHINE\SOFTWARE目录下的XXX目录中名叫name的注册表值;

 [动态修改程序的布局的思考值得学习!] 

二.向注册表中写多少
private void WTRegedit(string name,string tovalue)
{
   RegistryKey hklm = Registry.LocalMachine;
   RegistryKey software = hklm.OpenSubKey(“SOFTWARE”,true);
   RegistryKey aimdir = software.CreateSubKey(“XXX”);
起名,   aimdir.SetValue(name,tovalue);
}
上述是在注册表中HKEY_LOCAL_MACHINE\SOFTWARE目录下新建XXX目录并在此目录下制造名字为name值为tovalue的登记表项;

 

3.剔除注册表中钦命的登记表项
private void DeleteRegist(string name)
{
   string[] aimnames;
   RegistryKey hkml = Registry.LocalMachine;
   RegistryKey software = hkml.OpenSubKey(“SOFTWARE”,true);
   RegistryKey aimdir = software.OpenSubKey(“XXX”,true);
   aimnames = aimdir.GetSubKeyNames();
   foreach(string aimKey in aimnames)
   {
    if(aimKey == name)
     aimdir.DeleteSubKeyTree(name);
   }
}
上述是在注册表中HKEY_LOCAL_MACHINE\SOFTWARE目录下XXX目录中剔除名字为name注册表项;

一、JMX简介

4.论断内定注册表项是不是存在
private bool IsRegeditExit(string name)
{
   bool _exit = false;
   string[] subkeyNames;
   RegistryKey hkml = Registry.LocalMachine;
   RegistryKey software = hkml.OpenSubKey(“SOFTWARE”,true);
   RegistryKey aimdir = software.OpenSubKey(“XXX”,true);
   subkeyNames = aimdir.GetSubKeyNames();
   foreach(string keyName in subkeyNames)
   {
    if(keyName == name)
    {
       _exit = true;
       return _exit;
    }
   }
   return _exit;
}
以上是在注册表中HKEY_LOCAL_MACHINE\SOFTWARE目录下XXX目录中判别名字为name注册表项是或不是留存,那一主意在剔除注册表时已经存在,在新建1报了名表项时也应当相应决断;  

  JMX是1种JAVA的正式规范,它至关心注重要目标是让程序有被管理的功能,那么怎么明白所谓的“被管制”呢?试想你付出了2个软件(如WEB网站),它是在24小时不间断运转的,那么您可能会想要“监察和控制”这几个软件的运行处境,比如收受了多少多少,有微微人登入等等。只怕你又想“配置”这么些软件,比如未来作客人数相比多,你想把数量连接池设置得大片段。

3个例子:

  当然,你可能会尤其为那几个管理来开采软件,但如若您借助JMX,则会意识制造那样的管制造进程序是那样简约。因为您无需为治本程序来支付分界面,已经有通用的JMX管理软件,如MC四J,或然是用1般都附带提供的HTML网页来管理,你要做的单纯是将团结要被管制和监察和控制类的遵照JMX规范修改一下就可以。

using Microsoft.Win32;

  中间件软件WebLogic的治本页面正是基于JMX开垦的,而JBoss则整个系统都根据JMX构架。

    using System.Diagnostics;

    private void Access_Registry()

    {

 

         //
在HKEY_LOCAL_MACHINE\Software下建立一新键,起名称叫MCBInc

2、准备干活
  JMX是壹份正经,SUN依照那一个专业在JDK(壹.三、一.肆、5.0)提供了JMX接口。而根据这几个接口的兑现则有诸三种,比如Weblogic的JMX达成、MX4J、JBoss的JMX达成。在SUN本身也落到实处了一份,但是在JDK一.四事先,那件JMX达成(1些JA揽胜包)是可选的,你得去它的网址上下载。JDK伍.0则内嵌了进去,安装JDK五.0就能够支付基于JMX的代码了。
  但JDK五.0决不包罗全体SUN的有关JMX的代码,有局地工具类是破除在JDK伍.0之外的。上面依照所选用的JDK版本情况,谈一谈开辟条件的准备。
1、JDK1.3、1.4
  去SUN网址下载SUN的JMX完结,共多少个ZIP文件,下载网站:http://java.sun.com/products/JavaManagement/download.html。
(1)jmx-1_2_1-ri.zip
   解压后的lib目录包罗:jmxri.jar、jmxtools.jar
(2)jmx_remote-1_0_1_03-ri.zip
   解压后的lib目录包涵:jmxremote.jar、jmxremote_optional.jar、rmissl.jar
  假若在DOS下用命令行开辟,则把那七个JAEscort包到场到classpath系统变量中。如果你用Eclipse开垦,则把JAENVISION包到场到花色性质的Libratries(库)引用中。
2、JDK5.0
  JDK5.0的jre\lib\rt.jar已经包蕴了jmxri.jar、jmxremote.jar、rmissl.jar三个包的代码。假诺你用到jmxtools.jar、jmxremote_optional.jar的类,则需求将那八个类到场到classpath或
Eclipse的品类库引用中。
三、小编动用的开支条件:JDK伍.0 + Eclipse三.二。
  注:因为用到jmxtools.jar中的HtmlAdaptorServer类,所以将此包参加到项目库引用中。jmxremote_optional.jar最近不用到,不管它。

            RegistryKey key = Registry.LocalMachine.OpenSubKey("Software", true);

三、HelloWorld实例
1、Hello是贰个亟需被管制的类(普通类)

         // 扩充八个子键

/**
 * @author ChenGang 2005-12-3
 */
public class Hello implements HelloMBean {
    private String name;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public void printHello() {
        System.out.println(“Hello World, ” + name);
    }
    public void printHello(String whoName) {
        System.out.println(“Hello , ” + whoName);
    }
}          

            RegistryKey newkey = key.CreateSubKey("MCBInc");

   

 

 // 设置此子键的值

二、要管制Hello则必须创设三个相应MBean,如下:

            newkey.SetValue("MCBInc", "NET Developer");

         

/**
 * @author ChenGang 2005-12-3
 */
public interface HelloMBean {
    public String getName();
    public void setName(String name);
    public void printHello();
    public void printHello(String whoName);

// 从注册表的别的地方获取数据

 

         

                 
注脚:包蕴在MBean中艺术都将是能够被管理的。MBean起名是有正统的,就是原类名后加上MBean字样。
 
3、创设1个Agent类

// 找寻您的CPU

 

            RegistryKey pRegKey = Registry.LocalMachine;

            pRegKey = pRegKey.OpenSubKey("HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0");

            Object val = pRegKey.GetValue("VendorIdentifier");

            Debug.WriteLine("The central processor of this machine is:"+ val);

import javax.management.MBeanServer;
import javax.management.MBeanServerFactory;
import javax.management.ObjectName;
import com.sun.jdmk.comm.HtmlAdaptorServer;

         // 删除键值

public class HelloAgent {

            RegistryKey delKey = Registry.LocalMachine.OpenSubKey("Software", true);

            delKey.DeleteSubKey("MCBInc");

    }

    public static void main(String[] args) throws Exception {
        MBeanServer server = MBeanServerFactory.createMBeanServer();

[转]C#操作注册表

        ObjectName helloName = new ObjectName(“chengang:name=HelloWorld”);
        server.registerMBean(new Hello(), helloName);

在注册表编辑器里右键点击1个子项选取“新建”,大家就会看到如图一,新建项的美食做法里分为上下两局地,上边的“项”指得是在新建多个下一流项;上面包车型大巴B指得是树立项的键,键的品类分为图所示的多样。

        ObjectName adapterName = new ObjectName(“HelloAgent:name=htmladapter,port=8082”);
        HtmlAdaptorServer adapter = new HtmlAdaptorServer();
        server.registerMBean(adapter, adapterName);

 

        adapter.start();
        System.out.println(“start…..”);

 

    }

2.随之来熟稔一下C#中期维修改注册表的法子与函数。
在VC#中提供了Registry类、RegistryKey类来落到实处对注册表的操作。
中间Registry类封装了注册表的八个主导主健:
  Registry.ClassesRoot 对应于HKEY_CLASSES_ROOT主键
  Registry.CurrentUser 对应于HKEY_CURRENT_USER主键
  Registry.LocalMachine 对应于 HKEY_LOCAL_MACHINE主键
  Registry.User 对应于 HKEY_USER主键
  Registry.CurrentConfig 对应于HEKY_CURRENT_CONFIG主键
  Registry.DynDa 对应于HKEY_DYN_DATA主键
  Registry.PerformanceData 对应于HKEY_PERFORMANCE_DATA主键

 

 

说明:

RegistryKey类封装了对注册表的基本操作,包蕴读取,写入,删除。
在那之中读取的主要函数有: 
OpenSubKey ( string name )方法首假设开垦钦命的子键。
GetSubKeyNames (
)方法是获得主键上面包车型客车保有子键的名目,它的重临值是3个字符串数组。
GetValueNames (
)方法是收获当前子键中的全数的键名称,它的再次来到值也是三个字符串数组。
GetValue ( string name )方法是钦定键的键值。

    * 先创设了八个MBeanServer,用来做MBean的容器
    * 将Hello那一个类注入到MBeanServer中,注入必要创设2个ObjectName类
    *
创制2个艾达ptorServer,那几个类将决定MBean的管制分界面,那里用最普通的Html型分界面。AdaptorServer其实也是二个MBean。
    *
chengang:name=HelloWorld的名字是有必然规则的,格式为:“域名:name=MBean名称”,域名和MBean名称都能够任意取。

写入的函数:
    CreateSubKey(string name)方法是增添1个子键
    SetValue(string name,string value)方法是设置贰个键的键值

四、运维HelloAgent,然后张开网页:http://localhost:8082/
, 单击“name=HelloWorld”链接进入。

删去的函数:
  DeleteSubKey ( )方法:删除3个钦赐的子键。
  DeleteSubKeyTree (
)方法:此方法是根本去除钦赐的子键目录,即:删除该子键以及该子键以下的全方位子键。

 

 

转自:http://www.blogjava.net/hengheng123456789/articles/65690.html

在上面的事例里,要注意:
  建项函数:CreateSubKey()
  建子键函数:SetValue();

完!

 

 

class Program
    {
        static string Generateguid()//建立GUID值的函数
        {
            return System.Guid.NewGuid().ToString();
        }
        static void Main(string[] args)
        {
            RegistryKey pregkey;
            string preName;
            //pregkey = Registry.CurrentUser.OpenSubKey(“Control
Panel\\Desktop\\WindowMetrics”,true);
            pregkey =
Registry.LocalMachine.OpenSubKey(“SOFTWARE\\Microsoft\\Internet
Explorer\\Extensions”,true);//以只读格局检索子项
            if (pregkey == null)
            {
                Console.WriteLine(“该键值不设有”);
              
            }
            else
            {
                preName = Generateguid();
                Console.WriteLine(preName);
                Console.WriteLine(“找到该键值”);
                preName = “{” + preName + “}”;
                //pregkey.SetValue(“MinAnimate”,”1″);
                pregkey.CreateSubKey(preName);//建立子项
                pregkey =
Registry.LocalMachine.OpenSubKey(“SOFTWARE\\Microsoft\\Internet
Explorer\\Extensions\\”+preName, true);
                //pregkey.SetValue(“bbbbb”,
“0”);//建立子键,如若有此子键,则设值。
                pregkey.SetValue(“ButtonText”,
“增添”);//鼠标放到bar上时显示的文字
                pregkey.SetValue(“CLSID”,
“{1FBA04EE-3024-11d2-8F1F-0000F87ABD16}”);//CLSID固定
                pregkey.SetValue(“Default Visible”,
“yes”);//默承认看见
                pregkey.SetValue(“Exec”,
“D:/IEbar/IEpinout.exe”);//关联的exe文件
                pregkey.SetValue(“HotIcon”,
“D:/IEbar/Icon贰.ico”);//鼠标放到bar上时体现的图纸
                pregkey.SetValue(“Icon”,
“D:/IEbar/Icon1.ico”);//鼠标未放在bar上时显示的图形
                //pregkey.SetValue(“MenuStatusBar”, “杨”);
                //pregkey.SetValue(“MenuText”, “我是杨!”);
              
            }
            pregkey.Close();
        }
    }

此例子在vs200五,xp系统下调节和测试通过。
生成exe文件,间接运营,然后展开ie查看工具栏上的效果。
留神:必必要有”D:/IEbar/Icon二.ico”和”D:/IEbar/Icon一.ico”那五个文本,不然在ie上看不出效果。

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图