手机
当前位置:查字典教程网 >编程开发 >C#教程 >C# 多线程读取注册表,加载至TreeView
C# 多线程读取注册表,加载至TreeView
摘要:复制代码代码如下:usingSystem;usingSystem.Drawing;usingSystem.Windows.Forms;usi...

复制代码 代码如下:

using System;

using System.Drawing;

using System.Windows.Forms;

using System.Threading;

using Microsoft.Win32;

namespace 星空个性化助手

{

public partial class Form1 : Form

{

private delegate void LoadTreeView左侧( TreeNode node );//声明委托类型

public Form1()

{

InitializeComponent ();

}

private void Form1_Load( object sender , EventArgs e )

{

Thread thread = new Thread (new ThreadStart (ReadAllReg));

thread.Start ();

}

/// <summary>

/// 读取注册表

/// </summary>

private void ReadAllReg()

{

LoadTreeView左侧 loadTreeView = new LoadTreeView左侧 (SendToTreeView);

RegistryKey reg = Registry.ClassesRoot;

TreeNode node = new TreeNode ("HKEY_CLASSES_ROOT");

ReadRegistry (reg , node);

reg.Close ();

if( treeView左侧.InvokeRequired )//将读取的根加载至TreeView

treeView左侧.BeginInvoke (loadTreeView , node);

else

{

treeView左侧.Nodes.Add (node);

}

/*----------------------------------------------------*/

reg = Registry.CurrentUser;

node = new TreeNode ("HKEY_CURRENT_USER");

ReadRegistry (reg , node);

reg.Close ();

if( treeView左侧.InvokeRequired )//将读取的根加载至TreeView

treeView左侧.BeginInvoke (loadTreeView , node);

else

{

treeView左侧.Nodes.Add (node);

}

/*----------------------------------------------------*/

reg = Registry.LocalMachine;

node = new TreeNode ("HKEY_LOCAL_MACHINE");

ReadRegistry (reg , node);

reg.Close ();

if( treeView左侧.InvokeRequired )//将读取的根加载至TreeView

treeView左侧.BeginInvoke (loadTreeView , node);

else

{

treeView左侧.Nodes.Add (node);

}

/*----------------------------------------------------*/

reg = Registry.Users;

node = new TreeNode ("HKEY_USERS");

ReadRegistry (reg , node);

reg.Close ();

if( treeView左侧.InvokeRequired )//将读取的根加载至TreeView

treeView左侧.BeginInvoke (loadTreeView , node);

else

{

treeView左侧.Nodes.Add (node);

}

/*----------------------------------------------------*/

reg = Registry.CurrentConfig;

node = new TreeNode ("HKEY_CURRENT_CONFIG");

ReadRegistry (reg , node);

reg.Close ();

if( treeView左侧.InvokeRequired )//将读取的根加载至TreeView

treeView左侧.BeginInvoke (loadTreeView , node);

else

{

treeView左侧.Nodes.Add (node);

}

}

/// <summary>

/// 发送到TreeView

/// </summary>

/// <param name="node">TreeNode</param>

private void SendToTreeView( TreeNode node )

{

treeView左侧.Nodes.Add (node);

treeView左侧.Refresh ();

}

/// <summary>

/// 递归注册表树

/// </summary>

/// <param name="reg">注册表起始点</param>

/// <param name="nodes">起始树,将在它下面建立所有子结点</param>

internal void ReadRegistry( RegistryKey reg , TreeNode nodes )//递归注册表树

{

foreach( string names in reg.GetSubKeyNames () )

{

TreeNode node = new TreeNode (names);

try

{

RegistryKey r = reg.OpenSubKey (names , false);

if( r != null )

{

ReadRegistry (r , node);

r.Close ();

}

else

{

return;

}

}

catch( Exception err )

{

continue;

}

nodes.Nodes.Add (node);

}

}

}

}

【C# 多线程读取注册表,加载至TreeView】相关文章:

C#关机小程序源码

c#实现用SQL池,多线程定时批量执行SQL语句的方法

C#关于反射加载的问题

C# 批处理调用方法

深入C#任务管理器中应用程序选项隐藏程序本身的方法详解

c#读取xml文件到datagridview实例

C#设置子窗体在主窗体中居中显示解决方案

描述C#多线程中lock关键字的使用分析

C#序列化成XML注意细节

使用 C# 动态编译代码和执行的代码

精品推荐
分类导航