C#注册表操作
代码
using System;
using System.Security.Permissions;//权限判断
using Microsoft.Win32;//操作注册表
//[assembly: RegistryPermissionAttribute(SecurityAction.RequestMinimum,ViewAndModify = "HKEY_CURRENT_USER")]
namespace AppSetting
{
/// <summary>
/// 注册表示例
/// Windows Registry Editor Version 5.00
///
///[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Executive]
///"AdditionalCriticalWorkerThreads"=dword:00000000
///"AdditionalDelayedWorkerThreads"=dword:00000000
///"PriorityQuantumMatrix"=hex:30,bf,44,a8,00,00,00,00,72,6f,c7,01
/// </summary>
public class RegistryManager
{
public RegistryManager()
{
}
public static bool AppSettingsInit()
{
//创建LocalMachine->SOFTWARE->Flybird
string sBaseKey = "LocalMachine";
string sSubKey = @"SOFTWARE\Flybird\Pecker";
RegistryManager.CreateSubKey("LocalMachine",@"SOFTWARE\Flybird\Pecker");
//添加值
RegistryManager.SetKeyValue(sBaseKey,sSubKey,"Register","1234567890");
//读取值
//string sValue = (string)RegistryManager.GetKeyValue(sBaseKey,sSubKey,"Register");
//MessageBox.Show(sValue);
return true;
}
/// <summary>
/// 得到主键对应的RegistryHive
/// </summary>
/// <param name="sBaseKey"></param>
/// <returns></returns>
public static RegistryHive GetBaseHive(string sBaseKey)
{
RegistryHive baseRegHive = new RegistryHive();
switch(sBaseKey)
{
case "ClassesRoot":
baseRegHive = RegistryHive.ClassesRoot;
break;
case "CurrentConfig":
baseRegHive = RegistryHive.CurrentConfig;
break;
case "CurrentUser":
baseRegHive = RegistryHive.CurrentUser;
break;
case "DynData":
baseRegHive = RegistryHive.DynData;
break;
case "LocalMachine":
baseRegHive = RegistryHive.LocalMachine;
break;
case "PerformanceData":
baseRegHive = RegistryHive.PerformanceData;
break;
case "Users":
baseRegHive = RegistryHive.Users;
break;
default:
baseRegHive = RegistryHive.LocalMachine;
break;
}
return baseRegHive;
}
/// <summary>
/// 权限判断
/// </summary>
/// <param name="sBaseKey"></param>
/// <param name="sSubKey"></param>
public static void AddPermission(string sBaseKey,string sSubKey)
{
//权限判断
/*
RegistryPermission regPermission = new RegistryPermission(
RegistryPermissionAccess.Write|RegistryPermissionAccess.Read,
"HKEY_LOCAL_MACHINE\\SOFTWARE\\Rational Software\\Rose\\0");
regPermission.AddPathList(;
*/
}
/// <summary>
/// 得到指定主键和子键的对象值
/// </summary>
/// <returns></returns>
public static object GetKeyValue(string sBaseKey,string sSubKey,string sObject)
{
object objResult = null;
try
{
RegistryKey SUBKEY;
RegistryHive baseRegHive = GetBaseHive(sBaseKey);
RegistryKey BASEKEY = RegistryKey.OpenRemoteBaseKey(baseRegHive,String.Empty);
SUBKEY = BASEKEY.OpenSubKey(sSubKey);
objResult = SUBKEY.GetValue(sObject);
SUBKEY.Close();
BASEKEY.Close();
}
catch
{
return null;
}
return objResult;
}
/// <summary>
/// 设定指定主键和子键的对象值
/// </summary>
/// <returns></returns>
public static bool SetKeyValue(string sBaseKey,string sSubKey,string sObject,object Value)
{
try
{
RegistryKey SUBKEY;
RegistryHive baseRegHive = GetBaseHive(sBaseKey);
RegistryKey BASEKEY = RegistryKey.OpenRemoteBaseKey(baseRegHive,String.Empty);
SUBKEY = BASEKEY.OpenSubKey(sSubKey,true);
SUBKEY.SetValue(sObject,Value);
SUBKEY.Close();
BASEKEY.Close();
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
return false;
}
return true;
}
/// <summary>
/// 创建子键
/// </summary>
/// <param name="sBaseKey"></param>
/// <param name="sSubKey"></param>
/// <returns></returns>
public static bool CreateSubKey(string sBaseKey,string sSubKey)
{
try
{
RegistryKey SUBKEY;
RegistryHive baseRegHive = GetBaseHive(sBaseKey);
RegistryKey BASEKEY = RegistryKey.OpenRemoteBaseKey(baseRegHive,String.Empty);
SUBKEY = BASEKEY.CreateSubKey(sSubKey);
SUBKEY.Close();
BASEKEY.Close();
}
catch
{
return false;
}
return true;
}
public static void Test()
{
//创建子键
RegistryKey test9999 = Registry.CurrentUser.CreateSubKey("Test9999");
//创建子键的子键
// keys are disposed when execution exits the using statement.
using(RegistryKey testName = test9999.CreateSubKey("TestName"),
testSettings = test9999.CreateSubKey("TestSettings"))
{
// Create data for the TestSettings subkey.
testSettings.SetValue("Language", "French");
testSettings.SetValue("Level", "Intermediate");
testSettings.SetValue("ID", 123);
}
//打印当前子键的所有子键信息
Console.WriteLine("There are {0} subkeys under {1}.",
test9999.SubKeyCount.ToString(), test9999.Name);
foreach(string subKeyName in test9999.GetSubKeyNames())
{
using(RegistryKey tempKey = test9999.OpenSubKey(subKeyName))
{
Console.WriteLine("\nThere are {0} values for {1}.",
tempKey.ValueCount.ToString(), tempKey.Name);
foreach(string valueName in tempKey.GetValueNames())
{
Console.WriteLine("{0,-8}: {1}", valueName,
tempKey.GetValue(valueName).ToString());
}
}
}
using(RegistryKey testSettings = test9999.OpenSubKey("TestSettings", true))
{
//删除某子键的某项值
testSettings.DeleteValue("id");
//检索删除值
Console.WriteLine((string)testSettings.GetValue("id", "ID not found."));
}
//删除子键树(包括下面所有节点)
Console.Write("\nDelete newly created registry key? (Y/N) ");
if(Char.ToUpper(Convert.ToChar(Console.Read())) == 'Y')
{
Registry.CurrentUser.DeleteSubKeyTree("Test9999");
Console.WriteLine("\nRegistry key {0} deleted.",
test9999.Name);
}
else
{
Console.WriteLine("\nRegistry key {0} closed.",
test9999.ToString());
test9999.Close();
}
}
}
}
using System.Security.Permissions;//权限判断
using Microsoft.Win32;//操作注册表
//[assembly: RegistryPermissionAttribute(SecurityAction.RequestMinimum,ViewAndModify = "HKEY_CURRENT_USER")]
namespace AppSetting
{
/// <summary>
/// 注册表示例
/// Windows Registry Editor Version 5.00
///
///[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Executive]
///"AdditionalCriticalWorkerThreads"=dword:00000000
///"AdditionalDelayedWorkerThreads"=dword:00000000
///"PriorityQuantumMatrix"=hex:30,bf,44,a8,00,00,00,00,72,6f,c7,01
/// </summary>
public class RegistryManager
{
public RegistryManager()
{
}
public static bool AppSettingsInit()
{
//创建LocalMachine->SOFTWARE->Flybird
string sBaseKey = "LocalMachine";
string sSubKey = @"SOFTWARE\Flybird\Pecker";
RegistryManager.CreateSubKey("LocalMachine",@"SOFTWARE\Flybird\Pecker");
//添加值
RegistryManager.SetKeyValue(sBaseKey,sSubKey,"Register","1234567890");
//读取值
//string sValue = (string)RegistryManager.GetKeyValue(sBaseKey,sSubKey,"Register");
//MessageBox.Show(sValue);
return true;
}
/// <summary>
/// 得到主键对应的RegistryHive
/// </summary>
/// <param name="sBaseKey"></param>
/// <returns></returns>
public static RegistryHive GetBaseHive(string sBaseKey)
{
RegistryHive baseRegHive = new RegistryHive();
switch(sBaseKey)
{
case "ClassesRoot":
baseRegHive = RegistryHive.ClassesRoot;
break;
case "CurrentConfig":
baseRegHive = RegistryHive.CurrentConfig;
break;
case "CurrentUser":
baseRegHive = RegistryHive.CurrentUser;
break;
case "DynData":
baseRegHive = RegistryHive.DynData;
break;
case "LocalMachine":
baseRegHive = RegistryHive.LocalMachine;
break;
case "PerformanceData":
baseRegHive = RegistryHive.PerformanceData;
break;
case "Users":
baseRegHive = RegistryHive.Users;
break;
default:
baseRegHive = RegistryHive.LocalMachine;
break;
}
return baseRegHive;
}
/// <summary>
/// 权限判断
/// </summary>
/// <param name="sBaseKey"></param>
/// <param name="sSubKey"></param>
public static void AddPermission(string sBaseKey,string sSubKey)
{
//权限判断
/*
RegistryPermission regPermission = new RegistryPermission(
RegistryPermissionAccess.Write|RegistryPermissionAccess.Read,
"HKEY_LOCAL_MACHINE\\SOFTWARE\\Rational Software\\Rose\\0");
regPermission.AddPathList(;
*/
}
/// <summary>
/// 得到指定主键和子键的对象值
/// </summary>
/// <returns></returns>
public static object GetKeyValue(string sBaseKey,string sSubKey,string sObject)
{
object objResult = null;
try
{
RegistryKey SUBKEY;
RegistryHive baseRegHive = GetBaseHive(sBaseKey);
RegistryKey BASEKEY = RegistryKey.OpenRemoteBaseKey(baseRegHive,String.Empty);
SUBKEY = BASEKEY.OpenSubKey(sSubKey);
objResult = SUBKEY.GetValue(sObject);
SUBKEY.Close();
BASEKEY.Close();
}
catch
{
return null;
}
return objResult;
}
/// <summary>
/// 设定指定主键和子键的对象值
/// </summary>
/// <returns></returns>
public static bool SetKeyValue(string sBaseKey,string sSubKey,string sObject,object Value)
{
try
{
RegistryKey SUBKEY;
RegistryHive baseRegHive = GetBaseHive(sBaseKey);
RegistryKey BASEKEY = RegistryKey.OpenRemoteBaseKey(baseRegHive,String.Empty);
SUBKEY = BASEKEY.OpenSubKey(sSubKey,true);
SUBKEY.SetValue(sObject,Value);
SUBKEY.Close();
BASEKEY.Close();
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
return false;
}
return true;
}
/// <summary>
/// 创建子键
/// </summary>
/// <param name="sBaseKey"></param>
/// <param name="sSubKey"></param>
/// <returns></returns>
public static bool CreateSubKey(string sBaseKey,string sSubKey)
{
try
{
RegistryKey SUBKEY;
RegistryHive baseRegHive = GetBaseHive(sBaseKey);
RegistryKey BASEKEY = RegistryKey.OpenRemoteBaseKey(baseRegHive,String.Empty);
SUBKEY = BASEKEY.CreateSubKey(sSubKey);
SUBKEY.Close();
BASEKEY.Close();
}
catch
{
return false;
}
return true;
}
public static void Test()
{
//创建子键
RegistryKey test9999 = Registry.CurrentUser.CreateSubKey("Test9999");
//创建子键的子键
// keys are disposed when execution exits the using statement.
using(RegistryKey testName = test9999.CreateSubKey("TestName"),
testSettings = test9999.CreateSubKey("TestSettings"))
{
// Create data for the TestSettings subkey.
testSettings.SetValue("Language", "French");
testSettings.SetValue("Level", "Intermediate");
testSettings.SetValue("ID", 123);
}
//打印当前子键的所有子键信息
Console.WriteLine("There are {0} subkeys under {1}.",
test9999.SubKeyCount.ToString(), test9999.Name);
foreach(string subKeyName in test9999.GetSubKeyNames())
{
using(RegistryKey tempKey = test9999.OpenSubKey(subKeyName))
{
Console.WriteLine("\nThere are {0} values for {1}.",
tempKey.ValueCount.ToString(), tempKey.Name);
foreach(string valueName in tempKey.GetValueNames())
{
Console.WriteLine("{0,-8}: {1}", valueName,
tempKey.GetValue(valueName).ToString());
}
}
}
using(RegistryKey testSettings = test9999.OpenSubKey("TestSettings", true))
{
//删除某子键的某项值
testSettings.DeleteValue("id");
//检索删除值
Console.WriteLine((string)testSettings.GetValue("id", "ID not found."));
}
//删除子键树(包括下面所有节点)
Console.Write("\nDelete newly created registry key? (Y/N) ");
if(Char.ToUpper(Convert.ToChar(Console.Read())) == 'Y')
{
Registry.CurrentUser.DeleteSubKeyTree("Test9999");
Console.WriteLine("\nRegistry key {0} deleted.",
test9999.Name);
}
else
{
Console.WriteLine("\nRegistry key {0} closed.",
test9999.ToString());
test9999.Close();
}
}
}
}


浙公网安备 33010602011771号