雖然學的很淺,但自己又進步了!
首先了解下C#操作注冊表的類
(1).Registry类:此类主要封装了七个公有的静态域,而这些静态域分别代表这视窗注册表中的七个基本的主键,具体如下所示:
Registry.ClassesRoot 对应于HKEY_CLASSES_ROOT主键(2).RegistryKey类:此类中主要封装了对视窗系统注册表的基本操作。在程序设计中,首先通过Registry类找到注册表中的基本主键,然后通过RegistryKey类,来找其下面的子键和处理具体的操作的。
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主键
代碼:
using Microsoft.Win32;
/// <summary>
///得到注冊表中的值
/// </summary>
/// <returns></returns>
private string GetRegistData( )
{
string registData;
RegistryKey hkml = Registry.LocalMachine;
RegistryKey RootFolder = Registry.LocalMachine;
RegistryKey system = RootFolder.OpenSubKey("system",true);
RegistryKey CurrentControlSet = system.OpenSubKey("CurrentControlSet",true);
RegistryKey Services = CurrentControlSet.OpenSubKey("Services",true);
RegistryKey Tcpip = Services.OpenSubKey("Tcpip",true);
RegistryKey Parameters = Tcpip.OpenSubKey("Parameters",true);
RegistryKey NetCardID = Parameters.OpenSubKey("Winsock",true);
registData = NetCardID.GetValue("HelperDllName", "null").ToString();
return registData;
}
/// <summary>
/// 創建注冊表值
/// 本例為創建一個XX的子目錄,其創建一鍵為XXX,值為test
/// </summary>
private void CreateRegistData()
{
RegistryKey hkml = Registry.LocalMachine;
RegistryKey RootFolder = Registry.LocalMachine;
RegistryKey system = RootFolder.OpenSubKey("system", true);
RegistryKey CurrentControlSet = system.OpenSubKey("CurrentControlSet", true);
RegistryKey Services = CurrentControlSet.OpenSubKey("Services", true);
RegistryKey Tcpip = Services.OpenSubKey("Tcpip", true);
RegistryKey Parameters = Tcpip.OpenSubKey("Parameters", true);
RegistryKey NetCardID = Parameters.OpenSubKey("Winsock", true);
RegistryKey xxx= NetCardID.CreateSubKey("xxx");
//384為十進制,Dword為16進制,系統將自動進行轉換,最終注冊表存入的值為180,180為384的16進制
xxx.SetValue("xxx",384,RegistryValueKind.DWord);
}
/// <summary>
/// 刪除指的鍵
/// </summary>
private void DeleteValueRegistData()
{
RegistryKey hkml = Registry.LocalMachine;
RegistryKey RootFolder = Registry.LocalMachine;
RegistryKey system = RootFolder.OpenSubKey("system", true);
RegistryKey CurrentControlSet = system.OpenSubKey("CurrentControlSet", true);
RegistryKey Services = CurrentControlSet.OpenSubKey("Services", true);
RegistryKey Tcpip = Services.OpenSubKey("Tcpip", true);
RegistryKey Parameters = Tcpip.OpenSubKey("Parameters", true);
RegistryKey NetCardID = Parameters.OpenSubKey("Winsock", true);
RegistryKey xxx = NetCardID.OpenSubKey("xxx", true);
string[] SubValue;
SubValue = xxx.GetValueNames();
foreach (string sSubValue in SubValue)
{
if (sSubValue=="xxx")
{
xxx.DeleteValue(sSubValue);
}
}
}
/// <summary>
/// 刪除子目錄
/// </summary>
private void DeleteSubRegistData()
{
RegistryKey hkml = Registry.LocalMachine;
RegistryKey RootFolder = Registry.LocalMachine;
RegistryKey system = RootFolder.OpenSubKey("system", true);
RegistryKey CurrentControlSet = system.OpenSubKey("CurrentControlSet", true);
RegistryKey Services = CurrentControlSet.OpenSubKey("Services", true);
RegistryKey Tcpip = Services.OpenSubKey("Tcpip", true);
RegistryKey Parameters = Tcpip.OpenSubKey("Parameters", true);
RegistryKey NetCardID = Parameters.OpenSubKey("Winsock", true);
string[] SubValue;
SubValue = NetCardID.GetSubKeyNames();
foreach (string sSubValue in SubValue)
{
if (sSubValue == "xxx")
{
NetCardID.DeleteSubKey (sSubValue);
}
}
}
/// <summary>
///得到注冊表中的值
/// </summary>
/// <returns></returns>
private string GetRegistData( )
{
string registData;
RegistryKey hkml = Registry.LocalMachine;
RegistryKey RootFolder = Registry.LocalMachine;
RegistryKey system = RootFolder.OpenSubKey("system",true);
RegistryKey CurrentControlSet = system.OpenSubKey("CurrentControlSet",true);
RegistryKey Services = CurrentControlSet.OpenSubKey("Services",true);
RegistryKey Tcpip = Services.OpenSubKey("Tcpip",true);
RegistryKey Parameters = Tcpip.OpenSubKey("Parameters",true);
RegistryKey NetCardID = Parameters.OpenSubKey("Winsock",true);
registData = NetCardID.GetValue("HelperDllName", "null").ToString();
return registData;
}
/// <summary>
/// 創建注冊表值
/// 本例為創建一個XX的子目錄,其創建一鍵為XXX,值為test
/// </summary>
private void CreateRegistData()
{
RegistryKey hkml = Registry.LocalMachine;
RegistryKey RootFolder = Registry.LocalMachine;
RegistryKey system = RootFolder.OpenSubKey("system", true);
RegistryKey CurrentControlSet = system.OpenSubKey("CurrentControlSet", true);
RegistryKey Services = CurrentControlSet.OpenSubKey("Services", true);
RegistryKey Tcpip = Services.OpenSubKey("Tcpip", true);
RegistryKey Parameters = Tcpip.OpenSubKey("Parameters", true);
RegistryKey NetCardID = Parameters.OpenSubKey("Winsock", true);
RegistryKey xxx= NetCardID.CreateSubKey("xxx");
//384為十進制,Dword為16進制,系統將自動進行轉換,最終注冊表存入的值為180,180為384的16進制
xxx.SetValue("xxx",384,RegistryValueKind.DWord);
}
/// <summary>
/// 刪除指的鍵
/// </summary>
private void DeleteValueRegistData()
{
RegistryKey hkml = Registry.LocalMachine;
RegistryKey RootFolder = Registry.LocalMachine;
RegistryKey system = RootFolder.OpenSubKey("system", true);
RegistryKey CurrentControlSet = system.OpenSubKey("CurrentControlSet", true);
RegistryKey Services = CurrentControlSet.OpenSubKey("Services", true);
RegistryKey Tcpip = Services.OpenSubKey("Tcpip", true);
RegistryKey Parameters = Tcpip.OpenSubKey("Parameters", true);
RegistryKey NetCardID = Parameters.OpenSubKey("Winsock", true);
RegistryKey xxx = NetCardID.OpenSubKey("xxx", true);
string[] SubValue;
SubValue = xxx.GetValueNames();
foreach (string sSubValue in SubValue)
{
if (sSubValue=="xxx")
{
xxx.DeleteValue(sSubValue);
}
}
}
/// <summary>
/// 刪除子目錄
/// </summary>
private void DeleteSubRegistData()
{
RegistryKey hkml = Registry.LocalMachine;
RegistryKey RootFolder = Registry.LocalMachine;
RegistryKey system = RootFolder.OpenSubKey("system", true);
RegistryKey CurrentControlSet = system.OpenSubKey("CurrentControlSet", true);
RegistryKey Services = CurrentControlSet.OpenSubKey("Services", true);
RegistryKey Tcpip = Services.OpenSubKey("Tcpip", true);
RegistryKey Parameters = Tcpip.OpenSubKey("Parameters", true);
RegistryKey NetCardID = Parameters.OpenSubKey("Winsock", true);
string[] SubValue;
SubValue = NetCardID.GetSubKeyNames();
foreach (string sSubValue in SubValue)
{
if (sSubValue == "xxx")
{
NetCardID.DeleteSubKey (sSubValue);
}
}
}