<?xml version="1.0" encoding="gb2312"?>
<rss version="2.0">
<channel>
<title><![CDATA[破军独座]]></title>
        <image>
        <title>http://hi.baidu.com</title>
        <link>http://hi.baidu.com</link>
        <url>http://img.baidu.com/img/logo-hi.gif</url>
        </image>
<description><![CDATA[喜欢听蝙蝠唱歌.......]]></description>
<link>http://hi.baidu.com/boyxp</link>
<language>zh-cn</language>
<generator>www.baidu.com</generator>
<ttl>5</ttl>


<item>
        <title><![CDATA[米莱之歌——《左边》]]></title>
        <link><![CDATA[http://hi.baidu.com/boyxp/blog/item/b4f4c9ea9691c6d6d539c9c3.html]]></link>
        <description><![CDATA[
		
		<embed style="width: 450px; height: 390px" pluginspage="http://www.macromedia.com/go/getflashplayer" src="http://player.youku.com/player.php/sid/XMjYzMjYxMTY=/v.swf" width="450" height="390" type="application/x-shockwave-flash" wmode="transparent" play="true" loop="false" menu="false"></embed> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/boyxp/blog/category/%C4%AC%C8%CF%B7%D6%C0%E0">默认分类</a>&nbsp;<a href="http://hi.baidu.com/boyxp/blog/item/b4f4c9ea9691c6d6d539c9c3.html#comment">查看评论</a>]]></description>
        <pubDate>2008-07-09  21:57</pubDate>
        <category><![CDATA[默认分类]]></category>
        <author><![CDATA[wqh21]]></author>
		<guid>http://hi.baidu.com/boyxp/blog/item/b4f4c9ea9691c6d6d539c9c3.html</guid>
</item>

<item>
        <title><![CDATA[《武林外传》李大嘴原型去世--宁财神]]></title>
        <link><![CDATA[http://hi.baidu.com/boyxp/blog/item/d9902f2ec978b5544fc226e2.html]]></link>
        <description><![CDATA[
		
		<div style="font-size: 16px; line-height: 25px"><font face="宋体" size="3">　　从早上八点开始，在无锡做了一整天的话剧宣传，晚上七点，累到头晕眼花。回酒店的路上，在沿途音像店的喇叭听到remix版的tears<br>
4 fears的老歌woman in<br>
chains，心中讶异，十多年前的老歌，居然到现在还有人听，心中暗赞店主识货。<br>
　　晚上十一点半，被小杜电话吵醒，说老鹅前天中午，因酒精中毒过世，享年三十六，woman<br>
in<br>
chains是他大学里最爱听的歌，于是知道，那首歌是他在向我道别。<br>
　　老鹅的鹅，不读e 2，读ne<br>
2，大一军训，一身板绿的他告诉大家：我家养ne。没人知道ne是什么动物，后来急了，当众吟诗一首，ne<br>
ne<br>
ne，曲项向天歌……于是得了这个外号老鹅。他是东北人，伊春市，中国面积最大的城市。有个姑父是某省宣传部的部长，每次酒醉，主动提起他姑父，都会说&ldquo;我这人不爱说这些……&rdquo;，我把他这句话翻译成内心独白&ldquo;低调，低调&rdquo;，用在了李大嘴的身上。<br>
　　一度有人怀疑，他这么笨的学生，能考上大学，全是因为他那个神奇的姑父。虽然他自己解释过许多次，他高考化学是满分，但似乎从来没人相信。直到大四，他被开除前，精细化工的某位老教授专门找到他，请求老鹅考他的研究生，甚至提出：英语不行，我可以找人来给你补课，钱我来出。<br>
　　直到此时，我们才知道，老鹅确实是个化学天才。教授说，老鹅的毕业设计，是他见过的最有想象力的。<br>
　　毕业后，碰到老同学，都在感慨，老鹅生错了地方，他这性格，如果生在香港，一定能变成黑社会的头马，最不济也是白纸扇。哪怕当时考的是北方的大学，他那一身勇气都能使他活得稍微体面些。可惜是在上海……老鹅一直试图在学校建立某种类似黑社会的秩序，通过无意义的斗殴来寻找一份怪异而可怜的尊严，但他失败了，因为这就是绵软而有序的上海，有钱才有尊严。<br>
　　说到尊严，不得不提到lucy，上海女孩，白皙，微胖，爱抹价位一百元左右的香水（十年后提升至千元），穿假名牌，颈上挂着各种金属项链，说话时有一半词汇是英文，词汇量基本不超过新概念范围。老鹅对她的迷恋，持续了四年，据说起因是，老鹅因辱骂军训教官，被教官罚站，在烈日炎炎下，lucy出于同情，偷偷给他送了杯水。<br>
　　老鹅对lucy的迷恋，当得起&ldquo;发乎情、止于理&rdquo;，除了有一次殴打lucy的校外男友，确实没干过什么出格的事，甚至，连正经的表白也没有过。那次殴打，我在旁边看的过瘾。当时情况如下：老鹅喜欢lucy，于是四处宣扬，每次说完，最后一句必是&ldquo;我这人不爱说这些……&rdquo;可怜的lucy很快就像老鹅那可怜的姑父一样，变得全校闻名。<br>
　　为了使自己尽快跟老鹅摘清关系，lucy迅速找了一个校外男友，北京人，开一辆黑色桑塔纳，经常周末来接她吃饭。那个周末，男友又开着名车来了，在八舍楼下等待lucy，老鹅得知，飞奔而至，故意擦碰桑车的后视镜，该男友开门叫骂，被老鹅揪住脖领，进入对峙状态，我记的很清楚，该男友操着一口帅的要命的北京话：动我一下，我敢保证，你在上海永远无法立足……<br>
　　北京男友带着两个肿胀的黑眼圈离开了学校，后来那辆黑色桑车再也没在学校里出现过。lucy每次对同寝室女生提起老鹅，都是那一句恨恨的：十三点，娘个冬采起来。老鹅被开除之后，送了lucy一件礼物，一书包的啤酒瓶盖，他每次喝酒，都把瓶盖揣兜，回家加工，把瓶盖砸成薄片，然后刻上一个心型，送给lucy的瓶盖有十几斤。据说lucy当场就把那包东西扔进了垃圾筒，但我认为，她现在一定会后悔，因为那是我所见过，最浪漫的一件事。<br>
　　Lucy现在混的不错，前些年给一个国企副总当过一年多小蜜，赚到第一桶金，现在拥有自己的公关公司。如果有老朋友看到这篇，请转告lucy老鹅的消息，并告诉她：老鹅一遍遍听woman<br>
in chains，那个woman，当然是她。<br>
　　有次酒醉，老鹅说，此生一定要发明一种药，可以使人产生爱情。这个念头，是他大三大四好好读书的驱动力。据说，他在最简陋的实验室里，几乎做出了类似摇头丸的东西，我们坚信，幸亏他被开除，否则迟早会变成一个大毒贩。<br>
　　老鹅对lucy干过许多蠢事，以后有精力，我会慢慢讲给诸位听，这次先说一件。<br>
　　我们学校当时最厉害的是山东人，我们寝室有一个，叫小齐（他最爱听zepplin，就管他叫小齐）每天半夜跑到操场练一种古拳法，据说叫大梦拳，练到最狠，可以隔空取物白日飞升什么的。隔壁寝室有个嘴贱的上海同学，试图劝说小齐每天睡觉前洗脚，小齐认为这是一种侮辱，于是当场用大梦拳痛殴了上海同学，然后，出于过江龙的恐惧（毕竟是在上海），纠集了一群学校拳击队的山东老乡，挨个敲门：我们刚揍了上海人，你们有意见吗？<br>
　　当然没意见。第二天要考四级，城市荣誉感早就被对考试的恐惧感挤压的一干二净。<br>
　　敲到老鹅的房门时，已经是十一点，刚刚熄灯不久，老鹅聊lucy的新发型正嗨，感叹上海女孩会打扮，话音未落，山东拳师们推门而入，问了那个问题，老鹅当场窜了：有意见……<br>
　　当夜，老鹅一个人力斗山东帮，早上三点，回寝室，满头是血。山东人毫发无伤，但明显感觉，日后见到老鹅都是躲着走。很久以后，才知道当时的情况，老鹅一出门，就知道自己没戏，于是在墙角找了个啤酒瓶，在自己脑袋上敲碎，一边流血一边说：我敢拼命，你们敢吗？<br>
　　山东人处于尊重，用T恤替他包裹伤口，采访他：这位大哥，我们殴打上海同学，跟你有关系吗？<br>
　　老鹅说：我喜欢的妞儿是上海人，谁跟上海人过不去，就是跟她过不去，跟她过不去，就是跟我过不去，你们想跟我过不去吗……<br>
　　这句话被我用在李大嘴身上：谁跟我姑夫过不去，那就是跟朝廷过不去……<br>
　　老鹅对lucy的感情，跟大嘴与蕙兰的感情差不多，男人流水有意，女人落花无情。毕业十多年，老鹅再也没找到过女朋友，一是因为生活窘迫，二，大概还是对那个白胖lucy念念不忘吧。<br>
　　老鹅，最后跟你说句真心话：大家一直认为，Lucy真的很丑，而且从里到外都配不上你。<br>
　　一路走好，希望来生你的审美能得到大幅提高，也希望你在来生能找到真正的、两情相悦的幸福。</font></div>
 <a href="http://hi.baidu.com/boyxp/blog/item/d9902f2ec978b5544fc226e2.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/boyxp/blog/category/%CE%D2%B5%C4%C9%FA%BB%EE">我的生活</a>&nbsp;<a href="http://hi.baidu.com/boyxp/blog/item/d9902f2ec978b5544fc226e2.html#comment">查看评论</a>]]></description>
        <pubDate>2008-01-07  16:13</pubDate>
        <category><![CDATA[我的生活]]></category>
        <author><![CDATA[wqh21]]></author>
		<guid>http://hi.baidu.com/boyxp/blog/item/d9902f2ec978b5544fc226e2.html</guid>
</item>

<item>
        <title><![CDATA[MSSQL To Access ：Access To MSSQL：Access-to-MySQL 数据库转换工具大全]]></title>
        <link><![CDATA[http://hi.baidu.com/boyxp/blog/item/56404a900ede5b89a877a440.html]]></link>
        <description><![CDATA[
		
		<font color="#ff0000">MSSQL To Access v2.3 特别版<br>
<br>
</font>进入<a href="http://www.baidu.com/s?tn=sitehao123&amp;ie=gb2312&amp;bs=%C8%AB%C7%F2%C9%CC%CE%F1%CD%F8+ACCESS%B0%E6&amp;sr=&amp;z=&amp;cl=3&amp;f=8&amp;wd=MSSQL+To+Access+v2.3+%CC%D8%B1%F0%B0%E6&amp;ct=0" target="_blank">http://www.baidu.com/s?tn=sitehao123&amp;ie=gb2312&amp;bs=%C8%AB%C7%F2%C9%CC%CE%F1%CD%F8+ACCESS%B0%E6&amp;sr=&amp;z=&amp;cl=3&amp;f=8&amp;wd=MSSQL+To+Access+v2.3+%CC%D8%B1%F0%B0%E6&amp;ct=0</a><br>
<br>
<br>
<font color="#ff0000">Access To MSSQL下载V2.3最新版</font><br>
<br>
<br>
进入<a href="http://www.baidu.com/s?tn=sitehao123&amp;ct=0&amp;ie=gb2312&amp;bs=MSSQL+To+Access+v2.3+%CC%D8%B1%F0%B0%E6&amp;sr=&amp;z=&amp;cl=3&amp;f=8&amp;wd=Access+To+MSSQL" target="_blank">http://www.baidu.com/s?tn=sitehao123&amp;ct=0&amp;ie=gb2312&amp;bs=MSSQL+To+Access+v2.3+%CC%D8%B1%F0%B0%E6&amp;sr=&amp;z=&amp;cl=3&amp;f=8&amp;wd=Access+To+MSSQL</a><br>
<br>
<br>
<br>
<font color="#ff0000">Access-to-MySQL V3.3下载</font><br>
<br>
<br>
进入<a href="http://www.baidu.com/s?wd=access+to+mysql&amp;lm=0&amp;si=&amp;rn=10&amp;tn=sitehao123&amp;ie=gb2312&amp;ct=0&amp;cl=3&amp;f=1&amp;rsp=0" target="_blank">http://www.baidu.com/s?wd=access+to+mysql&amp;lm=0&amp;si=&amp;rn=10&amp;tn=sitehao123&amp;ie=gb2312&amp;ct=0&amp;cl=3&amp;f=1&amp;rsp=0</a><br> <a href="http://hi.baidu.com/boyxp/blog/item/56404a900ede5b89a877a440.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/boyxp/blog/category/%BC%BC%CA%F5%CE%C4%D5%C2">技术文章</a>&nbsp;<a href="http://hi.baidu.com/boyxp/blog/item/56404a900ede5b89a877a440.html#comment">查看评论</a>]]></description>
        <pubDate>2008-01-05  13:40</pubDate>
        <category><![CDATA[技术文章]]></category>
        <author><![CDATA[wqh21]]></author>
		<guid>http://hi.baidu.com/boyxp/blog/item/56404a900ede5b89a877a440.html</guid>
</item>

<item>
        <title><![CDATA[88888全国众多NB车牌]]></title>
        <link><![CDATA[http://hi.baidu.com/boyxp/blog/item/5c5ab051f851a01c367abeea.html]]></link>
        <description><![CDATA[
		
		<font color="#000099" size="5">　车牌所有人型号　　京A88888韩凌燕宝马WBA　　京C88888北京市旧机动车交易市场有限公司奥迪A6L2.8CVT　　京E88888北京中讯世纪科技发展有限公司宝马WBAGN610　　京F88888陈红晓波罗SVW7164EMi　　京G88888北京中油国门油料销售有限公司宝马WBAGN610　　京B88888北京市信发出租汽车公司天津夏利TJ7100UA　　冀A88888河北省人大常委会办公厅行政处美国凯迪拉克　　冀B88888唐山冀东水泥股份有限公司凯迪莱克6DW69　　冀C88888国务院机关事务管理局北戴河服务局凌志.　　冀D88888申飞飞BUICK牌SGM7300GS　　冀E88888杨运仓奔弛S600　　冀F88888赵陆军奔驰S320　　冀G88888刘赞陆地巡洋舰霸道GRJ120L-GKPGKV　　冀H88888杨林清本特利SCBLC37F23C　　冀J88888郑振华金杯SY6480A1　　冀R88888asdfasdfasdf别克（BUICK）BUICK　　冀T88888高若增不准过户马支队批奥迪CAAUDI100　　晋A88888古爱民宝马528iA　　晋B88888夏华江陆地巡洋舰JTEBU25J740　　晋C88888王红玉奔驰S500　　晋D88888山西长信钢铁有限公司奥迪AUDIA6L2.4AT　　晋E88888中国人民银行晋城市中心支行三星SXZ6450　　晋H88888李爱军帕萨特SVW7183AGi　　晋J88888李永奇宝马760Li　　晋K88888陈建林宝马WBAHN01026D　　晋L88888李军奥迪A8L3.0　　晋M88888刘安珍宝马X53.0i　　沪B88888卞林海BUICKSGM7250G　　沪D88888唐海平宝马WBAGN61020D　　沪C88888陈晓岚别克(BUICK)SGM7161LX　　渝A88888冯红林肯加长型LINCOLN5.0　　渝B88888刘文辞奔驰S320　　渝C88888李兴明（代步车）梅赛德斯-奔驰S280　　渝F88888重庆市万州区移民局三星SXZ6620　　渝H88888重庆移动通信有限责任公司黔江分公司丰田皇冠CROWN　　豫A88888刘刚奔驰S320　　豫B88888张武星丰田CA6510B　　豫C88888河南东裕电器工业有限公司奔驰500SEL126　　豫E88888伦国宾上海波罗SVW7164EMi　　豫F88888河南鑫洋实业有限责任公司梅赛德斯奔驰S280　　豫G88888河南省新乡卫星染化厂奔驰S280　　豫H88888河南汇银纺织有限公司奔驰S280　　豫J88888濮阳市濮石油液化气储运站奔驰600SEL　　豫K88888李祥丰田TV7300RoyalE3　　豫L88888赵铁军丰田佳美JTDBE30K500　　豫M88888杨春花上海别克SGM7252GL　　豫N88888尤文君风度CEDRIC　　豫P88888周口市成功电子有限公司李希良本田雅阁HG7200　　豫Q88888李保民富豪S802.9　　豫R88888王亚平雪铁龙VF7DCXFXR76　　豫S88888陈选清雅阁HG7240　　</font><a name="baidusnap0"></a><font size="5"><strong style="color: black; background-color: #ffff66">豫U88888</strong><font color="#000099">范王虎三菱帕杰罗V732.972L　　云F88888李建光吉利美日牌MR7131A　　云M88888杨诏钧吉利JL6360E1　　辽B88888通运国际联运(美)有限公司奔驰600SEL　　辽C88888鞍山市财政局奥迪AUDI1002.2E　　辽D88888单喜慈宝马WBAFA51040L　　辽F88888周显全梅塞德斯奔驰S320　　辽G88888锦州市义兴铁合金有限公司捷达FV7160GiFE3　　辽H88888营口亚田制衣有限公司奔驰S320　　辽J88888阜新鑫光电力设备制造有限责任公司梅赛德斯奔驰4JGBB86E36A　　辽K88888耿宏军宝马WBAGK610X0D　　辽L88888盘锦柯盈商贸有限公司长安SC6350C　　辽M88888铁岭郭氏集团石油产品销售有限公司宝马BMW745Li　　辽N88888朝阳太平洋实业发展有限公司宝马X5-4.4I4398CC　　辽P88888葫芦岛宏达钼业有限公司凯宴越野4511CC　　黑A88888哈尔滨市春江食品有限责任公司考斯特2694CC　　黑B88888川味大酒店奔驰S600　　黑C88888曹超劳斯莱斯PHANTOM　　黑D88888赵金辉奔驰S280　　黑E88888大庆市容维有限公司奔驰WDB2201651A　　黑F88888伊春大地实业有限责任公司本田里程3.2　　黑G88888李坊文桑塔纳330K8LOLTE2　　黑L88888徐振滨奔驰奔驰S350　　黑M88888绥化润峰房地产开发有限公司奔驰SEL500　　黑N88888张广卿桑塔纳330K8BLOLTD2　　黑P88888石晶别克SGM6511GL8　　桂A88888周瑶奥迪A6L2.4AT　　桂D88888广西苍梧电力集团有限公司丰田霸道2700　　桂E88888北海乡村俱乐部有限公司奔驰E320-140　　蒙A88888赵莉萍萨伯YS3ED49EX33　　蒙D88888刘建国梅塞德斯-奔驰WDB2201761A　　蒙G888881松花江牌HFJ6330AD　　陕A88888西安海关切诺基JP2021　　陕F88888asf汉江sfj6322◎　　吉A88888吕赢奇奔驰S320　　吉B88888陈玉燕卡迪拉克FLEETWOOD　　吉D88888叶长春丰田CA6510◎　　吉G88888白城市交警支队桑塔纳　　吉H88888延边朝鲜族自治州人民政府驻长春办事处奥迪AUDIA6L1.8AT　　闽A88888张月华风度CLFULVAA32EGAEDHDG　　闽B88888莆田市台湾大酒店奔驰WDB2201651A　　闽D88888洪伟鑫佳美JTDBE30K000　　闽F88888连新团梅塞德斯奔驰WDBNG67J74A　　闽G88888林斌宝马WBAHN61036D　　闽H88888小笠原龙一梅塞德斯奔驰WDBNG67J14A　　闽DA8888蔡端宏摩根SA9P8400004　　闽DA7777蔡端宏兰博基尼ZA9BC10E03L　　贵A88888李欣轩丰田凌志LS430　　贵B88888钟山区石桥联营铅锌矿无V32　　贵C88888罗无名奔驰S500　　贵D88888玉屏县运输总公司陈泳辉丰田皇冠JZS155　　贵E88888谭万云飞度HG7132　　贵G88888朱炳华帕杰罗V73WLRXVQL1X　　贵H88888黔东南州凯晟有色金属化工有限公司丰田TV7300Roya1E3　　贵J88888金慕杰林肯TOWNCAR　　粤AA88888广州金利来城市房产有限公司(曾智雄)劳斯莱斯SCAZN00CZRCX　　粤B88888深圳龙飞纺织工业有限公司劳思莱斯SILVERSPUR　　粤D88888郑国华宝马730Li　　粤M88888钟定诗奔驰S320　　粤S88888郑强辉梅塞德斯奔驰WDB2201761A　　川A88888马炳建宝马WBAGL41070D　　川B88888邱公平埃斯卡拉迪1GYEK63N　　川E88888王德彬日产极品Q45　　川F88888德阳市人大常务委员会考斯特COASTER　　川J88888张遂兰奥迪牌AUDIA6L1.8TAT　　川K88888资阳市公安局鲟鱼YJJ6460　　川L88888四川省乐山市振静皮革制品有限公司宝马BMW740IL　　川Q88888四川宜宾昌谊房地产开发有限公司宝马BMW735LI　　川S88888四川省黎明汽车运输集团有限公司宝马BMW730LI　　川T88888岑兆友宝马BMW7301　　川U88888李青松桑塔纳330K8BLOL　　川V88888罗布丰田SCT6490　　川W88888xxxx北京BJ212　　川Z88888四川金杯农业科技发展有限公司奔驰BENZS500　　宁B88888侯芙蓉(宁夏石嘴山市浙宁运输有限公司)夏利TJ7101AU　　琼A88888海口金利木品工艺有限公司雪佛莱　　琼B88888宋乾斌宝马730Li　　琼C88888庄永春奔驰300SE◎　　湘B88888湖南顺意实业有限公司奔驰S320　　湘C88888卿佑富日产风度A32TK　　湘D88888梁洪奔驰S320　　湘E88888谢强奔驰S320　　湘F88888彭勇(银行抵押)丰田　　湘H88888刘佩军桑塔纳330K8BLOLSD1　　湘J88888高少勇宝马3600CC735LI　　湘K88888张光奔驰560◎　　湘L88888陈云飞宝马745Li　　湘M88888陈新民BUICKSGM7250G　　湘N88888丁红梅三星SXZ6481　　皖A88888安徽万振房地产开发有限责任公司法拉利5748CC小轿车ZFFBT55B000　　皖AA8888安徽万振房地产开发有限责任公司宝马5972CC轿车WBAGN81030D　　皖B88888芜湖港储运股份有限公司梅塞德斯奔驰WDB2201671A　　皖C88888蚌埠市隆洋电气设备工程有限公司奔驰SLK230　　皖F88888淮北市口子名酒营销总公司大捷龙2B4GP54L　　皖L88888安徽省博文物资贸易(集团)有限公司宝马4398CC　　皖N88888安徽喜洋洋食品有限公司奔驰S350　　皖P88888李健梅赛德斯-奔驰WDDNG56X45A　　皖Q88888陈霞奔驰3724CC　　鲁A88888济南四建集团房地产开发有限责任公司奥迪AUDIA6L2.8CVT　　鲁B88888青岛国泰商业有限公司林肯1LNLM81W5PY　　鲁C88888山东宏信化工有限公司奔驰S320　　鲁D88888韩军丰田CA6510B　　鲁E88888王安全奔驰S280　　鲁F88888王小莉奔驰WDB2201761A　　鲁G88888李玉金桑塔纳SVW7182HFi　　鲁H88888银河德普胶带有限公司奥迪WAUMR44EX6N　　鲁J88888陈琛林肯1L1FM8LW　　鲁K88888孙志慧宝马WBAGN41050D◎　　鲁L88888日照市大海大酒店昌河CH6321　　鲁M88888山东位桥染织有限公司张乃梓奔驰S500　　鲁N88888项裕辉奔驰WDB1240321B　　鲁P88888山东时风集团有限责任公司凌志LS430　　鲁Q88888郭树富凯宴WP1ZZZ9PZ3L　　鲁R88888付朝群奥迪AUDIA6L2.8AT　　鲁U88888青岛福日汽车销售有限公司宝马BMWL7　　新A88888伊力哈木.肉孜丰田FZJ100L　　新M88888库尔勒金华包装制品有限责任公司庆铃NKR55ELW-RY9　　苏A88888南京玄武饭店有限责任公司奔驰WDB1400331A　　苏C88888徐州市金满楼房地产开发有限公司奔驰WDB2201651A　　苏D88888江苏山川电力燃料有限公司宝马BMW740ILD　　苏E88888蔡廷辉日产奇骏JN1TBNT30Z0　　苏G88888连云港兴隆实业集团有限公司梅塞德斯奔驰S500　　苏J88888陈林泽本茨420SEL　　苏K88888扬州第二发电有限责任公司福特1FDRE14W◎　　苏L88888徐斌奔驰BCC200　　苏M88888春兰(集团)公司奔驰S320　　浙A88888李雅玲上海别克SGM7160SCX◎　　浙B88888宁波海诚进出口有限公司奔驰S280　　浙D88888冯永良凯宴4511CC越野车WP1AC29P66L　　浙E88888浙江家业皮革有限公司奔驰S500　　浙G88888金华市景苑房地产开发有限公司奔驰S320　　浙H88888衢州叶氏商贸有限公司奔驰S320L　　浙J88888时间房地产建设集团有限公司宝马728IL　　赣A88888南昌市新东方大酒店宝马BMWL7　　赣B88888大余县公安局交通警察大队本田JHMCB76611C　　赣C88888宜春地区建筑工程总公司上海别克BUICKGLX　　赣D88888罗邦平雅阁HG7300◎　　赣F88888吴建平奔驰S320◎　　赣H88888景德镇景东陶瓷有限公司新甲壳虫1781CC　　赣K88888新余新华夏汽车销售有限公司帕萨特SVW7183FJi　　赣L88888鹰潭市鹰安公司公爵VIP　　鄂A88888付幼生宝马WBAGN61030D　　鄂C88888刘？`奥迪牌AUDIA6L2.8AT　　鄂D88888荆州恒隆汽车零部件制造有限公司普瑞维亚2362CC小客车JTEGD34M500◎　　鄂G88888中共鄂州市委小车队皇冠牌3.0　　鄂J88888黄刚强北京现代牌BH7270A◎　　鄂P88888神农架林区马鹿场矿业开发有限责任公司梅塞德斯-奔驰S320　　鄂Q88888吴际明奥迪牌AUD1200　　浙AAA008杭州华达房地产开发有限公司宾利SCBCY63W45C　　浙A98888陈影法拉利ZFFYR51B000　　浙A6M108杭州杭派精品服装市场有限公司法拉利ZFFYR51B000　　浙A5E343杭州碧水蓝天环保科技有限公司法拉利ZFFYT53B000◎e　　浙BK8888陆汉振劳斯莱斯SCALA62E82C　　浙DG7888郦国敏宾利SCBLC37FX2C◎　　浙A23S85杭州嘉合贸易有限公司玛莎拉蒂ZAMEC38B000◎I　　浙GL8888俞朝忠奔驰WDB2201751A　　浙A90009陈翊民保时捷WPOZZZ99Z3S　　浙AY3288杭州立山皮件有限公司保时捷WPOZZZ99Z4S　　浙B33333邱闻波保时捷WPOZZZ98Z1S　　浙BG5555宁波天缘实业有限公司宝马WBAEH71060B　　浙C44444张国林宝马WBAGN81040D　　闽CC7777黄智鸿保时捷WPOZZZ99Z2S　　闽DE7361刘双兴摩德纳ZFFYR51B000　　浙BG8888束玉琪普瑞维亚JTEGD34M500◎　　浙A99999正泰集团公司驻杭州办事处宝马WBAGK81090D◎　　浙A77777温州市东方名剪美容美发有限公司杭州分公司宝马WBAGN61070D　　浙A66666浙江世纪投资有限公司奥迪AUDIA6L2.8CVT　　浙A55555广厦房地产开发集团有限公司保时捷WP1ZZZ9PZ3L　　浙A44444杭州市电力局海拉克斯RZN149L-PRMSU　　浙A22222浙江方正房地产开发有限公司风度JN1CAUA32UO　　浙A11111杭州武林造纸厂马自达HB929　　浙AK8888浙江正大纸业集团有限公司保时捷WP1AB29P44L　　浙A61111杭州龙盛投资有限公司悍马5GRGN23U　　浙AE8288浙江农夫山泉饮用水有限公司悍马5GRGN23U　　浙KK8888朱文连悍马5GRGN23U　　沪D40431陈德军凯宴WP1AC29P54L　　沪DQ6229陈德军梅塞德斯奔驰WDB2201671A◎　　浙AY6590杭州科博纸业有限责任公司揽胜SALMN15476A　　浙A1Z570杭州宝亿物资有限公司凯宴WP1ZZZ9PZ5L0　　AW9999富阳市鑫宏物资有限公司宝马WBAGN81070D </font></font> <a href="http://hi.baidu.com/boyxp/blog/item/5c5ab051f851a01c367abeea.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/boyxp/blog/category/%CE%D2%B5%C4%C9%FA%BB%EE">我的生活</a>&nbsp;<a href="http://hi.baidu.com/boyxp/blog/item/5c5ab051f851a01c367abeea.html#comment">查看评论</a>]]></description>
        <pubDate>2008-01-04  12:37</pubDate>
        <category><![CDATA[我的生活]]></category>
        <author><![CDATA[wqh21]]></author>
		<guid>http://hi.baidu.com/boyxp/blog/item/5c5ab051f851a01c367abeea.html</guid>
</item>

<item>
        <title><![CDATA[asp.net IIS 新建站点]]></title>
        <link><![CDATA[http://hi.baidu.com/boyxp/blog/item/36b8d72a1c55ca2ed42af136.html]]></link>
        <description><![CDATA[
		
		<p>类库文件：</p>
<p>using System;<br>
using System.Collections;<br>
using System.DirectoryServices;<br>
using System.Text.RegularExpressions;</p>
<p>namespace iis<br>
{<br>
&nbsp;&nbsp;&nbsp;  /// &lt;summary&gt;<br>
&nbsp;&nbsp;&nbsp;  /// IIS管理类，可以实现创建站点、虚拟目录，删除虚拟目录等<br>
&nbsp;&nbsp;&nbsp;  /// &lt;/summary&gt;<br>
&nbsp;&nbsp;&nbsp;  public class IISManager<br>
&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  private string _server, _website, _AnonymousUserPass, _AnonymousUserName;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  protected DirectoryEntry rootfolder;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  private string _serverip, _domain, _webSiteName, _port, _path;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  #region 构造函数<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// 构造函数<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;/summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  public IISManager()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //默认情况下使用localhost，即访问本地机<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  _server = &quot;localhost&quot;;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  _website = &quot;1&quot;;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// 构造函数<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;/summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;param name=&quot;strServer&quot;&gt;服务器&lt;/param&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  public IISManager(string strServer)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  _server = strServer;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  _website = &quot;1&quot;;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// 构造函数<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;/summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;param name=&quot;strServer&quot;&gt;服务器&lt;/param&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;param name=&quot;website&quot;&gt;站点，每一个站点为1，第二个站点为2，依此类推&lt;/param&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  public IISManager(string strServer, int website)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  _server = strServer;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  _website = website.ToString();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  #endregion</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  #region 定义公共属性</p>
<p><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  #region 新建一个网站必须设置的五个参数</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// 用于网站标题,描述<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;/summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  public string WebSiteName<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  get { return _webSiteName; }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  set { _webSiteName = value; }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// 新建立网站的端口,一般设置为80<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;/summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  public string Port<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  get { return _port; }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  set { _port = value; }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// 新建立网站的物理路径<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;/summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  public string Path<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  get { return _path; }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  set { _path = value; }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// 服务器的IP地址<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;/summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  public string ServerIP<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  get { return _serverip; }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  set { _serverip = value; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// 网站访问的域名<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;/summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  public string DoMain<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  get { return _domain; }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  set { _domain = value; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  #endregion</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// 匿名访问用户<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;/summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  public string AnonymousUserName<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  get { return _AnonymousUserName; }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  set { _AnonymousUserName = value; }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// 匿名访问用户密码<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;/summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  public string AnonymousUserPass<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  get { return _AnonymousUserPass; }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  set { _AnonymousUserPass = value; }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// 服务器，可以是IP或计算名<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;/summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  public string Server<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  get { return _server; }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  set { _server = value; }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// 站点，一般来说第一台主机为1,第二台主机为2，依次类推<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;/summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  public int WebSite<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  get { return Convert.ToInt32(_website); }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  set { _website = Convert.ToString(value); }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</p>
<p><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  #endregion</p>
<p><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// 连接服务器<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;/summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  public void Connect()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ConnectToServer();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// 连接服务器<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;/summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;param name=&quot;strServer&quot;&gt;服务器名称&lt;/param&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  public void Connect(string strServer)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  _server = strServer;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ConnectToServer();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// 连接服务器<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;/summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;param name=&quot;strServer&quot;&gt;服务器名称&lt;/param&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;param name=&quot;strWebSite&quot;&gt;站点，一般来说第一台主机为1,第二台主机为2，依次类推&lt;/param&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  public void Connect(string strServer, string strWebSite)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  _server = strServer;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  _website = strWebSite;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ConnectToServer();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</p>
<p><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  #region 获取新网站id的方法<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// 获取网站系统里面可以使用的最小的ID。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// 这是因为每个网站都需要有一个唯一的编号，而且这个编号越小越好。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// 这里面的算法经过了测试是没有问题的。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;/summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;returns&gt;最小的id&lt;/returns&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  public string GetNewWebSiteID()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ArrayList list = new ArrayList();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  string tmpStr;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  string entPath = String.Format(&quot;IIS://{0}/w3svc&quot;, this._server);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  DirectoryEntry ent = new DirectoryEntry(entPath);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  foreach (DirectoryEntry child in ent.Children)<br>
&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;  if (child.SchemaClassName == &quot;IIsWebServer&quot;)<br>
&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;  tmpStr = child.Name.ToString();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  list.Add(Convert.ToInt32(tmpStr));<br>
&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;  }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  list.Sort();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  int i = 1;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  foreach (int j in list)<br>
&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;  if (i == j)<br>
&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;  i++;<br>
&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;  }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  return i.ToString();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  #endregion</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  #region 新建立一个IIS WEB站点</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// 添加一个站点<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;/summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  public string CreateWebSite()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  int siteID = int.Parse(GetNewWebSiteID());<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  try<br>
&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;  DirectoryEntry root = new DirectoryEntry(&quot;IIS://&quot; + this._server + &quot;/W3SVC&quot;);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  if (!EnsureNewSiteEnavaible(this._serverip + &quot;:&quot; + this._port + &quot;:&quot; + this._domain))<br>
&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;  return &quot;此用户名的网站已经存在！&quot;;<br>
&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;  else<br>
&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;  DirectoryEntry site = (DirectoryEntry)root.Invoke(&quot;Create&quot;, &quot;IIsWebServer&quot;, siteID);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  site.Invoke(&quot;Put&quot;, &quot;ServerComment&quot;, this._webSiteName);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  site.Invoke(&quot;Put&quot;, &quot;KeyType&quot;, &quot;IIsWebServer&quot;);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  site.Invoke(&quot;Put&quot;, &quot;ServerBindings&quot;, this._serverip + &quot;:&quot; + this._port + &quot;:&quot; + this._domain);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  site.Invoke(&quot;Put&quot;, &quot;ServerState&quot;, 2);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  site.Invoke(&quot;Put&quot;, &quot;FrontPageWeb&quot;, 1);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  site.Invoke(&quot;Put&quot;, &quot;DefaultDoc&quot;, &quot;index.aspx,index.html,index.html,default.aspx,default.htm,default.html&quot;);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  site.Invoke(&quot;Put&quot;, &quot;ServerAutoStart&quot;, 1);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  site.Invoke(&quot;Put&quot;, &quot;ServerSize&quot;, 1);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  site.Invoke(&quot;SetInfo&quot;);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  DirectoryEntry siteVDir = site.Children.Add(&quot;Root&quot;, &quot;IISWebVirtualDir&quot;);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  siteVDir.Properties[&quot;AppIsolated&quot;][0] = 2;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  siteVDir.Properties[&quot;Path&quot;][0] = this._path;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  siteVDir.Properties[&quot;AccessFlags&quot;][0] = 513;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  siteVDir.Properties[&quot;FrontPageWeb&quot;][0] = 1;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  siteVDir.Properties[&quot;AppRoot&quot;][0] = &quot;LM/W3SVC/&quot; + siteID + &quot;/Root&quot;;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  siteVDir.Properties[&quot;AppFriendlyName&quot;][0] = &quot;ROOT&quot;;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  siteVDir.CommitChanges();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  site.CommitChanges();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  return &quot;创建站点成功！&quot;;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</p>
<p><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br>
&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;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  return ex.Message;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  #endregion</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  #region 删除一个网站</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// 删除一个网站。根据网站名称删除。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;/summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;param name=&quot;siteName&quot;&gt;网站名称&lt;/param&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  public void DeleteWebSiteByName(string siteName)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  string siteNum = GetWebSiteNum(siteName);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  string siteEntPath = String.Format(&quot;IIS://{0}/w3svc/{1}&quot;, this._server, siteNum);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  DirectoryEntry siteEntry = new DirectoryEntry(siteEntPath);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  string rootPath = String.Format(&quot;IIS://{0}/w3svc&quot;, this._server);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  DirectoryEntry rootEntry = new DirectoryEntry(rootPath);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  rootEntry.Children.Remove(siteEntry);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  rootEntry.CommitChanges();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  #endregion</p>
<p><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  #region 获取一个网站编号的方法<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// 获取一个网站的编号。根据网站的ServerBindings或者ServerComment来确定网站编号<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;/summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;param name=&quot;siteName&quot;&gt;&lt;/param&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;returns&gt;返回网站的编号&lt;/returns&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  public string GetWebSiteNum(string siteName)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Regex regex = new Regex(siteName);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  string tmpStr;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  string entPath = String.Format(&quot;IIS://{0}/w3svc&quot;, this._server);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  DirectoryEntry ent = new DirectoryEntry(entPath);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  foreach (DirectoryEntry child in ent.Children)<br>
&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;  if (child.SchemaClassName == &quot;IIsWebServer&quot;)<br>
&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;  if (child.Properties[&quot;ServerBindings&quot;].Value != null)<br>
&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;  tmpStr = child.Properties[&quot;ServerBindings&quot;].Value.ToString();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  if (regex.Match(tmpStr).Success)<br>
&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;  return child.Name;<br>
&nbsp;&nbsp;&nbsp;&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;  }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  if (child.Properties[&quot;ServerComment&quot;].Value != null)<br>
&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;  tmpStr = child.Properties[&quot;ServerComment&quot;].Value.ToString();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  if (regex.Match(tmpStr).Success)<br>
&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;  return child.Name;<br>
&nbsp;&nbsp;&nbsp;&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;  }<br>
&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;  }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  return &quot;没有找到要删除的站点&quot;;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  #endregion</p>
<p><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  #region Start和Stop网站的方法</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  public void StartWebSite(string siteName)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  string siteNum = GetWebSiteNum(siteName);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  string siteEntPath = String.Format(&quot;IIS://{0}/w3svc/{1}&quot;, this._server, siteNum);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  DirectoryEntry siteEntry = new DirectoryEntry(siteEntPath);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  siteEntry.Invoke(&quot;Start&quot;, new object[] { });<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  public void StopWebSite(string siteName)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  string siteNum = GetWebSiteNum(siteName);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  string siteEntPath = String.Format(&quot;IIS://{0}/w3svc/{1}&quot;, this._server, siteNum);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  DirectoryEntry siteEntry = new DirectoryEntry(siteEntPath);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  siteEntry.Invoke(&quot;Stop&quot;, new object[] { });<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  #endregion</p>
<p><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  #region 确认网站是否相同</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  public bool EnsureNewSiteEnavaible(string bindStr)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  string entPath = String.Format(&quot;IIS://{0}/w3svc&quot;, this._server);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  DirectoryEntry ent = new DirectoryEntry(entPath);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  foreach (DirectoryEntry child in ent.Children)<br>
&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;  if (child.SchemaClassName == &quot;IIsWebServer&quot;)<br>
&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;  if (child.Properties[&quot;ServerBindings&quot;].Value != null)<br>
&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;  if (child.Properties[&quot;ServerBindings&quot;].Value.ToString() == bindStr)<br>
&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;  return false;<br>
&nbsp;&nbsp;&nbsp;&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;  }<br>
&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;  }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  return true;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  #endregion</p>
<p><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  #region 私有方法</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// 关闭当前对象<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;/summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  public void Close()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  rootfolder.Dispose();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// 连接服务器<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  /// &lt;/summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  private void ConnectToServer()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  string strPath = &quot;IIS://&quot; + _server + &quot;/W3SVC/&quot; + _website + &quot;/ROOT&quot;;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  try<br>
&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;  this.rootfolder = new DirectoryEntry(strPath);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  catch (Exception)<br>
&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;  bl500w.config.Info.ErrInfo(&quot;无法连接到服务器&quot;);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br>
&nbsp;&nbsp;&nbsp;  }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  #endregion<br>
}</p>
<p> </p> <a href="http://hi.baidu.com/boyxp/blog/item/36b8d72a1c55ca2ed42af136.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/boyxp/blog/category/%BC%BC%CA%F5%CE%C4%D5%C2">技术文章</a>&nbsp;<a href="http://hi.baidu.com/boyxp/blog/item/36b8d72a1c55ca2ed42af136.html#comment">查看评论</a>]]></description>
        <pubDate>2007-12-13  09:55</pubDate>
        <category><![CDATA[技术文章]]></category>
        <author><![CDATA[wqh21]]></author>
		<guid>http://hi.baidu.com/boyxp/blog/item/36b8d72a1c55ca2ed42af136.html</guid>
</item>

<item>
        <title><![CDATA[编写自己的MSN机器人]]></title>
        <link><![CDATA[http://hi.baidu.com/boyxp/blog/item/e396912373430347ad34de80.html]]></link>
        <description><![CDATA[
		
		<div style="text-indent: 21pt"><strong><font size="5">概述</font></strong></div>
<div style="text-indent: 21pt">现在各类即时通信软件琳琅满目，相信接触过INTERNET的人都会使用过其中的一部分。在中国就目前用户量而言，腾讯公司的QQ、微软公司的MSN Messenger以及网易公司的POPO排名在前三位。不过令人比较遗憾的是，腾讯公司和网易公司对于QQ以及POPO使用的通信协议并没有对外界公开，正是由于这样的技术壁垒，使得一些即时通信的开发者很难在这些用户群中开辟新的客户服务渠道。</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>不过值得庆幸的是，由微软公司开发的MSN即时通信软件，其客户端与WINDOWS系统的紧密整合，加之其运行稳定、简单易用以及全世界通用性强等特点。简体中文版一经推出，用户数量即以几何数量的增加。更令大家欢呼雀跃的是微软公司还提供的MSN的开发API并在其网站上向全世界公布了MSN的通信协议。这令众多开发者为MSN拓展功能和对客户进行更个性化的服务成为可能，例如著名的MSN PLUS就是一款通过MSN API开发的MSN功能扩展插件，目前已经为众多MSN使用者所接收。</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>同时，通过MSN的通信协议，网络上更出现了为数众多的使用MSN通信协议的MSN机器人。他们通过接收用户的消息并进行自动化的处理，使MSN的用户能够享受到各类公共信息的服务。</div>
<div style="margin: 13pt 0cm"><strong><font size="5">技术介绍</font></strong></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>由于MSN通信协议是基于TCP/IP的ASCII文本协议，因此通过WINDOWS的SOCKET与微软架设在全球的MSN服务器按照既定的协议进行通信，就可以与全球的MSN用户进行即时的消息和文件的传输（具体的MSN协议可以通过该网页获得<a href="http://www.hypothetic.org/docs/msn/index.php"><font color="#800080">http://www.hypothetic.org/docs/msn/index.php</font></a>）。不过MSN的协议颇为复杂，而且通信命令全部都是英语的缩写，对于初识该协议的开发者来说，熟悉和实现协议费时又费力。</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>现在网络上有一些实现了MSN P8协议的开发包可以供开发者使用，这样就可以使大家把精力更专注于逻辑的实现。</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>目前比较流行的开发包有两种：</div>
<div style="margin: 0cm 0cm 0pt 42pt; text-indent: -21pt"><span>1.<span style="font: 7pt  Times New Roman ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span></span><span style="color: black">jMSN</span><span style="color: black">是封装了</span><span style="color: black">MSN Messenger</span><span style="color: black">开放的通讯协议的</span><span style="color: black">JAVA API</span><span style="color: black">，通过这个</span><span style="color: black">API</span><span style="color: black">开发者完全可以使用</span><span style="color: black">JAVA</span><span style="color: black">语言模拟出</span><span style="color: black">MSN Messenger</span><span style="color: black">软件，</span><span style="color: black">API</span><span style="color: black">的作者也提供一个用</span><span style="color: black">JAVA</span><span style="color: black">语言编写的在某方面功能甚至比</span><span style="color: black">MSN Messenger</span><span style="color: black">还强大的</span><span style="color: black">MSN </span><span style="color: black">客户端软件。由于采用了跨平台的</span><span style="color: black">JAVA</span><span style="color: black">语言开发，因此该软件也可同时运行于其他操作系统，目前已经经过测试的有各种</span><span style="color: black">Linux</span><span style="color: black">系统以及</span><span style="color: black">Mac OS</span><span style="color: black">上，当然还有视窗操作系统。</span><span style="color: black">jMSN</span><span style="color: black">是一个韩国人开发的开放源码的</span><span style="color: black">API</span><span style="color: black">，可以从</span><span style="color: black"><a href="http://sourceforge.net/projects/jmsn/" target="_blank"><font color="#0000ff">http://sourceforge.net/projects/jmsn/</font></a></span><span style="color: black">站点上下载，该项目的首页基本上以韩文为主，包括它的</span><span style="color: black">API</span><span style="color: black">文档的说明都是韩文。</span></div>
<div style="margin: 0cm 0cm 0pt 42pt; text-indent: -21pt"><span>2.<span style="font: 7pt  Times New Roman ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span></span>dotMSN是由一位丹麦的高手开发的基于.NET的开发包，使用的使MSN P8协议，虽然它没有支持到目前刚刚推出的MSN P10。但是，其开发包的功能之强大，是我使用过的MSN开发包中最好的。尤其值得称道的是，作者对于dotMSN提供了非常详尽的文档支持和示例代码（<span style="font-size: 9.5pt"><a href="http://members.home.nl/b.geertsema/dotMSN/example/Example.zip" target="_blank"><font color="#0000ff">http://members.home.nl/b.geertsema/dotMSN/example/Example.zip</font></a></span>）。利用该开发包，你可以轻松地实现自己的MSN机器人。</div>
<div style="margin: 0cm 0cm 0pt 21pt">现在，我就来带领大家建立自己的MSN机器人了。</div>
<div style="margin: 13pt 0cm"><strong><font size="5">技术准备</font></strong></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>在使用dotMSN之前，我先给大家介绍一下.NET框架的大致情况以及VS.NET集成开发环境，这样便于大家在开发时更方便、快捷。</div>
<div style="margin: 13pt 0cm"><strong><font size="4"><font size="5">.NET框架</font></font></strong></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  .NET </span>框架是 Windows Server System 构建，部署与运行 Web 服务与应用程序的编程模型。该框架托管了大部分深层结构，让开发人员专注于撰写应用程序的业务逻辑代码。.NET 框架的基本构成如下：</div>
<div style="margin: 0cm 0cm 0pt 42pt; text-indent: -21pt"><span>l<span style="font: 7pt  Times New Roman ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span></span>公共语言运行库（CLR）</div>
<div style="margin: 0cm 0cm 0pt 42pt; text-indent: -21pt"><span>l<span style="font: 7pt  Times New Roman ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span></span>.NET Framework类</div>
<div style="margin: 0cm 0cm 0pt 42pt; text-indent: -21pt"><span>l<span style="font: 7pt  Times New Roman ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span></span>ASP.NET</div>
<div style="margin: 0cm 0cm 0pt 42pt; text-indent: -21pt"><span>l<span style="font: 7pt  Times New Roman ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span></span>Web Service</div>
<div style="margin: 0cm 0cm 0pt 42pt; text-indent: -21pt"><span>l<span style="font: 7pt  Times New Roman ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span></span>.NET远程处理</div>
<div style="margin: 0cm 0cm 0pt 42pt; text-indent: -21pt"><span>l<span style="font: 7pt  Times New Roman ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span></span>Windows窗体类</div>
<div style="text-indent: 21pt">其中CLR和.NET框架是所有基于.NET程序的基础。</div>
<div style="text-indent: 21pt">CLR可以是各类不同的应用程序（ASP.NET程序、移动程序、WINDOWS窗体程序）等都基于同样的运行库中。在部署和产品发布中可以轻松地屏蔽掉在VS 6.0时代被大家成为&ldquo;DLL噩梦&rdquo;的DLL重复版本问题。</div>
<div style="text-indent: 21pt">.NET 框架包括了大量类，接口，以及值类型，使开发过程得以加速和优化，同时提供了系统功能的访问途径。为了实现跨语言操作性，.NET 框架类型遵从公共语言规范 (CLS) ，因此可以使用任何有编译器支持的语言。这就允许企业的 IT 部门在保留现有开发人员基础上得以拓展，迅速开始 .NET 应用程序的开发，或利用完全的互操作性对现有应用程序用 .NET 特性加以改进。</div>
<div style="text-indent: 21pt">其他的基本构成大都与不同类型的应用有关。</div>
<div style="text-indent: 21pt">ASP.NET 是一个革命性的编程框架，使快速开发强大的 Web 应用程序和服务成为可行。它提供了最方便、最灵活的途径来构建，部署和运行 Web 应用程序，面向任何浏览器或设备。</div>
<div style="text-indent: 21pt">XML Web 服务是一个包装成单个实体的系列函数集，并发布出来为其他应用程序提供数据和服务。应用程序通过行业标准的万维网协议与数据格式，如 HTTP，XML，以及简单对象访问协议 (Simple Object Access Protocol, SOAP) 来访问 Web 服务，且不需要关心 Web 服务的具体实现方法。Web 服务是建立开放分布式系统的基石。</div>
<div style="text-indent: 21pt">通信是跨网络或跨应用程序域对象的关键因素，这些对象又被称作远程对象。.NET 远程处理提供了一种强力高效的机制，允许对象之间跨越应用程序域实现交互。</div>
<div style="text-indent: 21pt">存在于 .NET 应用程序及应用程序域之间的通信，通过负责在远程对象之间传送消息的通道而产生。一条消息被通道传送前，会首先被格式化程序格式化（编码或解码）。.NET 框架支持 HTTP 和 传输控制协议 (TCP) 通道，以及 SOAP 和二进制的格式化程序。HTTP 通道使用 SOAP 格式化程序来传送消息，而 TCP 通道使用二进制格式化程序。这两种通道都可以自定义使用其他的格式化程序。第三方提供的通道同样是可行的。HTTP 通道使用 SOAP 格式化程序来传送消息，而 TCP 通道使用二进制格式化程序。这两种通道都可以自定义使用其他的格式化程序。第三方提供的通道同样是可行的。</div>
<div style="text-indent: 21pt">Windows 窗体拓展了传统的完全桌面化的 Windows 应用程序，同时，Visual Studio 带来的开发体验将我们带入托管代码与公共语言运行库的世界。</div>
<div style="margin: 13pt 0cm"><strong><font size="4"><font size="5">VS.NET集成开发环境</font></font></strong></div>
<div style="text-indent: 21pt">要创建在 .NET 公共语言运行库和 .NET 框架类中运行托管代码的 .NET 应用程序，Visual Studio .NET 是首选的集成开发环境 (IDE)。它延续了 Visual Studio 的传统，允许开发人员编译以前的非托管 C++ 或 C# 应用程序。</div>
<div style="text-indent: 21pt">Visual Studio .NET 让快速开发应用程序 (RAD) 通过高效开发工具得以实现。一个紧密集成且统一的可视环境简化了开发 Web 应用程序的过程，降低了学习曲线。共享的超文本标记语言 (HTML)，XML，以及样式表编辑器令使用任何 Visual Studio 语言开发 Web 应用程序变得十分容易，包括使用新的 C# 编程语言。</div>
<div style="text-indent: 21pt">Visual Studio .NET 允许开发人员快速构建新的托管代码的应用程序，面向 .NET 框架丰富的功能与类库。Visual Studio .NET 同样允许开发人员采用优化过的编译器出品传统的非托管代码的 C++ 应用程序，如 Microsoft Word 或 Microsoft Excel。</div>
<div style="margin: 13pt 0cm"><strong><font size="5">程序开发</font></strong></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>下面大家就和我一起开始制作自己的机器人吧</div>
<div style="margin: 13pt 0cm"><strong><font size="4"><font size="5">引入dotMSN开发包</font></font></strong></div>
<div style="text-indent: 21pt">首先我们要先建立一个解决方案，由于.NET框架CLS（通用语言规范）可以支持多种不同的开发语言，因此你在建立解决方案的时候可以使用目前.NET支持的VB.NET、C#、J#、C++等语言。</div>
<div style="text-indent: 21pt"> </div>
<div style="text-indent: 21pt">在解决方案建立后，第一步需要做的就是将dotMSN开发包引用到解决方案中来，以便我们可以在今后的开发过程中使用。</div>
<div style="text-indent: 21pt">&nbsp;&nbsp;</div>
<div style="text-indent: 21pt"> </div>
<div style="text-indent: 21pt">可以看到在引用的文件列表中已经加入了DotMSN的开发包，下面在我们通过IDE设计好机器人程序的用户界面后就可以开始使用DotMSN与MSN服务器通信了。</div>
<div style="text-indent: 21pt">在DotMSN中有Messenger类，它就是你编程的全部，所以你在程序的开始就要声明该类的一个对象并同时申请内存及初始化：</div>
<div style="text-indent: 21pt"> </div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: blue">private</span> DotMSN.Messenger messenger = <span style="color: blue">new</span> Messenger();</span></div>
<div style="text-indent: 21pt"> </div>
<div style="text-indent: 21pt">在你输入的MSN机器人的邮件地址、认证密码及显示的名称后，首先要做的就是登录到MSN服务器上，我这里自己编写了一个StartMSN函数来包含登录动作，当然该函数中不止包含登录，对于登录以后MSN的一些消息事件也做了重载的声明：</div>
<div style="text-indent: 21pt"> </div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: green">//</span></span><span style="font-size: 9pt; color: green">启动MSN程序</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: blue">private</span> <span style="color: blue">void</span> StartMSN()</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;  {</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: blue">try</span></span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: green">//</span></span><span style="font-size: 9pt; color: green">确认输入的PASSPORT帐号不是默认的设置，否则报错误！</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: blue">if</span>(txtMail.Text == &quot;yourmail@hotmail.com&quot;)</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  MessageBox.Show(<span style="color: blue">this</span>, &quot;</span><span style="font-size: 9pt">键入你的PASSPORT以登录MSN服务器！&quot;);</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: blue">else</span></span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: green">//</span></span><span style="font-size: 9pt; color: green">事件重载代码段</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: green">//</span></span><span style="font-size: 9pt; color: green">重载上线函数</span></div>
<div style="margin: 0cm 0cm 0pt 4.5pt; text-indent: -4.5pt" align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;&nbsp;  messenger.ContactOnline += <span style="color: blue">new</span> Messenger.ContactOnlineHandler(ContactOnline);</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: green">//</span></span><span style="font-size: 9pt; color: green">重载下线函数</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  messenger.ContactOffline += <span style="color: blue">new</span> Messenger.ContactOfflineHandler(ContactOffline);</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: green">//</span></span><span style="font-size: 9pt; color: green">重载联系人加入函数</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  messenger.ContactAdded += <span style="color: blue">new</span> Messenger.ContactAddedHandler(ContactAdded);</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: green">//</span></span><span style="font-size: 9pt; color: green">重载会话创建函数</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  messenger.ConversationCreated += <span style="color: blue">new</span> Messenger.ConversationCreatedHandler(ConversationCreated);</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: green">//</span></span><span style="font-size: 9pt; color: green">重载同步处理函数</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  messenger.SynchronizationCompleted += <span style="color: blue">new</span> Messenger.SynchronizationCompletedHandler(OnSynchronizationCompleted);</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  messenger.Connect(txtMail.Text, txtPass.Text);</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Log(<span style="color: blue">this</span>.txtMail.Text + &quot;</span><span style="font-size: 9pt">登录成功！&quot;);</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  messenger.SynchronizeList();</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: blue">catch</span>(MSNException e)</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  MessageBox.Show(<span style="color: blue">this</span>, &quot;</span><span style="font-size: 9pt">连接失败：&quot; + e.ToString());</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Log(&quot;</span><span style="font-size: 9pt">连接失败：&quot; + e.ToString());</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;  }</span></div>
<div style="text-indent: 21pt"> </div>
<div style="text-indent: 21pt">其中messenger的Connect方法是登录MSN服务器的主要方法，在登录之前我们需要对于MSN的一些消息事件做重载处理，以便将来这些事件触发时可以调用我们自己编写的逻辑处理代码。</div>
<div style="text-indent: 21pt">在登录到MSN服务器成功后，马上需要调用的方法就是SynchronizeList()，即与服务器同步联系人列表，列表分为以下4种：</div>
<div style="margin: 0cm 0cm 0pt 42pt; text-indent: -21pt"><span>l<span style="font: 7pt  Times New Roman ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span></span><span style="font-size: 9pt">ForwardList</span><span style="font-size: 9pt">：所有有效联系人列表，可以互相发送消息。</span></div>
<div style="margin: 0cm 0cm 0pt 42pt; text-indent: -21pt"><span>l<span style="font: 7pt  Times New Roman ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span></span><span style="font-size: 9pt">ReverseList</span><span style="font-size: 9pt">：所有你在对方联系人列表中的联系人列表。</span></div>
<div style="margin: 0cm 0cm 0pt 42pt; text-indent: -21pt"><span>l<span style="font: 7pt  Times New Roman ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span></span><span style="font-size: 9pt">BlockedList</span><span style="font-size: 9pt">：所有你阻止的联系人列表。</span></div>
<div style="margin: 0cm 0cm 0pt 42pt; text-indent: -21pt"><span>l<span style="font: 7pt  Times New Roman ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span></span><span style="font-size: 9pt">AllowedList</span><span style="font-size: 9pt">：所有能够看到你状态的联系人列表。</span></div>
<div style="text-indent: 21pt">通过对于上述4种列表的操作，可以让机器人了解所有联系人的相关状态并实施相应的操作。</div>
<div style="text-indent: 21pt">在同步联系人列表结束后，需要设置messenger的状态，MSNStatus是状态的枚举量，使用SetStatus方法来进行设置，状态包括：在线、离线、离开、马上回来、外出就餐等，通过对状态变量的设置可以让联系人看到机器人的不同在线情况。同时通过messenger.Owner.Name的设置可以让机器人在联系人端显示你需要的名称。</div>
<div style="text-indent: 21pt">接下来比较主要的工作就是对于MSN各类事件的重载处理了，我这里举两个事件处理的例子，其他的事件可以从dotMSN的帮助文件中查阅。机器人的各类逻辑就是通过对于这些事件的重载来实现的。</div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: green">//</span></span><span style="font-size: 9pt; color: green">会话创建时间处理程序</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: blue">private</span> <span style="color: blue">void</span> ConversationCreated(Messenger sender, ConversationEventArgs e)</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;  {</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: green">//</span></span><span style="font-size: 9pt; color: green">记录会话创建日志</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  txtLog.AppendText(&quot;</span><span style="font-size: 9pt">会话创建成功！\r\n&quot;);</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: green">//</span></span><span style="font-size: 9pt; color: green">当联系人加入对话时处理函数</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  e.Conversation.ContactJoin += <span style="color: blue">new</span> Conversation.ContactJoinHandler(ContactJoined);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: green">//</span></span><span style="font-size: 9pt; color: green">连接建立时处理函数</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  e.Conversation.ConnectionEstablished += <span style="color: blue">new</span> Conversation.ConnectionEstablishedHandler(ConnectionEstablished);</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: green">//</span></span><span style="font-size: 9pt; color: green">联系人输入消息时处理函数</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  e.Conversation.UserTyping += <span style="color: blue">new</span> Conversation.UserTypingHandler(ContactTyping);</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: green">//</span></span><span style="font-size: 9pt; color: green">处理消息收到消息</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  e.Conversation.MessageReceived += <span style="color: blue">new</span> Conversation.MessageReceivedHandler(MessageReceived);</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: green">//</span></span><span style="font-size: 9pt; color: green">接收文件传输时处理函数</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  e.Conversation.FileTransferHandler.InvitationReceived +=<span style="color: blue">new</span> DotMSN.FileTransferHandler.FileTransferInvitationHandler(FileTransferHandler_FileTransferInvitation);</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</span></div>
<div style="margin: 0cm 0cm 0pt 21pt; text-indent: -3pt" align="left"> </div>
<div style="text-indent: 21pt" align="left">第一个需要处理的就是会话创建事件，也就是机器人与联系人开始会话的情况，代码中重载了5个相关的事件，从代码中已经能够猜想这些事件的大致用途了。会话创建事件本身的重载工作是在StartMSN()中声明的。下面就是这些事件的重载代码：</div>
<div style="margin: 0cm 0cm 0pt 21pt; text-indent: -3pt" align="left"> </div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: green">//</span></span><span style="font-size: 9pt; color: green">联系人输入消息时处理函数</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: blue">private</span> <span style="color: blue">void</span> ContactTyping(Conversation sender, ContactEventArgs e)</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;  {</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  txtLog.AppendText(e.Contact.Name + &quot;</span><span style="font-size: 9pt">正在输入消息...\r\n&quot;);</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Log(e.Contact.Name + &quot;</span><span style="font-size: 9pt">正在输入消息...&quot;);</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;  }</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: green">//</span></span><span style="font-size: 9pt; color: green">联系人加入对话处理函数</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: blue">private</span> <span style="color: blue">void</span> ContactJoined(Conversation sender, ContactEventArgs e)</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;  {</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: green">//</span></span><span style="font-size: 9pt; color: green">联系人加入对话，记录联系人姓名到日志中</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  txtLog.AppendText(e.Contact.Name + &quot;</span><span style="font-size: 9pt">加入对话！\r\n&quot;);</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Log(e.Contact.Name + &quot;</span><span style="font-size: 9pt">加入对话！&quot;);</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: green">//</span></span><span style="font-size: 9pt; color: green">输入欢迎词</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  sender.SendMessage(&quot;</span><span style="font-size: 9pt">你好啊！我是&quot; + messenger.Owner.Name);</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  sender.SendMessage(&quot;</span><span style="font-size: 9pt">发送短信请使用以下命令：手机号码#要发送的内容&quot;);</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: green">//sender.SendMessage(&quot;</span></span><span style="font-size: 9pt; color: green">如果需要帮助文件，请键入get_help_file&quot;);</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;  }</span></div>
<div align="left"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span><span style="font-size: 9pt; color: green">//</span><span style="font-size: 9pt; color: green">连接建立处理函数</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: blue">private</span> <span style="color: blue">void</span> ConnectionEstablished(Conversation sender, EventArgs e)</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;  {</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  txtLog.AppendText(&quot;</span><span style="font-size: 9pt">连接完成！\r\n&quot;);</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;  }</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: green">//</span></span><span style="font-size: 9pt; color: green">收到联系人消息时处理函数</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: blue">private</span> <span style="color: blue">void</span> MessageReceived(Conversation sender, MessageEventArgs e)</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;  {</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: blue">string</span> msg_rcv = e.Message.Text;</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  msg_rcv = e.Message.Text.Replace(&quot;\0&quot;, &quot;&quot;);</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  txtLog.AppendText(e.Sender.Name + &quot;</span><span style="font-size: 9pt">说：&quot; + msg_rcv + &quot;\r\n&quot;);</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Log(e.Sender.Name + &quot;</span><span style="font-size: 9pt">说：&quot; + msg_rcv);</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: blue">string</span> msg_dnt = MessageHandle(msg_rcv, e.Sender.Name, e.Sender.Mail);</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  sender.SendMessage(msg_dnt);</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Log(&quot;</span><span style="font-size: 9pt">机器人发送消息：&quot; + msg_dnt);</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;  }</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: green">//</span></span><span style="font-size: 9pt; color: green">文件接收动作处理函数</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: blue">private</span> <span style="color: blue">void</span> FileTransferHandler_FileTransferInvitation(FileTransferHandler sender, FileTransferInvitationEventArgs e)</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;  {</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: green">//</span></span><span style="font-size: 9pt; color: green">接收动作为真<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span></span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  e.Accept = <span style="color: blue">true</span>;</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: green">//</span></span><span style="font-size: 9pt; color: green">收到的文件保存在D:\MSN_BOT_FILES下</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: blue">string</span> tmpfile = &quot;D:\\FileOfBot\\&quot; + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sender.Conversation.Messenger.Owner.Name + &quot;@&quot; + e.FileTransfer.FileName;</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  e.FileTransfer.ReceiveStream = <span style="color: blue">new</span> FileStream(tmpfile, FileMode.Create, FileAccess.ReadWrite);</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  txtLog.AppendText(&quot;</span><span style="font-size: 9pt">接收文件并保存到：&quot; + tmpfile + &quot;\r\n&quot;);</span></div>
<div align="left"><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;  }</span></div>
<div> </div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>在这些事件当中，MessageReceived事件比较重要，它表示当机器人接收到用户发送的文字消息时所进行的处理逻辑，这里也就是你可以自由发挥的地方了！我这里编写了独立的MessageHandle函数来对于所有收到的消息进行处理。在该处理函数中，所有机器人的智能情况和相关的业务功能都可以根据你自己对于机器人的定位来实现。</div>
<div style="text-indent: 21pt">我这里的机器人所做的就是将用户发送的消息命令解码并根据用户输入的目标移动中断发送移动短信。当然这里是需要后端有短信网关或者是相关的短信发送设备的支持。你看，你轻松地就拥有了自己的短信服务机器人了。</div>
<div style="text-indent: 21pt">在后端有相关数据库的支持下，机器人同样可以根据用户的输入来查询数据库的相关信息并返回给用户。</div>
<div style="text-indent: 21pt">在拓展用户、客户服务、产品推介等方面又多了一条网络的途径！</div> <a href="http://hi.baidu.com/boyxp/blog/item/e396912373430347ad34de80.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/boyxp/blog/category/%BC%BC%CA%F5%CE%C4%D5%C2">技术文章</a>&nbsp;<a href="http://hi.baidu.com/boyxp/blog/item/e396912373430347ad34de80.html#comment">查看评论</a>]]></description>
        <pubDate>2007-11-12  11:15</pubDate>
        <category><![CDATA[技术文章]]></category>
        <author><![CDATA[wqh21]]></author>
		<guid>http://hi.baidu.com/boyxp/blog/item/e396912373430347ad34de80.html</guid>
</item>

<item>
        <title><![CDATA[一个加密算法]]></title>
        <link><![CDATA[http://hi.baidu.com/boyxp/blog/item/bba636d139e63e3b9a502769.html]]></link>
        <description><![CDATA[
		
		据说此加密算法每次加密的结果都不同，但解密的结果相同【互联网还有很多牛人的啊】<br>
<br>
using System; 
<p>namespace test001<br>
{<br>
 /**<br>
&nbsp;&nbsp;&nbsp; 对sSource，进行加密、解密操作。<br>
&nbsp;&nbsp;&nbsp; @param sSource String ：操作的字符串<br>
&nbsp;&nbsp;&nbsp; @param iFlag int :操作类型 1-加密&nbsp;&nbsp; 2-解密<br>
&nbsp;&nbsp;&nbsp; @return String :加密或解密后的字符串<br>
&nbsp;&nbsp;&nbsp;&nbsp; **/<br>
 public class password<br>
 {<br>
&nbsp;&nbsp; public password()<br>
&nbsp;&nbsp; {<br>
&nbsp;&nbsp; }<br>
&nbsp;&nbsp; public static string pWord(string sSource,int iFlag)<br>
&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp; if(sSource==null)<br>
&nbsp;&nbsp;&nbsp;&nbsp; return null;<br>
&nbsp;&nbsp;&nbsp; if(sSource.Equals(""))<br>
&nbsp;&nbsp;&nbsp;&nbsp; return "";<br>
&nbsp;&nbsp;&nbsp; int li_len,i,li_asc,li_rand,li_head;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string ls_i,ls_code="";<br>
&nbsp;&nbsp;&nbsp; if(iFlag ==1)<br>
&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp; li_len=sSource.Length;<br>
&nbsp;&nbsp;&nbsp;&nbsp; Random rdm1 = new Random(~unchecked((int)DateTime.Now.Ticks)); <br>
&nbsp;&nbsp;&nbsp;&nbsp; li_head=(int)(rdm1.NextDouble()*10);<br>
&nbsp;&nbsp;&nbsp;&nbsp; if(li_head ==0)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; li_head =1;<br>
&nbsp;&nbsp;&nbsp;&nbsp; for(i=0; i&lt;li_len; i++)<br>
&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Random rdm2 = new Random(~unchecked((int)DateTime.Now.Ticks)); <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int rand2 =(int)(rdm2.NextDouble() *94);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(rand2 ==0)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rand2 =1;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; li_rand=rand2+32;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; li_asc=Convert.ToInt32(sSource.ToCharArray(i,1)[0]);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_i=((char)(li_asc -i)).ToString();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(li_asc+i+li_head&gt;126)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(li_rand%2 ==1)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; li_rand=li_rand+1;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_i=((char)(li_rand)).ToString()+((char)(li_asc -i -li_head)).ToString();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(li_rand%2 ==0) <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; li_rand=li_rand+1;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_i=((char)(li_rand)).ToString()+((char)(li_asc +i +li_head)).ToString();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_code=ls_code+ls_i;<br>
&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp;&nbsp; Random rdm3 = new Random(~unchecked((int)DateTime.Now.Ticks)); <br>
&nbsp;&nbsp;&nbsp;&nbsp; int rand1 =(int)(rdm3.NextDouble()*9);<br>
&nbsp;&nbsp;&nbsp;&nbsp; if(rand1 ==0)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rand1 =1;<br>
&nbsp;&nbsp;&nbsp;&nbsp; ls_code=((char)(rand1*10+li_head+40)).ToString()+ls_code;<br>
&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp; else<br>
&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp; int li_ret;<br>
&nbsp;&nbsp;&nbsp;&nbsp; li_len=sSource.Length;<br>
&nbsp;&nbsp;&nbsp;&nbsp; ls_code="";<br>
&nbsp;&nbsp;&nbsp;&nbsp; li_ret=Convert.ToInt32(sSource.ToCharArray(0,1)[0]) %10;<br>
&nbsp;&nbsp;&nbsp;&nbsp; for( i=2;i &lt;li_len; i=i+2)<br>
&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; li_asc=Convert.ToInt32(sSource.ToCharArray(i,1)[0]);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(Convert.ToInt32(sSource.ToCharArray(i - 1,1)[0]) %2 ==0)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_i=((char)(li_asc + (i - 1)/2 + li_ret)).ToString();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_i=((char)(li_asc - (i - 1)/2 - li_ret)).ToString();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ls_code=ls_code+ls_i;<br>
&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp; return ls_code;<br>
&nbsp;&nbsp; }<br>
 }<br>
}</p> <a href="http://hi.baidu.com/boyxp/blog/item/bba636d139e63e3b9a502769.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/boyxp/blog/category/%BC%BC%CA%F5%CE%C4%D5%C2">技术文章</a>&nbsp;<a href="http://hi.baidu.com/boyxp/blog/item/bba636d139e63e3b9a502769.html#comment">查看评论</a>]]></description>
        <pubDate>2007-11-01  10:09</pubDate>
        <category><![CDATA[技术文章]]></category>
        <author><![CDATA[wqh21]]></author>
		<guid>http://hi.baidu.com/boyxp/blog/item/bba636d139e63e3b9a502769.html</guid>
</item>

<item>
        <title><![CDATA[SQL　SERVER更改数据库所有者的存储过程]]></title>
        <link><![CDATA[http://hi.baidu.com/boyxp/blog/item/ed497bf417f640daf2d38508.html]]></link>
        <description><![CDATA[
		
		exec&nbsp;&nbsp;&nbsp;&nbsp; sp_MSForEachTable&nbsp;&nbsp;&nbsp;&nbsp; 'sp_changeobjectowner&nbsp;&nbsp;&nbsp;&nbsp; "?",&nbsp;&nbsp;&nbsp;&nbsp; "dbo"'&nbsp;&nbsp;&nbsp; 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/boyxp/blog/category/%BC%BC%CA%F5%CE%C4%D5%C2">技术文章</a>&nbsp;<a href="http://hi.baidu.com/boyxp/blog/item/ed497bf417f640daf2d38508.html#comment">查看评论</a>]]></description>
        <pubDate>2007-09-18  18:33</pubDate>
        <category><![CDATA[技术文章]]></category>
        <author><![CDATA[wqh21]]></author>
		<guid>http://hi.baidu.com/boyxp/blog/item/ed497bf417f640daf2d38508.html</guid>
</item>

<item>
        <title><![CDATA[如何有效的抵抗DDOS]]></title>
        <link><![CDATA[http://hi.baidu.com/boyxp/blog/item/0665b899892e540b6e068c10.html]]></link>
        <description><![CDATA[
		
		<p>　DDOS的危害我这里就不说了。<br>
我们可以通过修改注册表来减小DDOS对我们的伤害<br>
1)设置生存时间<br>
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters</p>
<p>DefaultTTL REG_DWORD 0-0xff(0-255 十进制,默认值128)<br>
Admin365.COM 天天站长<br>
说明:指定传出IP数据包中设置的默认生存时间(TTL)值.TTL决定了IP数据包在到达<br>
目标前在网络中生存的最大时间.它实际上限定了IP数据包在丢弃前允许通过的路由<br>
器数量.有时利用此数值来探测远程主机操作系统.我建议设置为1，因为这里是ICMP数据包的寸活时间。越小对方用 PING DDOS你的话，一般1M带宽的话就必须要100台以上的肉鸡来实现。不修改20几台就可以搞定<br>
Admin365.COM 天天站长<br>
2)防止ICMP重定向报文的攻击<br>
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters</p>
<p>EnableICMPRedirects REG_DWORD 0x0(默认值为0x1)<br>
Admin365.COM 天天站长<br>
说明:该参数控制Windows 2000是否会改变其路由表以响应网络设备(如路由器)发送给它<br>
的ICMP重定向消息,有时会被利用来干坏事.Win2000中默认值为1,表示响应ICMP重定向报<br>
文.</p>
<p>3)禁止响应ICMP路由通告报文<br>
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Inter<br>
faces\interface<br>
Admin365.COM 天天站长<br>
PerformRouterDiscovery REG_DWORD 0x0(默认值为0x2)<br>
Admin365.COM 天天站长<br>
说明:“ICMP路由公告”功能可造成他人计算机的网络连接异常,数据被窃听,计算机被<br>
用于流量攻击等严重后果.此问题曾导致校园网某些局域网大面积,长时间的网络异常.<br>
因此建议关闭响应ICMP路由通告报文.Win2000中默认值为2,表示当DHCP发送路由器发<br>
现选项时启用.<br>
Admin365.COM 天天站长<br>
4)防止SYN洪水攻击<br>
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters<br>
Admin365.COM 天天站长<br>
SynAttackProtect REG_DWORD 0x2(默认值为0x0)</p>
<p>说明:SYN攻击保护包括减少SYN-ACK重新传输次数,以减少分配资源所保留的时<br>
间.路由缓存项资源分配延迟,直到建立连接为止.如果synattackprotect=2,<br>
则AFD的连接指示一直延迟到三路握手完成为止.注意,仅在TcpMaxHalfOpen和<br>
TcpMaxHalfOpenRetried设置超出范围时,保护机制才会采取措施.</p>
<p>5) 禁止C$、D$一类的缺省共享<br>
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters</p>
<p>AutoShareServer、REG_DWORD、0x0<br>
Admin365.COM 天天站长<br>
6) 禁止ADMIN$缺省共享<br>
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters</p>
<p>AutoShareWks、REG_DWORD、0x0</p>
<p>7) 限制IPC$缺省共享<br>
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa</p>
<p>restrictanonymous REG_DWORD 0x0 缺省<br>
　　　　　　　　　　　　　　0x1 匿名用户无法列举本机用户列表<br>
　　　　　　　　　　　　　　0x2 匿名用户无法连接本机IPC$共享<br>
说明:不建议使用2，否则可能会造成你的一些服务无法启动，如SQL Server</p>
<p>8)不支持IGMP协议<br>
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters</p>
<p>IGMPLevel REG_DWORD 0x0(默认值为0x2)</p>
<p>说明:记得Win9x下有个bug,就是用可以用IGMP使别人蓝屏,修改注册表可以修正这个<br>
bug.Win2000虽然没这个bug了,但IGMP并不是必要的,因此照样可以去掉.改成0后用<br>
route print将看不到那个讨厌的224.0.0.0项了.<br>
Admin365.COM 天天站长<br>
9)设置arp缓存老化时间设置<br>
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services:\Tcpip\Parameters</p>
<p>ArpCacheLife　REG_DWORD 0-0xFFFFFFFF(秒数,默认值为120秒)<br>
ArpCacheMinReferencedLife　REG_DWORD 0-0xFFFFFFFF(秒数,默认值为600)<br>
Admin365.COM 天天站长<br>
说明:如果ArpCacheLife大于或等于ArpCacheMinReferencedLife,则引用或未引用的ARP<br>
缓存项在ArpCacheLife秒后到期.如果ArpCacheLife小于ArpCacheMinReferencedLife,<br>
未引用项在ArpCacheLife秒后到期,而引用项在ArpCacheMinReferencedLife秒后到期.<br>
每次将出站数据包发送到项的IP地址时,就会引用ARP缓存中的项。<br>
Admin365.COM 天天站长<br>
10)禁止死网关监测技术<br>
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services:\Tcpip\Parameters<br>
Admin365.COM 天天站长<br>
EnableDeadGWDetect REG_DWORD 0x0(默认值为ox1)<br>
Admin365.COM 天天站长<br>
说明:如果你设置了多个网关,那么你的机器在处理多个连接有困难时,就会自动改用备份<br>
网关.有时候这并不是一项好主意,建议禁止死网关监测.</p>
<p>11)不支持路由功能<br>
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services:\Tcpip\Parameters<br>
Admin365.COM 天天站长<br>
IPEnableRouter REG_DWORD 0x0(默认值为0x0)<br>
说明:把值设置为0x1可以使Win2000具备路由功能,由此带来不必要的问题.</p>
<p>12)做NAT时放大转换的对外端口最大值<br>
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services:\Tcpip\Parameters<br>
Admin365.COM 天天站长<br>
MaxUserPort REG_DWORD 5000-65534(十进制)(默认值0x1388--十进制为5000)</p>
<p>说明:当应用程序从系统请求可用的用户端口数时,该参数控制所使用的最大端口数.正常<br>
情况下,短期端口的分配数量为1024-5000.将该参数设置到有效范围以外时,就会使用最<br>
接近的有效数值(5000或65534).使用NAT时建议把值放大点.<br>
Admin365.COM 天天站长<br>
13)修改MAC地址<br>
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\ A<br>
找到右窗口的说明为"网卡"的目录,<br>
比如说是{4D36E972-E325-11CE-BFC1-08002BE10318}</p>
<p>展开之,在其下的0000,0001,0002...的分支中找到"DriverDesc"的键值为你网卡的说明,<br>
比如说"DriverDesc"的值为"Intel 82559 Fast Ethernet LAN on Motherboard"<br>
然后在右窗口新建一字符串值,名字为"Networkaddress",内容为你想要的MAC值，比如说<br>
是"004040404040"<br>
然后重起计算机，ipconfig /all看看. <br>
最后在加上个BLACKICE放火墙，应该可以抵抗一般的DDOS</p> <a href="http://hi.baidu.com/boyxp/blog/item/0665b899892e540b6e068c10.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/boyxp/blog/category/%BC%BC%CA%F5%CE%C4%D5%C2">技术文章</a>&nbsp;<a href="http://hi.baidu.com/boyxp/blog/item/0665b899892e540b6e068c10.html#comment">查看评论</a>]]></description>
        <pubDate>2007-09-14  17:19</pubDate>
        <category><![CDATA[技术文章]]></category>
        <author><![CDATA[wqh21]]></author>
		<guid>http://hi.baidu.com/boyxp/blog/item/0665b899892e540b6e068c10.html</guid>
</item>

<item>
        <title><![CDATA[在SQL Server中调用.NET中的类]]></title>
        <link><![CDATA[http://hi.baidu.com/boyxp/blog/item/c775349b812fb5b7c9eaf43d.html]]></link>
        <description><![CDATA[
		
		<p style="TEXT-INDENT: 2em">我们一起来做个示例，在.NET中新建一个类，并在这个类里新建一个方法，然后在SQL Server中调用这个方法。按照微软所述，通过宿主 Microsoft .NET Framework 2.0 公共语言运行库 (CLR)，SQL Server 2005显著地增强了数据库编程模型。 这使得开发人员可以用任何CLR语言（如C#、VB.NET或C++等）来写存储过程、触发器和用户自定义函数。 </p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em">我们如何实现这些功能呢？ </p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em">为了使用CLR，我们需要做如下几步： </p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em">1、在.NET中新建一个类，并在这个类里新建一个public方法。 </p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em">2、编译这个类为一个DLL。 </p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em">3、在SQL Server中注册这个DLL。 </p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em">4、新建一个SQL Server函数来访问指定的.NET方法。 </p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em">接下来，我们一起来完成一个示例 </p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em">首先，在Visual Studio中新建一个名为“SQLServerCLRTest”的类库项目。 然后，新建一个名为“CLRFunctions”的类，并在其内添加一个名为“HelloWold”的方法，代码如下： </p>
<p style="TEXT-INDENT: 2em"> </p>
<center><ccid_nobr></ccid_nobr>
<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="#000000" border="1">
<tbody>
    <tr>
        <td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6">
<pre><ccid_code></ccid_code>public class CLRFunctions
{
public static string HelloWorld(string Name)
{
return ("Hello " + Name);
}
}</pre>
</td>
    </tr>
</tbody>
</table>
</center>
<p style="TEXT-INDENT: 2em">这是一个非常简单的方法（为了让SQL Server可以调用它，它必须要是public和static的），这个方法有一个string类型的参数，返回信息为“Hello”加上你传入的参数。 </p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em">现在，我们需要编译这个项目为一个DLL，并在SQL Server中注册它。 这也是比较简单的，在VS中右键单击项目，选择“生成”后程序就会生成一个DLL。 如果你的项目是调试模式的话，那么就可以在如下所示那样的路径里找到编译好的DLL。 </p>
<p style="TEXT-INDENT: 2em"> </p>
<center><ccid_nobr></ccid_nobr>
<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="#000000" border="1">
<tbody>
    <tr>
        <td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6">
<pre><ccid_code></ccid_code>C:Documents and Settingsmark.smithMy 
DocumentsVisual Studio 2005Projects
SQLServerCLRTestSQLServerCLRTest inDebugSQLServerCLRTest.dll</pre>
</td>
    </tr>
</tbody>
</table>
</center>
<p style="TEXT-INDENT: 2em">找到这个DLL后，我们就可以把它拷贝到我们的SQL Server机器上了，如果是相同机器的话我们只要记住这个路径即可。 </p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em"><strong>启用CLR功能</strong> </p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em">默认情况下，SQL Server中的CLR是关闭的，所以我们需要执行如下命令打开CLR： </p>
<p style="TEXT-INDENT: 2em"> </p>
<center><ccid_nobr></ccid_nobr>
<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="#000000" border="1">
<tbody>
    <tr>
        <td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6">
<pre><ccid_code></ccid_code>exec sp_configure 'clr enabled',1　
reconfigure　
go</pre>
</td>
    </tr>
</tbody>
</table>
</center>
<p style="TEXT-INDENT: 2em"><strong>注册DLL</strong> </p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em">为了调用我们写的那个方法，需要在SQL Server中注册我们刚刚编译好的那个DLL。 我们可以在数据库中使用如下命令来注册DLL（路径为你的DLL文件的路径） </p>
<p style="TEXT-INDENT: 2em"> </p>
<center><ccid_nobr></ccid_nobr>
<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="#000000" border="1">
<tbody>
    <tr>
        <td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6">
<pre><ccid_code></ccid_code>CREATE ASSEMBLY asmHelloWorld FROM 'C:SQLServerCLRTest.dll'　</pre>
</td>
    </tr>
</tbody>
</table>
</center>
<p style="TEXT-INDENT: 2em">在SQL Server中调用我们的.NET方法 </p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em">为了调用.NET方法，我们可以写一个SQL Server自定义函数，并在其内使用“EXTERNAL NAME”来通知SQL Server使用CLR功能。 代码如下： </p>
<p style="TEXT-INDENT: 2em"> </p>
<center><ccid_nobr></ccid_nobr>
<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="#000000" border="1">
<tbody>
    <tr>
        <td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6">
<pre><ccid_code></ccid_code>CREATE FUNCTION dbo.clrHelloWorld　
(　
@name as nvarchar(200)　
)
RETURNS nvarchar(200)　
AS EXTERNAL NAME 
asmHelloWorld.[SQLServerCLRTest.CLRFunctions].HelloWorld</pre>
</td>
    </tr>
</tbody>
</table>
</center>
<p style="TEXT-INDENT: 2em">上面的自定义函数做了两项工作。 首先是声明了一个nvarchar参数，它等同于.NET里的string类型（如果将其设置为varchar并且后面使用了“EXTERNAL NAME”的话就会报错）。然后使用“EXTERNAL NAME”来调用.NET方法。 语法如下： </p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em"><strong>程序集名.类名.方法名</strong> </p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em">但是，当我使用这个语法调用.NET方法的时候，SQL Server就会报错，所以为了让它正常工作，我使用了如下语法： </p>
<p style="TEXT-INDENT: 2em"><span style="FONT-SIZE: 14px; COLOR: #363636; TEXT-INDENT: 2em; LINE-HEIGHT: 23px"> </span></p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em">程序集名.[类名].方法名 </p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em">现在我们就可以通过如下语句调用.NET方法了： </p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em">SELECT dbo.clrHelloWorld('Mark') </p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em">当你运行这段代码的时候，就会得到一个返回结果“Hello Mark”。 </p>
<p style="TEXT-INDENT: 2em"> </p>
<p style="TEXT-INDENT: 2em">我们通过一个很简单的示例演示了如何实现SQL Server的CLR，它可以给我们带来很多非常有用的帮助。</p> <a href="http://hi.baidu.com/boyxp/blog/item/c775349b812fb5b7c9eaf43d.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/boyxp/blog/category/%BC%BC%CA%F5%CE%C4%D5%C2">技术文章</a>&nbsp;<a href="http://hi.baidu.com/boyxp/blog/item/c775349b812fb5b7c9eaf43d.html#comment">查看评论</a>]]></description>
        <pubDate>2007-08-28  14:07</pubDate>
        <category><![CDATA[技术文章]]></category>
        <author><![CDATA[wqh21]]></author>
		<guid>http://hi.baidu.com/boyxp/blog/item/c775349b812fb5b7c9eaf43d.html</guid>
</item>


</channel>
</rss>