商城 设为首页注册本站  论坛  繁體中文

慧民电脑芯片级维修-电脑技巧
手机 | MP3 | MP4 | 显卡 | 主板 | 显示器 | 光存储 | 笔记本 | 网络设备 | 移动存储 | 数码相机
键鼠 | CPU | 音箱 | GPS | 电视 | 服务器 | 投影机 | 机箱电源 | 品牌电脑 | 办公打印 |
| 网站首页 | Cisco | Windows | Linux | Java | Dotnet | Oracle | 网页设计 | 平面设计 | 安全 | 软件应用 | 电脑维修 | 办公维修 |
您现在的位置: 电脑技巧 >> Windows >> 系统技巧 >> 注册表 >> Windows正文

远程注册表读取,与多线程池的应用

文章来源:中国IT实验室收集整理 作者:佚名 更新时间:2007-6-21 【 】 【加入收藏
一般用在域环境下,读取客户机注册的配制信息.
主要代码如下:

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_CURRENT_USER\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");
        }  

  • 上一篇Windows:

  • 下一篇Windows:
  • 最 新 热 门
     低配置电脑如何优化Vista系统运行如飞似XP
     安全修改注册表默认响应方式
     禁用Vista下的硬盘监控任务栏警告
     巧用GhostEXP 将补丁加入GHO文件
     windows运行中几个特殊的执行命令
     技巧:用MSDaRT解决Vista启动故障
     XP中一人远程管理关机好方法
     一次简单修改 让WinRAR解压缩速度更快
     彻底禁用暴风顽固进程 让系统清爽起来
     通吃主流格式 让系统图片查看器更完美
    最 新 推 荐
     安全修改注册表默认响应方式
     更改*.reg文件的默认打开方式,保护注册表
     妙用注册表 全面优化NTFS
     让Win XP注册表“失忆”更简单
     RegSeeker注册表清理简单易用体验
     修改注册表 让Win2008操作更易上手
     修改注册表关闭Windows系统更新提醒
     微软系统关机慢的注册表通用解决方案
     方便你使用:重新分组Windows XP任务栏
     vista“隐蔽”的注册表垃圾清理方法
    相 关 文 章

    安全修改注册表默认响应方式
    XP中一人远程管理关机好方法
    图文细谈远程桌面之3389
    妙用AD计算机管理远程管理客户端
    更改*.reg文件的默认打开方式,保护注册表
    Windows自带功能进行远程诊断调试!
    XP下使用2003的“管理工具”中的“远程桌面…
    使用WIN2003远程路由的VPN进行异地域同步
    精心设防,让“远程登录”更安全
    保障远程桌面Web连接安全四项注意

    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告

      Copyright 2006-2008 pcjx.com All Rights Reserved
    电脑技巧 版权所有 粤ICP备06059145号 地图
    门市地址:广东省佛山市南海区黄岐黄海路133号
    本网站所有内容未经许可不得转载或做其他使用
    电话:0757-81139980 QQ:83306923