zoukankan      html  css  js  c++  java
  • (转)c#操作注册表大全

    1.打开键
    //using Microsoft.Win32;
    RegistryKey rkLocalM = Registry.LocalMachine; //Registry.ClassesRoot, Registry.LocalMachine, Registry.Users, Registry.CurrentConfig
    const string strSubKey = %%1; //@"SOFTWARE\ODBC\ODBC.INI\DBNewTest\Test"
    RegistryKey rkSub = rkLocalM.OpenSubKey( strSubKey );
    //rkLocalM = Registry.LocalMachine; //Registry.ClassesRoot, Registry.LocalMachine, Registry.Users, Registry.CurrentConfig
    //rkLocalM.OpenSubKey(%%1);

    2.添加键
    //using Microsoft.Win32;
    RegistryKey rkLocalM = Registry.LocalMachine; //Registry.ClassesRoot, Registry.LocalMachine, Registry.Users, Registry.CurrentConfig
    const string strSubKey = %%1; //@"SOFTWARE\ODBC\ODBC.INI\DBNewTest\Test"
    RegistryKey rkSub = rkLocalM.CreateSubKey( strSubKey );
    rkLocalM.Close();

    3.删除键
    rkSub.DeleteSubKey( %%1, false );

    4.枚举第一个键
    //using System.Collections;
    IEnumerator<string> it = SubKey.GetSubKeyNames().First();
    string %%1=it.Current;

    5.枚举下一个键
    string %%1=null;
    if(it.MoveNext());
    %%1=it.Current;

    6.获取DWORD值
    %%2=rkSub.GetValue(%%1);

    7.获取二进制值
    %%2=rkSub.GetValue(%%1);

    8.读取字符串值
    %%2=rkSub.GetValue(%%1);

    9.写入字符串值
    rkSub.SetValue( %%1, "Test" );

    10.写入二进制值
    rkSub.SetValue(%%1, value, RegistryValueKind.Binary);

    11.写入DWORD值
    rkSub.SetValue(%%1, value, RegistryValueKind.DWord);

    12.设置DWORD值
    rkSub.Add(%%1, value, RegistryValueKind.DWord);

    13.删除值
    rkSub.DeleteValue( %%1, false );//"DriverID"

    14.关闭键
    rkSub.Close();

    15.列出一个键下所有的子键
    string[] strSubKeys = rkSub.GetSubKeyNames();
    for( int i = 0; i < strSubKeys.Length; i++ )
    {
    string %%1= strSubKeys[i] ;
    %%2
    }

    16.列出一个键下所有的值
    string[] strData = rkSub.GetValueNames();
    for( int i = 0; i < strData.Length; i++ )
    {
    //Debug.WriteLine( string.Format( "{0}:{1}", strData[i], rkSub.GetValue( strData[i] ) ) );
    }

    17.列出一个键下所有的子键和值
    string[] strSubKeys = rkSub.GetSubKeyNames();
    for( int i = 0; i < strSubKeys.Length; i++ )
    {
    string %%1=strSubKeys[i];
    %%2
    }
    string[] strData = rkSub.GetValueNames();
    for( int i = 0; i < strData.Length; i++ )
    {
    //Debug.WriteLine( string.Format( "{0}:{1}", strData[i], rkSub.GetValue( strData[i] ) ) );
    }


    18.枚举所有的子键和值
    //using Microsoft.Win32;
    private static void Access_Registry(RegistryKey keyR, String str)
    {
    string[] subkeyNames;
    string[] subvalueNames;
    try
    {
    RegistryKey aimdir = keyR.OpenSubKey(str, true);
    subvalueNames = aimdir.GetValueNames();
    foreach (string valueName in subvalueNames)
    {
    if (valueName.ToUpper().IndexOf(%%1) > -1) //"XMS"
    {
    Console.WriteLine(valueName);
    }
    string value = aimdir.GetValue(valueName) as string;
    if (value != null)
    {
    if (value.ToUpper().IndexOf(%%1) > -1) //"XMS"
    {
    Console.WriteLine(value);
    }

    }
    }
    subkeyNames = aimdir.GetSubKeyNames();
    foreach (string keyName in subkeyNames)
    {
    if (keyName.ToUpper().IndexOf(%%1) > -1) //"XMS"
    {
    Console.WriteLine(keyName);
    }
    Access_Registry(aimdir, keyName);
    }
    }
    catch (Exception) { }
    }

    RegistryKey[] keys ={ Registry.ClassesRoot, Registry.LocalMachine, Registry.CurrentUser, Registry.CurrentConfig };
    foreach (RegistryKey key in keys)
    {
    string[] subkeyNames = key.GetSubKeyNames();
    foreach (string keyName in subkeyNames)
    {
    Access_Registry(key, keyName);
    }
    key.Close();
    }

    19.模糊搜索所有的子键和值,查找特定字符串并删除
    //using System.Collections;using Microsoft.Win32;
    RegistryKey[] keys ={ Registry.LocalMachine, Registry.Users };// Registry.ClassesRoot, Registry.CurrentConfig
    foreach (RegistryKey key in keys)
    {
    string[] subkeys = key.GetSubKeyNames();
    Queue<String> al = new Queue<String>(subkeys);
    Queue<RegistryKey> qu = new Queue<RegistryKey>();
    for (int i = 0; i < subkeys.Length; i++)
    qu.Enqueue(key);
    while (al.Count > 0)
    {
    string[] subkeyNames;
    string[] subvalueNames;
    try
    {
    RegistryKey aimdir = qu.Dequeue();
    aimdir = aimdir.OpenSubKey(al.Dequeue(), true);
    subvalueNames = aimdir.GetValueNames();
    foreach (string valueName in subvalueNames)
    {
    if (valueName.Equals("XMS", StringComparison.OrdinalIgnoreCase)) //%%1
    {
    aimdir.DeleteValue(valueName, false);
    }
    else
    {
    string value = aimdir.GetValue(valueName) as string;
    if (value != null)
    {
    if (value.Equals("XMS", StringComparison.OrdinalIgnoreCase))
    {
    aimdir.DeleteValue(value, false);
    }
    }
    }
    }
    subkeyNames = aimdir.GetSubKeyNames();
    foreach (string keyName in subkeyNames)
    {
    if (keyName.Equals("XMS", StringComparison.OrdinalIgnoreCase))
    {
    aimdir.DeleteSubKey(keyName, false);
    }
    al.Enqueue(keyName);
    qu.Enqueue(aimdir);
    }
    }
    catch (Exception) { }
    }
    key.Close();
    }

    20.清空一个子键
    //using Microsoft.Win32;
    RegistryKey rkLocalM = Registry.LocalMachine; //Registry.ClassesRoot, Registry.LocalMachine, Registry.Users, Registry.CurrentConfig
    const string strSubKey = %%1; //@"SOFTWARE\ODBC\ODBC.INI"
    RegistryKey rkSub = rkLocalM.OpenSubKey( strSubKey, true );
    rkSub.DeleteSubKeyTree(%%2); //"DBNewTest"
    rkLocalM.Close();
    RegistryKey rkSub = rkLocalM.CreateSubKey( strSubKey +"\"+%%2);
    rkLocalM.Close();

  • 相关阅读:
    刷题总结——蚯蚓(NOIP2016DAY2T2)
    刷题总结——愤怒的小鸟(NOIPDAY2T3)
    算法复习——高斯消元(ssoi)
    算法复习——高精度集合
    刷题总结——系列维护(ssoi)
    刷题总结——传送带(四川省选)
    算法复习——数位dp(不要62HUD2089)
    算法复习——单调队列(sliding windows,ssoi)
    刷题总结——road(ssoi)
    linux命令学习笔记(61):tree 命令
  • 原文地址:https://www.cnblogs.com/dagon007/p/1561189.html
Copyright © 2011-2022 走看看