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#实现猜数字游戏
本文实例为大家分享了c#实现猜数字游戏具体代码,供大家参考,具体内容如下给定一个0-100的随机数字猜其大小题目样式:电脑产生一个0到100之间的随机数字,并且...
[阅读全文]
-
-
C# 可空类型的具体使用
在项目中我们经常会遇到可为空类型,那么到底什么是可为空类型呢?下面我们将从4个方面为大家剖析。1、可空类型基础知识顾名思义,可空类型指的就是某个对象类型可以为空...
[阅读全文]
-
-
-
C#实现猜数字小游戏
本文实例为大家分享了c#实现猜数字小游戏的具体代码,供大家参考,具体内容如下效果如图:代码:using system;using system.collecti...
[阅读全文]
-
-
C#实现简单俄罗斯方块
最近在看《.net游戏编程入门经典 c#篇》 第一章介绍了如何制作俄罗斯方块,自己试了试按照书上的步骤,可算是完成了。于是写下这篇文章留作纪念。1.类的设计在充...
[阅读全文]
-
网友评论