<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title><![CDATA[韩卫东@苏州]]></title>
<link>http://www.haoder.com/</link>
<description><![CDATA[创造机会的人是勇者；等待机会的人是愚者]]></description>
<language>zh-cn</language>
<copyright><![CDATA[Copyright 2005 PBlog2 v2.4]]></copyright>
<webMaster><![CDATA[kevin.han#remai.com(haoder)]]></webMaster>
<generator>PBlog2 v2.4</generator> 
<image>
	<title>韩卫东@苏州</title> 
	<url>http://www.haoder.com/images/logos.gif</url> 
	<link>http://www.haoder.com/</link> 
	<description>韩卫东@苏州</description> 
</image>

			<item>
			<link>http://www.haoder.com/default.asp?id=75</link>
			<title><![CDATA[正则表达式匹配多行]]></title>
			<author>kevin.han#remai.com(admin)</author>
			<category><![CDATA[.net]]></category>
			<pubDate>Wed,02 Jun 2010 17:32:59 +0800</pubDate>
			<guid>http://www.haoder.com/default.asp?id=75</guid>	
		<description><![CDATA[&lt;div&gt;<br/>&nbsp;&nbsp;&lt;ul&gt;<br/>&nbsp;&nbsp; &lt;li&gt;item1&lt;/li&gt;<br/>&nbsp;&nbsp; &lt;li&gt;item2&lt;/li&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;item3&lt;/li&gt;<br/>&nbsp;&nbsp;&lt;ul&gt;<br/>&lt;/div&gt;<br/><br/>如果要匹配上面一段，可用如下正则表达式<br/>&lt;div&gt;[\s\S]*?&lt;/div&gt;]]></description>
		</item>
		
			<item>
			<link>http://www.haoder.com/default.asp?id=74</link>
			<title><![CDATA[C#循环输出26个字母]]></title>
			<author>kevin.han#remai.com(admin)</author>
			<category><![CDATA[.net]]></category>
			<pubDate>Sat,10 Apr 2010 14:04:21 +0800</pubDate>
			<guid>http://www.haoder.com/default.asp?id=74</guid>	
		<description><![CDATA[<br/>C#程序当中如果要遍历26个字母，可以使用下面的方法。<br/><br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.haoder.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent"><br/>for (char c = &#39;A&#39;; c &lt;= &#39;Z&#39;; c++)<br/>{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(c.ToString());<br/>} <br/><br/></div></div>]]></description>
		</item>
		
			<item>
			<link>http://www.haoder.com/default.asp?id=73</link>
			<title><![CDATA[批量更新存储过程所有者]]></title>
			<author>kevin.han#remai.com(admin)</author>
			<category><![CDATA[技术]]></category>
			<pubDate>Mon,05 Apr 2010 23:01:47 +0800</pubDate>
			<guid>http://www.haoder.com/default.asp?id=73</guid>	
		<description><![CDATA[一。首先，添加如下存储过程<br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.haoder.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent"><br/>Cr&#101;ate PROCEDURE dbo.ChangeObjectOwner<br/> @OldOwner as NVARCHAR(128)=&#39;FoodKingdom&#39;,--参数原所有者<br/> @NewOwner as NVARCHAR(128)=&#39;dbo&#39;--参数新所有者<br/>AS<br/> <br/>DECLARE @Name&nbsp;&nbsp; as NVARCHAR(128)<br/>DECLARE @Owner&nbsp;&nbsp;as NVARCHAR(128)<br/>DECLARE @OwnerName as NVARCHAR(128)<br/> <br/>DECLARE curObject CURSOR FOR<br/> sel&#101;ct &#39;Name&#39;&nbsp;&nbsp; = name,<br/>&nbsp;&nbsp;&#39;Owner&#39;&nbsp;&nbsp; = user_name(uid)<br/> from sysobjects<br/> wh&#101;re user_name(uid)=@OldOwner<br/> o&#114;der by name<br/> <br/>OPEN&nbsp;&nbsp;curObject<br/>FETCH NEXT FROM curObject INTO @Name, @Owner<br/>WHILE(@@FETCH_STATUS=0)<br/>BEGIN&nbsp;&nbsp;&nbsp;&nbsp; <br/> if @Owner=@OldOwner<br/> begin<br/>&nbsp;&nbsp;set @OwnerName = @OldOwner + &#39;.&#39; + rtrim(@Name)<br/>&nbsp;&nbsp;exec sp_changeobjectowner @OwnerName, @NewOwner<br/> end<br/> <br/> FETCH NEXT FROM curObject INTO @Name, @Owner<br/>END<br/> <br/>close curObject<br/>deallocate curObject<br/>GO<br/><br/></div></div><br/><br/>二。然后，执行以下语句<br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.haoder.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent"><br/>exec ChangeObjectOwner &#39;要更改的名称&#39;,&#39;dbo&#39;<br/></div></div>]]></description>
		</item>
		
			<item>
			<link>http://www.haoder.com/default.asp?id=72</link>
			<title><![CDATA[HttpWebRequest请求超时的错误]]></title>
			<author>kevin.han#remai.com(admin)</author>
			<category><![CDATA[.net]]></category>
			<pubDate>Mon,15 Mar 2010 01:01:27 +0800</pubDate>
			<guid>http://www.haoder.com/default.asp?id=72</guid>	
		<description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;从网上抓取点数据,其间要创建两个HttpWebRequest,第一个请求发送成功后,将服务端返回的Cookie记录下来给第二个 HttpWebRequest使用.代码敲完了就执行吧,但请求到20次左右,总是会出现&#34;请求超时&#34;的错误,找了N久也没找到问题在哪里.<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;开始,我以为是服务端限制了请求数量,于是,找了些代理IP,每个HttpWebRequest分配一个WebProxy,但是问题依然存在,于是我把 Timeout属性改到5000ms,然后再Catch,在Catch中再设置一个失败的标识,Catch完后如果发现标识为失败,则继续发送请求,直到请求成功为止,执行了N长时间,还是在20次左右卡住了,程序一直在不停的try,catch,仍然没有往下继续的意思.<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;没办法,网上搜了一下,没找到对应的数据,后来在园子里一个朋友不太相关的文章中找到了答案,一看,似乎以前就碰到过这个问题,唉,记性不好了,还是记下来吧,免得下次碰到又满世界的去找.<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;其实没有什么大问题,问题就是我第一个HttpWebRequest在GetResponse之后,忘记将取得的WebResponse.Close掉. 原来这个Close还负责释放资源啊...<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;改改代码,加了一行代码,将WebResponse.Close掉后,一切恢复正常.<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(单线程的情况下,关闭掉WebResponse就可以了,多线程的情况下似乎要设置一下 WebRequest.ServicePoint.ConnectionLimit属性)<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 顺便记一下:HttpWebRequest有个AllowAutoRedirect,可以设置是否允许服务端Redirect,默认为true,特殊情况下需要设置为false.]]></description>
		</item>
		
			<item>
			<link>http://www.haoder.com/default.asp?id=71</link>
			<title><![CDATA[公司职位英文简写]]></title>
			<author>kevin.han#remai.com(admin)</author>
			<category><![CDATA[新闻时事]]></category>
			<pubDate>Wed,10 Mar 2010 14:57:06 +0800</pubDate>
			<guid>http://www.haoder.com/default.asp?id=71</guid>	
		<description><![CDATA[CAO: Art 艺术总监<br/>CBO: Business 商务总监<br/>CCO: Content 内容总监<br/>CDO: Development 开发总监<br/>CEO: Executive 首席执行官<br/>CFO: Finance 财务总监<br/>CGO: Gonverment 政府关系<br/>CHO: Human resource 人事总监<br/>CIO: Information 技术总监<br/>CJO: Jet 把营运指标都加一个或多个零使公司市值像火箭般上升的人<br/>CKO: Knowledge 知识总监<br/>CLO: Labour 工会主席<br/>CMO: Marketing 市场总监<br/>CNO: Negotiation 首席谈判代表<br/>COO: Operation 首席营运官<br/>CPO: Public relation 公关总监<br/>CQO: Quality control 质控总监<br/>CRO: Research 研究总监<br/>CSO: Sales 销售总监<br/>CTO: Technology 首席技术官<br/>CUO: User 客户总监<br/>CVO: Valuation 评估总监<br/>CWO: Women 妇联主席<br/>CXO: 什么都可以管的不管部部长<br/>CYO: Yes 什么都点头的老好人<br/>CZO: 现在排最后,等待接班的太子]]></description>
		</item>
		
			<item>
			<link>http://www.haoder.com/default.asp?id=70</link>
			<title><![CDATA[C# 用 WebClient 模拟IE 6.0访问网站 ]]></title>
			<author>kevin.han#remai.com(admin)</author>
			<category><![CDATA[.net]]></category>
			<pubDate>Fri,05 Mar 2010 09:34:43 +0800</pubDate>
			<guid>http://www.haoder.com/default.asp?id=70</guid>	
		<description><![CDATA[有些网站可能会通过识别Http的header参数判断用户是真正用IE在访问,以防止网站被采集。<br/>对策就是在WebClient的Headers中加入三个参数。<br/><br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.haoder.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent"><br/>// 模拟 IE 6.0<br/>WebClient wc = new WebClient( );<br/>wc.Headers.Add ( &#34;Accept&#34;, &#34;image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*&#34; );<br/>wc.Headers.Add ( &#34;Accept-Language&#34;, &#34;zh-CN&#34; );<br/>wc.Headers.Add ( &#34;User-Agent&#34;, &#34;Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)&#34; );<br/>Stream s = wc.OpenRead (url);<br/>StreamReader sr = new StreamReader(s, Encoding.UTF8 );<br/>string result = sr.ReadToEnd ( );<br/></div></div><br/><br/>在WebClient的Headers参数中加入这三个参数，就可以骗过一般的Web Server。<br/>]]></description>
		</item>
		
			<item>
			<link>http://www.haoder.com/default.asp?id=69</link>
			<title><![CDATA[一个有趣的SQL命题 用一条语句切换BIT型的真假值]]></title>
			<author>kevin.han#remai.com(admin)</author>
			<category><![CDATA[技术]]></category>
			<pubDate>Thu,04 Mar 2010 23:26:36 +0800</pubDate>
			<guid>http://www.haoder.com/default.asp?id=69</guid>	
		<description><![CDATA[当然，第一反应是用存储过程。判断原来这个字段值，然后Up&#100;ate。 <br/>网上粗粗找了一下没找到方案。自己一动手，居然有个很有趣的结果，连Wh&#101;re都不用 <br/>对数据库的BIT型赋值，用SQL语句来操作和用管理界面输入不同。管理界面输入必须用TRUE或FALSE来填写。而SQL语句则用0或1 <br/>于是乎，先尝试： <br/>复制代码 代码如下:<br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.haoder.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent"><br/>updat t set b=b+1 wh&#101;re id=1; <br/>sel&#101;ct b from t wh&#101;re id=1; <br/></div></div><br/><br/>b字段一直保持1 <br/>那么用减号呢 <br/>复制代码 代码如下:<br/><br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.haoder.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent"><br/>up&#100;ate t set b=b-1 wh&#101;re id=1; <br/>sel&#101;ct b from t wh&#101;re id=1; <br/></div></div><br/><br/>可以发现每次结果就在0和1之间切换，SQL SERVER把-1当做1来处理。 ]]></description>
		</item>
		
			<item>
			<link>http://www.haoder.com/default.asp?id=68</link>
			<title><![CDATA[C#读写注册表操作类]]></title>
			<author>kevin.han#remai.com(admin)</author>
			<category><![CDATA[.net]]></category>
			<pubDate>Mon,08 Feb 2010 16:38:28 +0800</pubDate>
			<guid>http://www.haoder.com/default.asp?id=68</guid>	
		<description><![CDATA[C#读写注册表操作类，一共包括三个方法. 1. 写注册表 2.修改注册表 3.判断键值是否存在<br/>经测试，本操作类也适用于.net compact framework 2.0, windows mobile 平台的开发。<br/><br/>首先要引入命名空间<br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.haoder.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">using Microsoft.Win32;</div></div><br/><br/>所有代码:<br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.haoder.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent"><br/>using System;<br/>using System.Collections.Generic;<br/>using Microsoft.Win32;<br/><br/>namespace&nbsp;&nbsp;Register<br/>{<br/>&nbsp;&nbsp;&nbsp;&nbsp;public class RegisterOperate<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**/<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// 写入注册表<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;/summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;param name=&#34;strName&#34;&gt;&lt;/param&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public static void SetRegEditData(string strName, string strValue)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RegistryKey hklm = Registry.LocalMachine;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RegistryKey software = hklm.OpenSubKey(&#34;SOFTWARE&#34;, true);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RegistryKey aimdir = software.Cr&#101;ateSubKey(&#34;MySoftware&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aimdir.SetValue(strName, strValue);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch (Exception ex)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(ex.Message);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**/<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// 修改注册表项<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;/summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;param name=&#34;strName&#34;&gt;&lt;/param&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;param name=&#34;strValue&#34;&gt;&lt;/param&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public static void ModifyRegEditData(string strName, string strValue)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RegistryKey hklm = Registry.LocalMachine;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RegistryKey software = hklm.OpenSubKey(&#34;SOFTWARE\\MySoftware&#34;, true);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;software.SetValue(strName, strValue);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch (Exception ex)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(ex.Message);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**/<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// 判断指定注册表项是否存在<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;/summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;param name=&#34;strName&#34;&gt;&lt;/param&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;returns&gt;&lt;/returns&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public static bool IsExist(string strName)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bool exit = false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string[] subkeyNames;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RegistryKey hkml = Registry.LocalMachine;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RegistryKey software = hkml.OpenSubKey(&#34;SOFTWARE&#34;, true);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RegistryKey aimdir = software.OpenSubKey(&#34;MySoftware&#34;, true);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;subkeyNames = aimdir.GetValueNames();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach (string keyName in subkeyNames)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (keyName == strName)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit = true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return exit;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return exit;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch (Exception ex)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(ex.Message);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>}<br/></div></div><br/><br/>使用本类:<br/><br/>RegisterOperate.SetRegEditData(&#34;KeyName&#34;,&#34;KeyValue&#34;)<br/>//在HKEY_LOCAL_MACHINE\Software\MySoftware下面创建KeyName这个键<br/><br/>RegisterOperate.ModifyRegEditData(&#34;KeyName&#34;,&#34;KeyValue&#34;)<br/>//修改HKEY_LOCAL_MACHINE\Software\MySoftware下面KeyName这个键的键值<br/><br/>RegisterOperate.IsExist(&#34;KeyName&#34;)<br/>//判断HKEY_LOCAL_MACHINE\Software\MySoftware下面KeyName这个键是否存在<br/>]]></description>
		</item>
		
			<item>
			<link>http://www.haoder.com/default.asp?id=67</link>
			<title><![CDATA[VB.net 泛型集合]]></title>
			<author>kevin.han#remai.com(admin)</author>
			<category><![CDATA[.net]]></category>
			<pubDate>Tue,10 Nov 2009 13:39:41 +0800</pubDate>
			<guid>http://www.haoder.com/default.asp?id=67</guid>	
		<description><![CDATA[<div class="UBBPanel"><div class="UBBTitle"><img src="http://www.haoder.com/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent"><br/>Public Class MyGenericCollection(Of ItemType)<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&#39; 定义一个通用的集合<br/>&nbsp;&nbsp;&nbsp;&nbsp;Private Items As Collection(Of ItemType)<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&#39; 建立构造函数<br/>&nbsp;&nbsp;&nbsp;&nbsp;Public Sub New()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Items = New Collection(Of ItemType)<br/>&nbsp;&nbsp;&nbsp;&nbsp;End Sub<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&#39; 返回集合中数据项的数量<br/>&nbsp;&nbsp;&nbsp;&nbsp;Public ReadOnly Property Count() As Integer<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return Items.Count<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End Get<br/>&nbsp;&nbsp;&nbsp;&nbsp;End Property<br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;Public ReadOnly Property AllItems() As Collection(Of ItemType)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return Items<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End Get<br/>&nbsp;&nbsp;&nbsp;&nbsp;End Property<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&#39; 得到或设置一个特定的数据项<br/>&nbsp;&nbsp;&nbsp;&nbsp;Public Property Item(ByVal Index As Integer) As ItemType<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return Items(Index)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End Get<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set(ByVal value As ItemType)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Items(Index) = value<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End Set<br/>&nbsp;&nbsp;&nbsp;&nbsp;End Property<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&#39; 给集合添加新的数据项<br/>&nbsp;&nbsp;&nbsp;&nbsp;Public Sub Add(ByVal Value As ItemType)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Items.Add(Value)<br/>&nbsp;&nbsp;&nbsp;&nbsp;End Sub<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&#39; 从集合中删除数据项<br/>&nbsp;&nbsp;&nbsp;&nbsp;Public Sub RemoveAt(ByVal Item As Int32)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Items.RemoveAt(Item)<br/>&nbsp;&nbsp;&nbsp;&nbsp;End Sub<br/><br/>End Class<br/></div></div>]]></description>
		</item>
		
			<item>
			<link>http://www.haoder.com/default.asp?id=66</link>
			<title><![CDATA[分享几个日常开发中经常用到的软件]]></title>
			<author>kevin.han#remai.com(admin)</author>
			<category><![CDATA[技术]]></category>
			<pubDate>Mon,02 Nov 2009 15:33:22 +0800</pubDate>
			<guid>http://www.haoder.com/default.asp?id=66</guid>	
		<description><![CDATA[从事.NET开发也有两年多的时间了，期间积累了一些日常工作中常用的软件，在这里和大家分享一下，希望能为大家的日常工作带来便利，以下排名不分先后：<br/><br/>1. EditPlus(<a href="http://www.editplus.com/" target="_blank">http://www.editplus.com/</a>)：文字处理软件<br/><br/>EditPlus 是一款功能强大的文字处理软件。它可以充分的替换记事本，它也提供网页作家及程序设计师许多强悍的功能。支持 HTML、CSS、PHP、ASP、Perl、C/C++、Java、JavaScript、VBScript 等多种语法的着色显示。程序内嵌网页浏览器，其它功能还包含 FTP 功能、HTML 编辑、URL 突显、自动完成、剪贴文本、行列选择、强大的搜索与替换、多重撤销/重做、拼写检查、自定义快捷键。<br/><br/>2. NotePad2(<a href="http://www.flos-freeware.ch/notepad2.html" target="_blank">http://www.flos-freeware.ch/notepad2.html</a>)：文字处理软件<br/><br/>自定义语法高亮，支持HTML, XML, CSS, JavaScript, VBScript, ASP,PHP, CSS, Perl/CGI,C/C++, C#, Java, VB, Pascal, 汇编, SQL, Python, NSIS,INI, REG, INF, BAT,DIFF等众多脚本文件。支持ANSI，Unicode，UTF-8等编码互换。可以设置无限个书签（9种图标可换）轻松定位。空格，制表符彩色显示，并可互相转换。可以对任意的文本块进行操作，ALT键＋鼠标。对括号｛｝〔〕（）可以高亮配对显示，方便查看(仅对英文符号有效)。可以自定义代码页和字符集，对中文支持良好。使用标准的正则表达式搜索和替换。可以使用半透明模式，cool。快速放大、缩小页面，不用再设定字体大小。可以指定ESC键最小化Notepad2到系统托盘或者关闭Notepad2<br/><br/>3. FastStone Screen Capture(<a href="http://www.faststone.org" target="_blank">http://www.faststone.org</a>)：截图软件<br/><br/>FastStone Screen Capture (FSCapture) 是一款免费的图像浏览、编辑和抓屏工具，支持包括BMP, JPEG, JPEG 2000, GIF, PNG, PCX, TIFF, WMF, ICO 和TGA在内的所有主流图片格式，其独有的光滑和毛刺处理技术让图片更加清晰，提供缩放、旋转、减切、颜色调整功能。只要点点鼠标就能随心抓取屏幕上的任何东西，拖放支持可以直接从系统、浏览器或其他程序中导入图片，收藏夹功能让你能更好的从eNet收集更多精彩图片。<br/><br/>4. Beyond Compare(<a href="http://www.scootersoftware.com/download.php" target="_blank">http://www.scootersoftware.com/download.php</a>)：文件比较软件<br/><br/>Beyond Compare 是一款优秀的文件及文件夹对比工具，程序内建了文件浏览器，方便您针对文件、文件夹、压缩包、FTP网站之间的差异对比及资料同步。<br/><br/>5.&nbsp;&nbsp;Dependency Walker(<a href="http://www.dependencywalker.com/" target="_blank">http://www.dependencywalker.com/</a>)：在实际应用中，我常常利用该软件判断系统中少了哪些必要的DLL组件。<br/><br/>Dependency Walker 是 Microsoft Visual C++ 中提供的非常有用的 PE 模块依赖性分析工具。主要功能如下：查看 PE 模块的导入模块；查看 PE 模块的导入和导出函数；动态剖析 PE 模块的模块依赖性；解析 C++ 函数名称。<br/><br/>6. .NET Reflector(<a href="http://www.red-gate.com/products/reflector/" target="_blank">http://www.red-gate.com/products/reflector/</a>)：反编译器<br/><br/>.NET Reflector是一个类浏览器和反编译器，利用反射机制来分析程序集，以展示程序集中各种类型及其成员的信息。<br/><br/>7. Snippet Compiler(<a href="http://www.sliver.com/dotnet/SnippetCompiler/" target="_blank">http://www.sliver.com/dotnet/SnippetCompiler/</a>)；<br/><br/>Snippet Compiler 是一个基于 Windows的小型应用程序，您可以通过它来编写、编译和运行代码。如果您具有较小的代码段，并且您不希望为其创建完整的 Visual Studio .NET 项目（以及伴随该项目的所有文件），则该工具将很有用。<br/><br/>8.&nbsp;&nbsp;SQL Delta(<a href="http://www.sqldelta.com/" target="_blank">http://www.sqldelta.com/</a>)：数据库同步工具。虽说VS2008也有同样的功能，但用惯了SQL Delta，就基本没有使用VS2008自带的数据库同步功能了。<br/><br/>SQL Delta结合了数据库的结构比较和数据比较功能，使得SQL Delta成为市场上最有价值的数据库比较工具。现在只需点几下鼠标，就可以同步数据库的概要和数据，而且不需要运行Query Analyser来检查结果。SQL Delta也为数据库带来了更容易阅读的表格，能快速统计区别。通过减少在大型文件中查找变量带来的卷动需求使得操作变得简单。<br/><br/>9.&nbsp;&nbsp;SyncToy(<a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=E0FC1154-C975-4814-9649-CCE41AF06EB7" target="_blank">http://www.microsoft.com/downloads/details.aspx?FamilyId=E0FC1154-C975-4814-9649-CCE41AF06EB7</a>&amp;displaylang=en)：文件同步工具<br/><br/>它可以让您的文件在不同的磁盘和文件夹中保持同步并且可以随意处理，甚至可以输入UNC以处理网络驱动器上的文件和任何设备上的信息。<br/><br/>10. IE Developer Tool Bar &amp; Firefox + Firebug：脚本调试工具、DOM浏览工具等等，应该是每个搞WEB的必备工具。PS:IE8中内置的IE Developer Tool Bar功能和之前的版本比较，有显著的提高，但还是略显不足啊。]]></description>
		</item>
		
</channel>
</rss>