首 页 | 精品电影 | 音乐天堂 | 在线游戏 | Flash MTV | 三湘书屋 | 幽默笑话 | 三湘图库 | 美女写真 | IT知识库 | QQ贴图 | 加入书签

网页制作网络编程图形图象操作系统冲浪宝典软件教学网络安全认证考试通信技术电子商务业内动态书籍教程原码

最近更新 文章分类 多媒体类 精品软件

本站搜索:
您的位置:三湘时空 -> IT知识库 -> 文章分类 -> C#应用 -> 远程注册表读取,与多线程池的应用
远程注册表读取,与多线程池的应用


文章类别:C#应用 来源: 作者: 发表日期:2006-11-26 字体:[ ]

小游戏 | 在线影院 | 幽默笑话 | 源码下载 | Flash MTV | 音乐试听 | 书屋 | 美女写真

一般用在域环境下,读取客户机注册的配制信息.
主要代码如下:

private void button1_Click(object sender, System.EventArgs e)
        {
            tabControl1.SelectedIndex=1;

            ThreadStart threadDelegate = new ThreadStart(this.doIt);
            Thread newThread = new Thread(threadDelegate);
            newThread.Start();


        }
        private int number = 0;
        private void doIt()
        {
            int maxthread = int.Parse(txt_numThread.Text);
            string remoteName;
            progressBar1.Value = 0;
            progressBar1.Maximum =(int)n_ip2.Value-(int)n_ip1.Value;
            for(Decimal i = n_ip1.Value;i<=n_ip2.Value;i++)
            {
                remoteName = txt_ipStart.Text+"."+i.ToString();

                WaitCallback async = new WaitCallback(RunGet);
                while(true)
                {
                   
                    Monitor.Enter(number);
                    if(number>5)
                        Thread.Sleep(1000);
                    else
                        break;
                    Monitor.Exit(number);
                }
                if(ThreadPool.QueueUserWorkItem(async,remoteName))
                    Interlocked.Increment(ref number);

            //RunGet(remoteName);
            }
            while(true)
            {
                //myResetEvent.Set();
                Monitor.Enter(number);
                if( number <= 0)
                    break;
                else
                    Thread.Sleep(1000);
                Monitor.Exit(number);
            }
            MessageBox.Show("完成");

           
        }

        private void RunGet(object ip)
        {
            try
            {
                RegistryKey environmentKey = null;
                string remoteName = ip.ToString();
                try
                {
                    // Open HKEY_CURRENadmin\Environment
                    // on a remote computer.
                    environmentKey = RegistryKey.OpenRemoteBaseKey(
                        RegistryHive.LocalMachine, remoteName).OpenSubKey(
                        txt_key.Text);
                }
                catch(IOException ex)
                {
                    addMsg(string.Format("{0}: {1}", remoteName, ex.Message));
               
                }

                // Print the values.
                //            MessageBox.Show(string.Format("\nThere are {0} values for {1}.",
                //                environmentKey.ValueCount.ToString(),
                //                environmentKey.Name));
                //addMsg(environmentKey.GetValue("AutoAdminLogon").ToString());
                object result =     environmentKey.GetValue(txt_value.Text);
                if(result != null)
                {
                    addMsg(string.Format("{0}\t\t{1}",remoteName,result));
                    addSuccessMsg(remoteName,result.ToString());
                }
                else
                {
                    addMsg(string.Format("{0}\t\t读取失败",remoteName));
                }
                //            foreach(string valueName in environmentKey.GetValueNames())
                //            {
                //                addMsg(string.Format("{0,-20}: {1}", valueName, environmentKey.GetValue(valueName).ToString()));
                //            }

                // Close the registry key.
                environmentKey.Close();
            }
            catch
            {
            }
            progressBar1.PerformStep();
            Interlocked.Decrement(ref number);

        }
        private void addMsg(string msg)
        {
            lb_msg.Items.Insert(0,msg);
        }
        private void addSuccessMsg(string Ip,string value)
        {
            txt_result.Text = string.Format("{0}\t\t{1}\r\n",Ip,value)+txt_result.Text;
        }

        private void button2_Click(object sender, System.EventArgs e)
        {
            lb_msg.Items.Clear();
        }

        private void button3_Click(object sender, System.EventArgs e)
        {
            System.IO.StreamWriter sw = new StreamWriter("C:\\1.txt",false,System.Text.Encoding.Default);
            sw.Write(txt_result.Text);
            sw.Close();
            MessageBox.Show("保存到C:\\1.txt");
        }  

上一篇:Photoshop照片调色实例:咖啡怀旧 下一篇:Sql 小结
本栏目热门文章
·C# Socket编程 2006-3-14
·[C#]解决读写包含汉字的txt文件时乱码的问题 2005-10-4
·在C#.net中将查询数据导入EXCEL表输出 2006-3-24
·c#操作word表格 2005-10-4
·C#.Net网络程序开发-Socket篇 2006-3-14
·使用C#在进度条中显示复制文件的进度 2005-11-13
·C#中使用SendMessage 2005-10-4
·利用C#进行AutoCAD的二次开发(二) 2005-10-4
·利用C#进行AutoCAD的二次开发(一) 2005-10-4
·用Visual C#获得计算机名称和IP地址 2005-10-4
新近更新文章
·用C#动态创建Access数据库 2006-12-7
·对C#下函数,委托,事件的一点理解! 2006-12-7
·C#控制Windows Messenger和Windows Live 2006-12-7
·Visual c#的Excle编程 2006-12-7
·C#2.0新的语法扩充(泛型,迭代器,匿名方法) 2006-12-7
·对C#委托及事件委托的理解 2006-12-7
·C# GridView 排序及分页 2006-12-7
·RadioBox、CheckBox和Validating事件的相关处 2006-12-7
·c#远程获取网页内容 2006-12-7
·由C++转向C#:我们需要注意哪些方面的变化 2006-12-7
首 页 | 软件发布 | 广告联系 | 下载帮助 | 意见反馈 | 网站地图
  CopyRight? 2002-2004 WWW.SXSKY.NET? All Rights Reserved
三湘时空 站长QQ:82675303 Email: