Csharp/C#教程:C# 多线程读取注册表,加载至TreeView分享

代码如下:
usingSystem;
usingSystem.Drawing;
usingSystem.Windows.Forms;
usingSystem.Threading;
usingMicrosoft.Win32;
namespace星空个性化助手
{
publicpartialclassForm1:Form
{
privatedelegatevoidLoadTreeView左侧(TreeNodenode);//声明委托类型
publicForm1()
{
InitializeComponent();
}
privatevoidForm1_Load(objectsender,EventArgse)
{
Threadthread=newThread(newThreadStart(ReadAllReg));
thread.Start();
}
///<summary>
///读取注册表
///</summary>
privatevoidReadAllReg()
{
LoadTreeView左侧loadTreeView=newLoadTreeView左侧(SendToTreeView);
RegistryKeyreg=Registry.ClassesRoot;
TreeNodenode=newTreeNode(“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=newTreeNode(“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=newTreeNode(“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=newTreeNode(“HKEY_USERS”);
ReadRegistry(reg,node);
reg.Close();
if(treeView左侧.InvokeRequired)//将读取的根加载至TreeView
treeView左侧.BeginInvoke(loadTreeView,node);
else
{
treeView左侧.Nodes.Add(node);
}
/*—————————————————-*/
reg=Registry.CurrentConfig;
node=newTreeNode(“HKEY_CURRENT_CONFIG”);
ReadRegistry(reg,node);
reg.Close();
if(treeView左侧.InvokeRequired)//将读取的根加载至TreeView
treeView左侧.BeginInvoke(loadTreeView,node);
else
{
treeView左侧.Nodes.Add(node);
}
}
///<summary>
///发送到TreeView
///</summary>
///<paramname=”node”>TreeNode</param>
privatevoidSendToTreeView(TreeNodenode)
{
treeView左侧.Nodes.Add(node);
treeView左侧.Refresh();
}
///<summary>
///递归注册表树
///</summary>
///<paramname=”reg”>注册表起始点</param>
///<paramname=”nodes”>起始树,将在它下面建立所有子结点</param>
internalvoidReadRegistry(RegistryKeyreg,TreeNodenodes)//递归注册表树
{
foreach(stringnamesinreg.GetSubKeyNames())
{
TreeNodenode=newTreeNode(names);
try
{
RegistryKeyr=reg.OpenSubKey(names,false);
if(r!=null)
{
ReadRegistry(r,node);
r.Close();
}
else
{
return;
}
}
catch(Exceptionerr)
{
continue;
}
nodes.Nodes.Add(node);
}
}
}
}
您可能感兴趣的文章:C#实现读取注册表监控当前操作系统已安装软件变化的方法C#通过windows注册表获取软件清单的方法C#操作windows注册表的方法使用C#在注册表中保存信息的例子c#注册表操作类分享c#读写注册表示例分享C#注册表操作实现代码C#操作注册表的方法C#操作注册表的方法详解

标签: 线程 ie 多线程 注册表

关于C/C++中可变参数的详细介绍(va_list,va_start,va_arg,va_end)

探讨++i与i++哪个效率更高

上述就是C#学习教程:C# 多线程读取注册表,加载至TreeView分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/904248.html

(0)
上一篇 2021年10月21日
下一篇 2021年10月21日

精彩推荐