<?xml version="1.0" encoding="GBK" ?>
<rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dcterms="http://purl.org/dc/terms/">
 <channel>
  	  <title><![CDATA[高级菜鸟]]></title>
	  <link>http://wuxiong8665.blog.163.com</link>
	  <description><![CDATA[ 一只菜鸟的菜园]]></description>
	  <language>zh-CN</language>
	  <pubDate>Sun, 8 Nov 2009 16:40:19 +0800</pubDate>
	  <lastBuildDate>Sun, 8 Nov 2009 16:40:19 +0800</lastBuildDate>
	  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
	  <generator><![CDATA[NetEase Space]]></generator>
	  <managingEditor><![CDATA[wuxiong8665]]></managingEditor>
	  <webMaster><![CDATA[高级菜鸟]]></webMaster>
		  <ttl>120</ttl>
	  <image>
	  	<title><![CDATA[高级菜鸟]]></title>
	  	<url>http://ava.bimg.126.net/photo/F_Bjxh5JW6TzOUOTjSBoNg==/186054959606281959.jpg</url>
	  	<link>http://wuxiong8665.blog.163.com</link>
	  </image>
  <item>
  	<title><![CDATA[如何卸载Adobe photoshop]]></title>	
    <link>http://wuxiong8665.blog.163.com/blog/static/93512200910825428664</link>
    <description><![CDATA[<div><P>如何卸载Adobe photoshop cs3 cs4</P>
<P>你可能会发现，Adobe某些产品的卸载项很难找到，在添加删除程序及360软件管理里都找不到。</P>
<P>提供两个卸载方法：</P>
<P>法一、用优化大师的软件智能卸载能找到photoshop自带的卸载工具（不用自己找了），然后使用其自带工具卸载（不要用优化大师分析，那方法卸得太不完整，当没有自带卸载程序时才使用）</P>
<P>法二、到官方网站下载Adobe产品安装信息清理工具（<STRONG>注意是清理信息</STRONG>，如果能找到自带卸载工具就别用此法了，当软件安装出错时可以用此法清理后再次<STRONG>覆盖</STRONG>安装）</P>
<P>CS3</P>
<P><A href="http://www.adobe.com/support/contact/cs3clean.html">http://www.adobe.com/support/contact/cs3clean.html</A></P>
<P>CS4</P>
<P><A href="http://www.adobe.com/support/contact/cs4clean.html">http://www.adobe.com/support/contact/cs4clean.html</A></P>
<P>解压后，运行里面的CS4InstallerDatabaseUtility.exe，如果提示你没有安装windows clean up utility，点击这里下载<A href="http://download.microsoft.com/download/e/9/d/e9d80355-7ab4-45b8-80e8-983a48d5e1bd/msicuu2.exe" target=_blank>微软清理实用工具</A> 然后安装。</P>
<P>再运行CS4InstallerDatabaseUtility.exe，输入e 表示选择英文，然后输入y 表示确定，然后输入要清理的产品前的数字。……</P>
<P>&nbsp;</P>
<P style="TEXT-INDENT: 2em"><A href="http://wuxiong8665.blog.163.com/blog/static/93512200910810492821/">Adobe ps dw fl ai等无法启动、许可已停止、卡死、暂存盘满</A></P>
<P style="TEXT-INDENT: 2em"></P></div>]]></description>
	    <author><![CDATA[高级菜鸟]]></author>
	    <comments>http://wuxiong8665.blog.163.com/blog/static/93512200910825428664</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://wuxiong8665.blog.163.com/blog/static/93512200910825428664</guid>
    <pubDate>Sun, 8 Nov 2009 14:54:28 +0800</pubDate>
    <dcterms:modified>2009-11-08T14:54:28+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[Adobe ps dw fl ai等无法启动、许可已停止、卡死、暂存盘满]]></title>	
    <link>http://wuxiong8665.blog.163.com/blog/static/93512200910810492821</link>
    <description><![CDATA[<div><P style="TEXT-INDENT: 2em"><A href="http://wuxiong8665.blog.163.com/blog/static/9351220099173446997/" target=_blank>Photoshop CS4验证序列号无效之破解</A> </P>
<P style="TEXT-INDENT: 2em"></P>
<HR>

<P style="TEXT-INDENT: 2em">安装ps等软件时先按上面的方法破解 </P>
<P style="TEXT-INDENT: 2em">&nbsp;</P>
<P style="TEXT-INDENT: 2em"><STRONG>一、安装illustrator绿色版后,原版photoshop启动时出现安装协议</STRONG>，点接受后就什么都没了。连再次输入注册码的机会都没有！</P>
<P style="TEXT-INDENT: 2em">原因：illustrator绿色版绿化时为了注册破解，替换了c:\Program Files\Common Files\Adobe\Adobe PCD\cache目录下的数据库文件cache.db。</P>
<P style="TEXT-INDENT: 2em">分析：若事先备份此文件，绿化后替换回来，illustrator绿色版启动时会自动关闭，若删除它，版photoshop启动时能自动创建此文件并再次提示注册（重新创建的cache.db不包含之前的注册信息，意味着，之前使用过的注册码又可以使用了），而illustrator绿色版不能自行创建，所以仍然自动关闭。</P>
<P style="TEXT-INDENT: 2em"><STRONG>解决办法：</STRONG></P>
<P style="TEXT-INDENT: 2em">法一、<STRONG>都装官方原版：用了原版的Adobe产品，就不要装这个绿色版illustrator了</STRONG>，去官方下载，然后按破解ps的方式破解之即可。</P>
<P style="TEXT-INDENT: 2em">法二、<STRONG>都装绿色版：试试以毒攻毒，下载破解精简绿化了的ps安装</STRONG></P>
<P style="TEXT-INDENT: 2em">如photoshp cs4完美增强版 <A href="http://www.xdowns.com/soft/31/93/2008/Soft_48122.html">http://www.xdowns.com/soft/31/93/2008/Soft_48122.html</A>&nbsp;与最新的Adobe Illustrator CS4官方简体精简绿色版 <A href="http://www.greendown.cn/soft/12976.html">http://www.greendown.cn/soft/12976.html</A>&nbsp;&nbsp;还有我用得最爽的Adobe Dreamweaver CS4 官方简体中文精简绿色免安装版 <A href="http://www.366soft.net/soft/sort01/sort019/down-3159.html">http://www.366soft.net/soft/sort01/sort019/down-3159.html</A> 三者都只是精简了一些没用的如<FONT size=2>多语言文件等，前者还扩展了不少东西，它们装一起是不会冲突的，本人亲测</FONT>。另外Flash绿色版下载<A href="http://www.orsoon.com/Soft/8953.html">http://www.orsoon.com/Soft/8953.html</A>&nbsp;或者 <A href="http://www.greendown.cn/soft/12702.html">http://www.greendown.cn/soft/12702.html</A></P>
<P style="TEXT-INDENT: 2em">当然得先卸载安装了的原版。卸载方法：<A href="http://wuxiong8665.blog.163.com/blog/static/93512200910825428664/">http://wuxiong8665.blog.163.com/blog/static/93512200910825428664/</A></P><A href="http://wuxiong8665.blog.163.com/blog/static/93512200910810492821/"></A>
<P style="TEXT-INDENT: 2em"></A>&nbsp; </P>
<P style="TEXT-INDENT: 2em"><STRONG>二、ps无法启动或者提示“此产品的许可已停止”怎么办？</STRONG></P>
<P style="TEXT-INDENT: 2em">问题1：PS启动后提示“此产品的许可已停止”，无法使用，重新启动依旧如此怎么办？</P>
<P style="TEXT-INDENT: 2em">不需要重新安装，“我的电脑”（右键）--“服务”，找到描述为“This service performs licensing functions on</P>
<P style="TEXT-INDENT: 2em">behalf of FLEXnet enabled products”的FLEXnet Licensing Service服务，发现其状态为“禁止”或停止，</P>
<P style="TEXT-INDENT: 2em">双击，在弹出的“FLEXnet Licensing Service的属性（本地计算机）”对话框中，将“启动类型”改为</P>
<P style="TEXT-INDENT: 2em">“自动”，点“确定”退出对话框并在右边点击“启动此服务”启动服务，最后重新启动Adobe产品即可。</P>
<P style="TEXT-INDENT: 2em">如果没有FLEXnet Licensing Service 的服务请下载修复工具 修复后重启就可以了 </P>
<P style="TEXT-INDENT: 2em"><IMG title="ps无法启动或者提示“此产品的许可已停止” - 高级菜鸟 - 高级菜鸟" border=0 alt="ps无法启动或者提示“此产品的许可已停止” - 高级菜鸟 - 高级菜鸟" src="http://www.iunew.com/forum/images/attachicons/rar.gif"><A href="http://www.iunew.com/forum/attachment.php?aid=8160">FLEXnet Publisher.rar</A> [解压缩密码若需要: reallydo.com]</P>
<P style="TEXT-INDENT: 2em">&nbsp;</P>
<P style="TEXT-INDENT: 2em"><STRONG>三、每次启动PS到“加载资源已完成……”然后卡死不动怎么办？</STRONG></P>
<P style="TEXT-INDENT: 2em">重装都不一定能够解决问题，除非你卸载后再装，其实你可以有更好的办法，就是找到.PSP文件的PS设置文件，把它删除后即可使用！</P>
<P style="TEXT-INDENT: 2em">只是这时候你的PS恢复到出厂默认值，但没担心，你的外挂和画笔动作什么的全在，只是界面和优化还原的！</P>
<P style="TEXT-INDENT: 2em">那个文件的地址：C:\Documents and Settings\Administrator\Application Da<WBR>ta\Adobe\Photoshop\8.0\Adobe Photoshop CS 设置</P>
<P style="TEXT-INDENT: 2em"><STRONG>其它方法：</STRONG>据说这个问题实际上是局域网引起的</P>
<P style="TEXT-INDENT: 2em">比如说前一天ps关闭前使用的是另外一台电脑文件，然后今天开ps的时候那台电脑没有打开，那么大部分时候就会出现这种情况。</P>
<P style="TEXT-INDENT: 2em">解决方法就是 右键点网上邻居，选属性，然后将网络连接断开，就可以打开ps了，设置也不会还原，然后在将网络联机</P>
<P style="TEXT-INDENT: 2em">不然的话就算偶尔打开了，设置都会还原的。</P>
<P style="TEXT-INDENT: 2em">&nbsp;</P>
<P style="TEXT-INDENT: 2em"><STRONG>四、暂存盘已满怎么办？</STRONG></P>
<P style="TEXT-INDENT: 2em">是的，许多新手根本就不知道设置暂存盘，等发现问题了已经晚了，已经你连文件都保存不了，难道白做了直接关闭吗？</P>
<P style="TEXT-INDENT: 2em">没必要那么，你只要选择菜单：编辑-清理-清理全部，这时候可以释放出一定的暂存盘，快点把文件保存了重新设置一下PS吧！</P>
<P style="TEXT-INDENT: 2em">PS CS3版本支持N个暂存盘，有几个磁盘分区就可以设置几个（当然，几乎没几个设计师能够把暂存盘一直用到第3个暂存盘的）</P></div>]]></description>
	    <author><![CDATA[高级菜鸟]]></author>
	    <comments>http://wuxiong8665.blog.163.com/blog/static/93512200910810492821</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://wuxiong8665.blog.163.com/blog/static/93512200910810492821</guid>
    <pubDate>Sun, 8 Nov 2009 10:49:28 +0800</pubDate>
    <dcterms:modified>2009-11-08T16:21:31+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[新编大学生应该掌握或了解的应用软件]]></title>	
    <link>http://wuxiong8665.blog.163.com/blog/static/9351220091076639532</link>
    <description><![CDATA[<div><FONT size=3 face=Verdana>
<P>觉得忙的大学生，其实还是有不少时间是用在看电影、打游戏上的。</P>
<P>觉得闲得慌的大学生，在看完电影、玩厌游戏后抱怨买了电脑也没什么用，不知道干些什么。</P>
<P>可是，现在这年代有几个行业不需要用电脑处理点东西的？一直用电脑或泡网吧的你会用几个应用软件呢？只怕就连工作、学习常用、必用的应用软件也可能没摸过吧！（因为即使有要用到它们的时候，你却忙看韩剧或打游戏或者宁愿继续在那空虚着，然后请那些用得比较熟练的人代工了。）</P>
<P style="TEXT-INDENT: 2em"></P></FONT>
<P align=center><STRONG><FONT color=#ff0000 size=3 face=Verdana></FONT></STRONG></P>
<HR>

<P></P>
<P></P>
<P align=center><STRONG><FONT color=#ff0000 size=3 face=Verdana>无论什么专业的大学生都必须掌握的应用软件，没听说过的都该处斩。</FONT></STRONG></P>
<P><FONT size=3 face=Verdana>别对上面的话感到好笑，大学生没用过或不会用office（基本操作）的比比皆是，一个快毕业的大学生问office怎么用，我一点不会奇怪，因为我遇到过这种情况：（不是问怎么该怎么操作。原对话如下：）</FONT></P>
<P><EM><FONT size=3 face=Verdana>呃！幻灯片用什么做啊 ？</FONT></EM></P>
<P><EM><FONT size=3 face=Verdana>用office</FONT></EM></P>
<P><EM><FONT size=3 face=Verdana>office是什么？</FONT></EM></P>
<P><FONT size=3 face=Verdana>发晕中……（我还是说的大范围，没说PowerPoint ，要不然人家更不知道了！）</FONT></P>
<P><FONT size=3 face=Verdana>&nbsp;</FONT></P>
<P><STRONG><FONT size=3 face=Verdana>MicroSoft Office系列（或金山公司的 WPS Office）</FONT></STRONG></P>
<P><FONT color=#ff0000></FONT><FONT size=3 face=Verdana>&nbsp;</FONT></P>
<P><FONT color=#ff0000 size=3 face=Verdana>Office Word 2003/2007</FONT></P>
<P><FONT size=3 face=Verdana>(图文编辑、排版、打印，没听说过的应该跳楼）</FONT></P>
<P><FONT color=#ff0000></FONT><FONT size=3 face=Verdana>&nbsp;</FONT></P>
<P><FONT color=#ff0000 size=3 face=Verdana>Office Excel 2003/2007</FONT></P>
<P><FONT size=3 face=Verdana>(作图表，做实验后处理数据和图表用过吧，查成绩时老师发的统计表见过吧，没见过，乱刀砍死算了）</FONT></P>
<P><FONT color=#ff0000></FONT><FONT size=3 face=Verdana>&nbsp;</FONT></P>
<P><FONT color=#ff0000 size=3 face=Verdana>Office&nbsp;PowerPoint 2003/2007</FONT></P>
<P><FONT size=3 face=Verdana>(幻灯片听说过没，幻灯片是什么？没见过！？上课时老师在大屏幕上放的就是幻灯片啊！上过课没？自行了断吧，要砍你的人已经晕死了！）</FONT></P>
<P><FONT size=3 face=Verdana>&nbsp;</FONT></P>
<P><STRONG><FONT size=3 face=Verdana>怎么使用这些软件？</FONT></STRONG></P>
<P><FONT size=3 face=Verdana>是个能进大学的人摸几遍就应该能掌握基本操作，除非你懒得摸索，要不然就是脑残（上大学是买进来的）</FONT></P>
<P><FONT color=#ff0000></FONT><FONT size=3 face=Verdana>&nbsp;</FONT></P>
<P><FONT color=#ff0000 size=3 face=Verdana>Adobe Reader</FONT></P>
<P><FONT size=3 face=Verdana>还有必须知道Adobe Reader是什么，会用它阅读文献。</FONT></P>
<P><FONT size=3 face=Verdana>不要只知道office，或排斥PDF，其实PDF才是一种更标准更便于阅读的格式，去过那些文献类的网站没，它们提供的都是PDF，这时你就得学会用Adobe Reader打开阅读了。</FONT></P>
<P><FONT face=Verdana><FONT color=#000080 size=2>出处：</FONT><A href="http://wuxiong8665.blog.163.com/blog/static/9351220091076639532/"><FONT color=#000080 size=2>http://wuxiong8665.blog.163.com/blog/static/9351220091076639532/</FONT></A></FONT></P>
<P><FONT size=3 face=Verdana>————————————————————————————</FONT></P>
<P><FONT size=3 face=Verdana></FONT></P><FONT size=3 face=Verdana></FONT>
<HR>

<P></P>
<P align=center><STRONG><FONT color=#ff0000 size=3 face=Verdana>作为大学生应该学一些的软件</FONT></STRONG></P>
<P><FONT color=#ff0000></FONT><FONT size=3 face=Verdana>&nbsp;</FONT></P>
<P><FONT color=#ff0000 size=3 face=Verdana>图像处理</FONT></P>
<P><FONT size=3><FONT face=Verdana><STRONG>Adobe Photoshop</STRONG> (最新版为CS4)</FONT></FONT></P>
<P><FONT size=3><FONT face=Verdana><FONT color=#ff0000><STRONG>先说认识误区</STRONG>：</FONT>&nbsp;一般人都以为他只是用来拼拼贴贴、美化美化相片的，大错特错！</FONT></FONT></P>
<P><FONT size=3 face=Verdana>其实它强大到你看得到的图片，都有人可以用它做出来，<STRONG>只有想不到，没有做不到</STRONG>，它并不是只能用来修改美化照片，它完全可以无中生有的创作出你想要的图像，你做不到是由于你还没那水平。</FONT></P>
<P><FONT size=3 face=Verdana>但不要因为它太强大、太专业而吓倒，只要你熟悉了那些按钮后，学几个平时最想用的处理还是可以的，平时想要实现什么效果，就搜一个教程做一遍，也许你马上就能实现你想要的，而用其它傻瓜软件，你永远只能做出那几个傻瓜的效果。也就是学一些常用的还是比较容易的。更进一步，如果你想要的图片网上找不到，而它双不是很复杂，你可以试着用ps自己做出来，这样你既学到了一点ps技巧又做出了想要的东西，免得找了一天没找到合适的还没学到东西。</FONT></P>
<P><FONT size=3 face=Verdana>&nbsp;</FONT></P>
<P><FONT color=#ff0000 size=3 face=Verdana>屏幕捕获（视频录制）</FONT></P>
<P><FONT size=3 face=Verdana>获取在网上看到但不好下载的视频，用于做幻灯片，或做视频教程等。</FONT></P>
<P><FONT size=3><FONT face=Verdana>最强大的<STRONG>Camtasia Studio</STRONG></FONT></FONT></P>
<P><FONT size=3 face=Verdana>与众所周知的屏幕截图软件SnagIt出自同一公司，支持格式多，编辑功能在此类软件中是最强大的。</FONT></P>
<P><FONT size=3><FONT face=Verdana>小巧强大的 <STRONG>InstantDemo</STRONG></FONT></FONT></P>
<P><FONT size=3 face=Verdana>只可以输出swf、AVI、exe格式，可以对每一帧进行编辑，加入气泡、文字说明、链接，智能设置停顿时间，堪称最小最方便但很强大的软件</FONT></P>
<P><FONT size=3><FONT face=Verdana>国产老大 <STRONG>屏幕录像专家</STRONG></FONT></FONT></P>
<P><FONT size=3 face=Verdana>操作简单,但我怎么喜欢，没什么特色。</FONT></P>
<P><FONT size=3 face=Verdana>&nbsp;</FONT></P>
<P><FONT color=#ff0000></FONT><FONT size=3 face=Verdana>&nbsp;<FONT color=#ff0000>网页制作</FONT>（如果有兴趣，想自己做网页在网上展示自己的东西）</FONT></P>
<P><FONT size=3 face=Verdana>Adobe Dreamweaver</FONT></P>
<P><FONT size=3 face=Verdana>可视化制作网页，管理网站，提供一定的动态脚本支持用于后台页面开发，但不怎么强大好用。</FONT></P>
<P><FONT size=3 face=Verdana>制作的主要是我们平时所看到的页面，至于后台复杂的后台逻辑（网页并不仅仅是个页面，后台还有程序支持的)</FONT></P>
<P><FONT size=3 face=Verdana>还可以用文本编辑器或专业工具。</FONT></P>
<P><FONT size=3 face=Verdana>&nbsp;</FONT></P>
<P><FONT color=#ff0000 size=3 face=Verdana>动画制作</FONT></P>
<P><STRONG><FONT size=3 face=Verdana>Adobe Flash</FONT></STRONG></P>
<P><FONT size=3 face=Verdana>可以制作适于在网络上传播的动画，还可编程，制作一些小应用甚至比较牛的flash游戏等。不少人对这个有兴趣，有兴趣你也可以试试。</FONT></P>
<P><FONT size=3 face=Verdana>&nbsp;</FONT></P>
<P><FONT color=#ff0000 size=3 face=Verdana>视频处理</FONT></P>
<P><STRONG><FONT size=3 face=Verdana>绘声绘影</FONT></STRONG></P>
<P><FONT size=3 face=Verdana>强大简单好用的 绘声绘影 被很多人推祟，它可以用简单操作地做出专业的视频效果。</FONT></P>
<P><STRONG><FONT size=3 face=Verdana>Adobe Premiere Pro</FONT></STRONG></P>
<P><FONT size=3 face=Verdana>如果你想做出 绘声绘影 更好的效果，用这个专业软件吧，不想用这么专业的也没关系，但你得知道有这么个东西，不要以为 绘声绘影 是最伟大最强的。（其实绘声绘影还是比较傻瓜的软件）</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT color=#ffffff>出处：</FONT><A href="http://wuxiong8665.blog.163.com/blog/static/9351220091076639532/"><FONT color=#ffffff>http://wuxiong8665.blog.163.com/blog/static/9351220091076639532/</FONT></A><BR><FONT size=3 face=Verdana>--------------------------------------------------------------------------------</FONT> </P>
<P><FONT size=3 face=Verdana></FONT></P><FONT size=3 face=Verdana></FONT>
<HR>

<P></P>
<P align=center><STRONG><FONT color=#ff0000 size=3 face=Verdana>能提升大学生自身品位，增强应用能力的实用软件（学不学得好得看兴趣和自己的态度）</FONT></STRONG></P>
<P><FONT color=#ff0000></FONT><FONT size=3 face=Verdana>&nbsp;</FONT></P>
<P><FONT color=#ff0000 size=3 face=Verdana>数据存储、查询、分析</FONT></P>
<P><FONT size=3 face=Verdana>不要以为数据库没什么用，它的用处真的太大了，虽然你觉得你没用，其实你只要碰电脑、只要上网就在用，公司里数据的存储处理都是相当常用且重要的，很多企业级的软件都是架构在数据库的支持上的！</FONT></P>
<P><STRONG><FONT size=3 face=Verdana>Office Access 2003/2007</FONT></STRONG></P>
<P><FONT size=3 face=Verdana>简单的可视化操作，界面类似Excel，可编程查询、处理。</FONT></P>
<P><FONT size=3><FONT face=Verdana><STRONG>MS SQL Server</STRONG>（及SQL查询语句）</FONT></FONT></P>
<P><FONT size=3 face=Verdana>Access只能用于一些不太复杂的应用，MS SQL更强大。说到数据库操作，如果你想真正通过数据库做一些强大、自动化的事情，SQL查询语句必须懂点。</FONT></P>
<P><FONT size=3 face=Verdana>&nbsp;</FONT></P>
<P><FONT color=#ff0000 size=3 face=Verdana>矢量图像制作软件</FONT></P>
<P><FONT size=3 face=Verdana>能用用photoshop的做些简单的事就可以了，为什么还要学做矢量图的软件呢？</FONT></P>
<P><FONT size=3 face=Verdana>因为矢量图可以任意缩放不失真，广泛用于打印行业，以后你到了公司，你就知道那些代表公司形象的logo都是用矢量图的，有些海报、广告的插画也是矢量插图。photoshop做的一般是位图，一放大就不清晰了！</FONT></P><FONT size=3 face=Verdana>
<P>如果你以后进的不是搞设计的公司，但有时也要用到这些东西，如设计几个图案、标志，排版海报，而你的同事也不是搞这方面的，你却学得不错，那么你就可以一展身手了。</P>
<P></P></FONT><FONT size=3><FONT face=Verdana><STRONG>illustrator与coreldraw<BR></STRONG>两者各有优势,定位不一样,能比较的其实只是一小部分,不应该比较哪个好.</FONT></FONT>
<P><FONT size=3 face=Verdana>illustrator的AI已经是一个标准,illustrator构图更优美，偏艺术.</FONT></P>
<P><FONT size=3 face=Verdana>coreldraw功能多,具有部分3dmax特性,集成简单的排版功能,所以比较方便.</FONT></P>
<P><FONT size=3><FONT face=Verdana><STRONG>素有南</STRONG>(<EM>中国南部</EM>) <STRONG>AI</STRONG> (<EM>即 illustrator,illustrator文件扩展名为AI</EM>),<STRONG> 北CD </STRONG>(<EM>coreldraw口头述语,coreldraw文件扩展名为CDR</EM>) <STRONG>之传说</STRONG></FONT></FONT></P>
<P><FONT color=#ff0000><FONT size=3><FONT face=Verdana><STRONG>认识误区</STRONG>：coreldraw是排版软件</FONT></FONT></FONT></P>
<P><FONT size=3 face=Verdana>由于coreldraw经常被人们与排版联系在一起，很多人拿这方面与illustrator比较。所以一般人都认为 CorelDRAW 是排版软体，Corel 公司估计只能哭笑不得,因为CorelDRAW只是为了方便集成了简单的排版功能,Corel 公司有专门的专业排版软体 Corel Ventura.</FONT></P>
<P><FONT size=3 face=Verdana>实际上Adobe公司也有专门的排版工具:一个是输出方便但功能不能让专业人士满意的Adobe PageMaker(已经被</FONT></P>
<P><FONT size=3><FONT face=Verdana>Adobe放弃升级和支持,在中国排版市场却仍占了很大份量,中国国情导致的(思想更新慢))和Adobe公司后来出的<STRONG>排版软件龙头老大-Adobe InDesign</STRONG></FONT></FONT></P>
<P><FONT size=3 face=Verdana>———————————————————————————<BR></FONT></P>
<P><FONT size=3 face=Verdana></FONT></P><FONT size=3 face=Verdana></FONT>
<HR>

<P></P>
<P align=center><STRONG><FONT color=#ff0000 size=3 face=Verdana>可以了解一下的专业软件（仅适用于专业人士或有强烈兴趣的人）</FONT></STRONG></P>
<P><STRONG><FONT color=#ff0000></FONT></STRONG><FONT size=3 face=Verdana>&nbsp;</FONT></P>
<P><STRONG><FONT color=#ff0000 size=3 face=Verdana>程序设计</FONT></STRONG></P>
<P><STRONG><FONT size=3 face=Verdana>Microsoft Visual Studio</FONT></STRONG></P>
<P><FONT size=3 face=Verdana>微软主打.net框架专业开发工具，装个Microsoft Visual Studio 2008专业版或Team版得要40分钟左右，得占用6~9G硬盘空间，帮助文档就有两三G。</FONT></P>
<P><FONT size=3 face=Verdana>想用C++，C#，VB等在.net框架上开发软件，或开发asp.net网站，就用这个集成工具了！很强大。</FONT></P>
<P><STRONG><FONT size=3 face=Verdana>Microsoft Visual C++ 6.0</FONT></STRONG></P>
<P><FONT size=3 face=Verdana>计算机等级考试C语言要用，想专门做软件还是用上面的那个吧，这个估计快淘汰了！</FONT></P>
<P><FONT color=#ff0000></FONT><FONT size=3 face=Verdana>&nbsp;</FONT></P>
<P><FONT color=#ff0000 size=3 face=Verdana>3D建模</FONT></P>
<P><FONT size=3 face=Verdana>一般人只怕不会去接触，不过确实很多人说学这个很有用，用这个用得牛B的好像比较赚钱。</FONT></P>
<P><STRONG><FONT size=3 face=Verdana>3dmax</FONT></STRONG></P>
<P><FONT size=3 face=Verdana>3D构图老大，建模，3D建筑设计……，知道有这样个设计3D图的软件就行了！</FONT></P>
<P><FONT size=3 face=Verdana>&nbsp;</FONT></P>
<P><FONT size=3 face=Verdana>其它，还没想起来……</FONT></P>
<P><FONT size=3 face=Verdana>&nbsp;</FONT></P>
<P><STRONG><FONT size=3 face=Verdana>以上蜻蜓点水般，仅献给普通非专业人士参考。</FONT></STRONG></P>
<P><FONT size=3 face=Verdana>&nbsp;</FONT></P></div>]]></description>
	    <author><![CDATA[高级菜鸟]]></author>
	    <comments>http://wuxiong8665.blog.163.com/blog/static/9351220091076639532</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://wuxiong8665.blog.163.com/blog/static/9351220091076639532</guid>
    <pubDate>Sat, 7 Nov 2009 18:06:39 +0800</pubDate>
    <dcterms:modified>2009-11-07T23:12:40+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[微软官方ASP.NET初学者视频在线观看及下载]]></title>	
    <link>http://wuxiong8665.blog.163.com/blog/static/93512200910654314186</link>
    <description><![CDATA[<div><P align=center><STRONG>微软官方ASP.NET初学者视频在线观看及下载,标准的英语讲解,清晰明了,深受好评!</STRONG></P>
<P><STRONG><FONT color=#ff0000>ASP.NET 2.0 Beginners / ASP.NET 3.5 Silverlight视频在线观看</FONT></STRONG>(可以顺便体验一下这个不太为人知的神奇的Silverlight)</P>
<P><EM>Videos for ASP.NET 2.0 Beginners using Visual Web Developer 2005</EM></P>
<P><EM>Building Web Applications with ASP.NET 3.5 and Microsoft Visual Web Developer 2008</EM></P>
<P><STRONG>请到下面的地址(微软asp.net官网)观看</STRONG></P>
<P><A href="http://www.asp.net/learn/videos/#beginners">http://www.asp.net/learn/videos/#beginners</A></P>
<P>每个视频的下方都有相应各种格式的视频文件下载(有些还区分VB和C#,分别录有视频),如下所示:</P>
<DIV>
<P><SPAN>Video downloads:</SPAN> <SPAN><A href="http://download.microsoft.com/download/5/B/E/5BE27139-088F-4F94-A505-8901EF5897FA/01%20-%20Getting%20Started%20with%20Visual%20Web%20Developer%202005%20Express%20Edition-1.wmv"><FONT color=#034efa>WMV</FONT></A></SPAN> <SPAN></SPAN><SPAN><SPAN><FONT color=#999999>&nbsp;|&nbsp;</FONT></SPAN> <A href="http://download.microsoft.com/download/3/1/0/3101b5ce-c05c-4c6a-8db6-32e989001ce4/Zune-01%20-%20Getting%20Started%20with%20Visual%20Web%20Developer%202005%20Express%20Edition-0.wmv"><FONT color=#034efa>Zune</FONT></A></SPAN> <SPAN></SPAN><SPAN><SPAN><FONT color=#999999>&nbsp;|&nbsp;</FONT></SPAN> <A href="http://download.microsoft.com/download/3/1/0/3101b5ce-c05c-4c6a-8db6-32e989001ce4/iPod-01%20-%20Getting%20Started%20with%20Visual%20Web%20Developer%202005%20Express%20Edition-0.mp4"><FONT color=#034efa>iPod</FONT></A></SPAN> <SPAN></SPAN><SPAN><SPAN><FONT color=#999999>&nbsp;|&nbsp;</FONT></SPAN> <A href="http://download.microsoft.com/download/3/1/0/3101b5ce-c05c-4c6a-8db6-32e989001ce4/PSPVideo-01%20-%20Getting%20Started%20with%20Visual%20Web%20Developer%202005%20Express%20Edition.zip"><FONT color=#034efa>PSP</FONT></A></SPAN> <SPAN></SPAN><SPAN><SPAN><FONT color=#999999>&nbsp;|&nbsp;</FONT></SPAN> <A href="http://download.microsoft.com/download/3/1/0/3101b5ce-c05c-4c6a-8db6-32e989001ce4/MP4Video-01%20-%20Getting%20Started%20with%20Visual%20Web%20Developer%202005%20Express%20Edition-1.mp4"><FONT color=#034efa>MPEG-4</FONT></A></SPAN> <SPAN></SPAN><SPAN><SPAN><FONT color=#999999>&nbsp;|&nbsp;</FONT></SPAN> <A href="http://download.microsoft.com/download/3/1/0/3101b5ce-c05c-4c6a-8db6-32e989001ce4/3GPVideo-01%20-%20Getting%20Started%20with%20Visual%20Web%20Developer%202005%20Express%20Edition.3gp"><FONT color=#034efa>3GP</FONT></A></SPAN> <SPAN></SPAN></P></DIV>
<DIV>
<P><SPAN>Audio downloads:</SPAN> <SPAN><A href="http://download.microsoft.com/download/3/1/0/3101b5ce-c05c-4c6a-8db6-32e989001ce4/AACAudio-01%20-%20Getting%20Started%20with%20Visual%20Web%20Developer%202005%20Express%20Edition.aac"><FONT color=#034efa>AAC</FONT></A></SPAN> <SPAN></SPAN><SPAN><SPAN><FONT color=#999999>&nbsp;|&nbsp;</FONT></SPAN> <A href="http://download.microsoft.com/download/3/1/0/3101b5ce-c05c-4c6a-8db6-32e989001ce4/WinAudio-01%20-%20Getting%20Started%20with%20Visual%20Web%20Developer%202005%20Express%20Edition.wma"><FONT color=#034efa>WMA</FONT></A></SPAN> <SPAN></SPAN><SPAN><SPAN><FONT color=#999999>&nbsp;|&nbsp;</FONT></SPAN> <A href="http://download.microsoft.com/download/3/1/0/3101b5ce-c05c-4c6a-8db6-32e989001ce4/MP4Audio-01%20-%20Getting%20Started%20with%20Visual%20Web%20Developer%202005%20Express%20Edition.m4a"><FONT color=#034efa>MPEG-4</FONT></A></SPAN> <SPAN></SPAN><SPAN><SPAN><FONT color=#999999>&nbsp;|&nbsp;</FONT></SPAN> <A href="http://download.microsoft.com/download/3/1/0/3101b5ce-c05c-4c6a-8db6-32e989001ce4/MP3Audio-01%20-%20Getting%20Started%20with%20Visual%20Web%20Developer%202005%20Express%20Edition.mp3"><FONT color=#034efa>MPEG-3</FONT></A></SPAN> <SPAN></SPAN><SPAN><SPAN><FONT color=#999999>&nbsp;|&nbsp;</FONT></SPAN> <A href="http://download.microsoft.com/download/3/1/0/3101b5ce-c05c-4c6a-8db6-32e989001ce4/MP2Audio-01%20-%20Getting%20Started%20with%20Visual%20Web%20Developer%202005%20Express%20Edition.mp2"><FONT color=#034efa>MPEG-2</FONT></A></SPAN> </P></DIV>
<P><STRONG><FONT color=#ff0000>注意:</FONT>观看本微软官方视频,你得花一丁点时间安装微软自家优秀但很神秘 (因为除了微软官方很少在其它网页看到,开发者也不多,我最近才知道其生成的动画文件的扩展名是什么) 的Silverlight插件</STRONG>.</P>
<P><EM>(Silverlight简介:类似于网页上最常用的动画:flash,用<FONT color=#ff0000>Silverlight做的视频</FONT>是<FONT color=#ff0000>由纯文本构成的</FONT>,非常有利于搜索引擎搜索,视频轻巧,效果不错.其源文件为一个扩展名为.xaml的文件和.cs的代码文件,导出的工程，生成为.xap(相当于flash的swf文件)，.xap可以使用aspx页面进行调用。)</EM></P>
<P><EM>_______________________________________________________________</EM></P>
<P></P>
<HR>

<P></P>
<P><STRONG><FONT color=#ff0000>另Videos for ASP.NET 2.0 Beginners有整套WMV视频文件打包下载</FONT>,3.5的我没找!</STRONG></P>
<P>Videos for ASP.NET 2.0 Beginners using Visual Web Developer 2005 WMV视频下载&nbsp;</P><A href="http://ed2k//%7Cfile%7C%5B%E5%BE%AE%E8%BD%AF%E5%AE%98%E6%96%B9ASP.NET.2.0%E5%85%A5%E9%97%A8%E8%A7%86%E9%A2%91%E6%95%99%E7%A8%8B%5D.Videos.for.ASP.NET.2.0.Beginners.rar%7C215196170%7Caead239e2cc725dd9d0746dccc5cc05a%7Ch=77KH77L2TLAJZAHHZATJFEQRGGQO4T3D%7C/" target=_blank>微软官方ASP.NET.2.0入门视频教程:[Videos.for.ASP.NET.2.0.Beginners]</A> (用电驴/快车/迅雷(手动新建)下载)</div>]]></description>
	    <author><![CDATA[高级菜鸟]]></author>
	    <comments>http://wuxiong8665.blog.163.com/blog/static/93512200910654314186</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://wuxiong8665.blog.163.com/blog/static/93512200910654314186</guid>
    <pubDate>Fri, 6 Nov 2009 17:43:14 +0800</pubDate>
    <dcterms:modified>2009-11-06T17:57:50+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[asp数据库基本操作及相关知识]]></title>	
    <link>http://wuxiong8665.blog.163.com/blog/static/935122009105102236427</link>
    <description><![CDATA[<div><P><STRONG><FONT color=#ff0000>最基本的 增、删、改、查</FONT></STRONG></P>
<P><STRONG>利用Recordset对象的方法实现</STRONG></P>
<P><EM>如果是从头到尾：用循环并判断指针是否到末&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 使用: not rs.eof&nbsp;&nbsp;<BR>如果是从尾到头：用循环并判断指针是否到开始&nbsp;&nbsp;&nbsp;&nbsp; 使用：not rs.bof&nbsp;&nbsp;<BR>以下均得事先得包含conn.asp用来打开数据库&nbsp;<BR>message为数据库中的一个数据表</EM></P>
<P><EM>rs.open sqlstr,conn,1,3 可以改为有意义 的常量,一般在adovbs.inc文件中定义再包含之</EM></P>
<P><EM>'---- CursorTypeEnum Values ----<BR>Const adOpenForwardOnly = 0<BR>Const adOpenKeyset = 1<BR>Const adOpenDynamic = 2<BR>Const adOpenStatic = 3<BR>'---- LockTypeEnum Values ----<BR>Const adLockReadOnly = 1<BR>Const adLockPessimistic = 2<BR>Const adLockOptimistic = 3<BR>Const adLockBatchOptimistic = 4</EM></P>
<P><EM>
</EM></P><HR>

<P></P>
<P><STRONG>增：增加数据库记录</STRONG>&nbsp;&nbsp;<BR>增加数据库记录用到rs.addnew,rs.update两个函数&nbsp;&nbsp;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.open sqlstr,conn,1,3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ----&gt;(表示打开数据库的方式)&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.addnew&nbsp;&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; rs("name")="xx"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 将xx的值传给name字段&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.update&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;<BR>------------------------------------------------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.close&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conn.close&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; set rs=nothing&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set conn=nothing&nbsp;&nbsp;<BR>-------------------------------------------------------&nbsp;&nbsp;</P>
<P><STRONG>删：删除一条记录</STRONG>&nbsp;&nbsp;<BR>&nbsp;&nbsp; 删除数据库记录主要用到rs.delete,rs.update&nbsp;&nbsp;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.open sqlstr,conn,1,3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ----&gt;(表示打开数据库的方式)&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while not rs.eof&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if rs.("name")=name then&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.delete&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.update&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查询数据表中的name字段的值是否等于变量name的值"xx"，如果符合就执行删除，&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else&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; rs.movenext&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end if&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wend&nbsp;&nbsp;<BR>------------------------------------------------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.close&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conn.close&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; set rs=nothing&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set conn=nothing&nbsp;&nbsp;<BR>-------------------------------------------------------&nbsp;&nbsp;&nbsp;</P>
<P><STRONG>改：增加数据库记录&nbsp;&nbsp;和[增]相似</STRONG><BR>增加数据库记录用到rs.addnew,rs.update两个函数&nbsp;&nbsp;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.open sqlstr,conn,1,3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ----&gt;(表示打开数据库的方式)&nbsp;&nbsp;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while not rs.eof&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if rs.("name")=name then&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs("name")="xx"&nbsp;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs.update</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else&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; rs.movenext&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end if&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wend&nbsp;&nbsp;<BR><BR>------------------------------------------------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.close&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conn.close&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; set rs=nothing&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set conn=nothing&nbsp;&nbsp;<BR>-------------------------------------------------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR><STRONG>查：显示数据库记录</STRONG>&nbsp;&nbsp;<BR>&nbsp;&nbsp; 原理：将数据库中的记录一一显示到客户端浏览器，依次读出数据库中的每一条记录&nbsp;&nbsp;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.open sqlstr,conn,1,3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ----&gt;(表示打开数据库的方式)&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.movefirst&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ----&gt;(将指针移到第一条记录)&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while not rs.eof&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ----&gt;(判断指针是否到末尾)&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.write(rs("name"))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ----&gt;(显示数据表message中的name字段)&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.movenext&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ----&gt;(将指针移动到下一条记录)&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wend&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;&nbsp; ----&gt;(循环结束)&nbsp;&nbsp;<BR>------------------------------------------------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.close&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conn.close&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; set rs=nothing&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set conn=nothing&nbsp;&nbsp;<BR>-------------------------------------------------------&nbsp;&nbsp;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其中response对象是服务器向客户端浏览器发送的信息&nbsp;&nbsp;</P>
<P></P>
<HR>

<P></P>
<P>但是最基本的往往存在很多不足.</P>
<P><STRONG><FONT color=#ff0000>更有效率的 增、删、改、查</FONT></STRONG></P>
<P><EM>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </EM><STRONG>利用Connection对象的Excute方法加SQL语句实现(在数据库中直接筛选查询比在asp中快)</STRONG>如:</P>
<P><STRONG>删:删除一条记录</STRONG>&nbsp;&nbsp;&nbsp;&nbsp;<BR>sqlstr="Delete from order Where name="&amp;name<BR>conn.Excute(sqlstr)</P>
<P><STRONG>改:</STRONG>将上面的Delete改为Update,此处Update是更改数据库中已经存在的数据,与上面的Recordset对象的Update方法有所不同.</P>
<P><STRONG><FONT color=#ff0000>更灵活更有效率的 增、删、改、查</FONT></STRONG></P>
<P>对于反复/大量操作,Command对象执行<FONT color=#ff0000>参数化</FONT>的存储过程,更快!</P>
<P>Command 对象定义了将对数据源执行的命令，可以用于查询数据库表并返回一个记录集，也可以用于对数据库表进行添加、更改和删除操作。 </P>
<P>一、使用Command 对象的步骤：</P>
<P>当在 ASP 页面中使用 Command 对象处理数据时，应首先设置命令类型、命令文本以及相关的活动数据库连接等，并通过 Parameter 对象传递命令参数，然后通过调用 Execute 方法来执行 SQL 语句或调用存储过程，以完成数据库记录的检索、添加、更改和删除任务。其步骤如下：</P>
<P>1、使用 ActiveCommand 属性设置相关的数据库连接；</P>
<P>2、使用 CommandType 属性设置命令类型；</P>
<P><EM>1、adCmdText ：表示处理的是一个 SQL 语句；</EM></P>
<P><EM>2、adCmdTable ：表示处理的是一个表；</EM></P>
<P><EM>3、<STRONG>adCmdStoredProc</STRONG> ：表示处理的是一个存储过程；</EM></P>
<P><EM>4、adCmdUnknow ：表示不能识别，它是默认值。</EM></P>
<P>3、使用 CommandText 属性定义命令（例如SQL语句）的可执行文本；</P>
<P>4、使用 CommandTimeout 属性设置命令超时时间；</P>
<P>5、使用 Execute 方法执行命令。</P>
<P>&nbsp;</P>
<P><STRONG>例:使用</STRONG><EM><STRONG>adCmdText</STRONG> </EM></P>
<P>&lt;%<BR>'****************创建两个对象（连接对象和指令对象）和五个参数*********************<BR>dim cnn,cmd<BR>set cnn=Server.CreateObject("ADODB.Connection")<BR>set cmd=Server.CreateObject("ADODB.Command")<BR>'指定连接字符串，<BR>cnn.ConnectionString="PROVIDER=Microsoft.jet.OLEDB.4.0;Da<WBR>ta Source=" &amp; server.MapPath("../rsgl.mdb")<BR>cnn.Open<BR>'设置ActiveConnection属性，使Command对象与打开的连接相关联<BR>set cmd.ActiveConnection=cnn<BR>'指定传送给数据提供者的命令文本是一条SQL语言。<BR>cmd.CommandType=<FONT color=#ff0000>adCmdText</FONT><BR>cmd.CommandText="<FONT color=#ff0000>INSERT</FONT> INTO 员工基本情况表(员工姓名,所在部门,家庭住址,家庭电话,Email) values(?,?,?,?,?)"<BR>'创建五个Parameter对象<BR>set PrmName=cmd.CreateParameter("员工姓名",<FONT color=#ff0000>adVarChar,adParamInput,10</FONT>)<FONT color=#ff0000>'可以设定参数</FONT><BR>set PrmDepartment=cmd.CreateParameter("所在部门",<FONT color=#ff0000>adVarChar,adParamInput,10</FONT>)<BR>set PrmAddr=cmd.CreateParameter("家庭住址",<FONT color=#ff0000>adVarChar,adParamInput,12</FONT>)<BR>set PrmTel=cmd.CreateParameter("家庭电话",<FONT color=#ff0000>adVarChar,adParamInput,15</FONT>)<BR>set PrmEmail=cmd.CreateParameter("Email",<FONT color=#ff0000>adVarChar,adParamInput,20</FONT>)<BR>'将parameter对象添加到Parameters集合中。<BR>cmd.Parameters.Append prmName<BR>cmd.Parameters.Append prmDepartment<BR>Cmd.Parameters.Append prmAddr<BR>Cmd.Parameters.Append prmTel<BR>Cmd.Parameters.Append prmEmail<BR>'使用表单值设置参数值<BR>PrmName.Value=Request.Form("txtName")<BR>PrmDepartment.Value=Request.Form("txtDepartment")<BR>PrmAddr.Value=Request.Form("txtAddr")<BR>PrmTel.Value=Request.Form("txtTel")<BR>PrmEmail.Value=Request.Form("txtEmail")<BR>'执行INSERT插入命令<BR>cmd.Execute<BR>%&gt;</P>
<P></P>
<HR>
<BR><STRONG>更好的选择应该是使用adCmdStoredProc(存储过程)</STRONG> 
<P></P>
<P>在ASP中<STRONG>调用MSSQL存储过程</STRONG>（Stored Procedure）的介绍。<STRONG>可以使用两种方法：利用recordset对象</STRONG>，或者直接用<STRONG>command对象</STRONG>。<BR>　　recordset对象相当简单，熟悉Asp的都能上手操作，这里简单做个实例：<BR>　　Mssql 中建立存储过程SP_UserList ：<BR>　　CREATE PROCEDURE SP_UserList <BR>　　@Uid int<BR>　　AS<BR>　　select * from Users where Uid = @Uid<BR>　　return<BR>　　GO<BR>　　在SQL Server中执行存储过程：<BR>　　declare @Uid int<BR>　　execute SP_UserList 1<BR>　　使用recordset对象调用：<BR>　　Uid = 1<BR>　　set rs=server.createobject("adodb.recordset")<BR>　　sql = "exec SP_UserList "&amp;Uid&amp;""<BR>　　rs.open sql,conn,1,1<BR>　　或者：<BR>　　Uid = 1 '存储过程的输入参数,为简化程序, 直接设置该值<BR>　　sql = "SP_UserList "&amp;Uid&amp;""<BR>　　Set rs = Conn.Execute(sql) '或者Set rs = Conn.Execute("exec SP_UserList "&amp;Uid&amp;"")<BR>　　如果改用command对象来调用存储过程,<STRONG>如果不想使用魔鬼般的数字</STRONG>，则必须先加载adovbs.inc文件(文件adovbs.inc可在C:\Program Files\Common Files\System\ADO下找到)：<BR>　　&lt;!--必须加载adovbs.inc文件，否则将出错--&gt;<BR>　　&lt;!--#include file="adovbs.inc"--&gt;<BR>　　'-----建立Connection对象----------<BR>　　set Conn = Server.CreateObject("Adodb.connection")<BR>　　Conn.Open "driver={sql server};server=localhost;uid=sa;pwd=;database=Mydbase;"<BR>　　Uid = 1<BR>　　'-----建立Command对象-----------<BR>　　set Comm = server.createobject("adodb.command")<BR>　　Comm.ActiveConnection = Conn</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Comm.CommandType = 4 'adCmdStoredProc = 4 ,其为Stored Procedure<BR>　　Comm.CommandText = "SP_UserList" '存储过程名称，指定要执行的是一个存储过程<BR>　　'-----准备 Stored Procedure 的参数-------<BR>　　Comm.Parameters.Append Comm.CreateParameter("@Uid",adInteger,adParamInput,4,Uid) '<FONT color=#ff0000>命令格式Set parameter = command.CreateParameter (Name, Type, Direction, Size, <STRONG>Value</STRONG>)</FONT><BR>　　'-----或者使用下列的方法定义 Stored Procedure 的参数：先创建输入参数对象，然后把参数加到参数集合-------<BR>　　'Set CommFirstParam = Comm.CreateParameter("@Uid",adInteger,adParamInput,4,Uid) '创建输入参数对象<BR>　　'Comm.Parameters.Append CommFirstParam '把参数加到参数集合</P>
<P>'或者先不给出Uid</P>
<P>'Set CommFirstParam = Comm.CreateParameter("@Uid",adInteger,adParamInput,4) '创建输入参数对象<BR>　　'Comm.Parameters.Append CommFirstParam '把参数加到参数集合</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Comm("@Uid")=Uid</P>
<P><BR>　　'-----执行存储过程----------------------<BR>　　Comm.Execute<BR>　　'-----下面输出参数结果----------------------<BR>　　response.write Comm.Parameters("@Uid")<BR>　　最后关闭command对象：Set Comm = Nothing。如果准备 Stored Procedure 的参数中采用的是创建输入参数对象的方法，则在最后还必须关闭对象：Set CommFirstParam = Nothing<BR></P>
<P>&nbsp; </P>
<HR>

<P></P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<STRONG><FONT color=#ff0000>odbc与ole db</FONT></STRONG></P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一般，odbc是由一套扩展的dll（dynamic　link　library动态链接库）组成，dll提供了标准的数据库应用程序设计接口。而odbc是建立在标准化的sql（structuredQueryLanguage，结构化查询语言）之上。所以通过odbc和sql，就可以编写独立于任何数据库产品的数据访问程序。</P>
<P>用odbc连接数据库： </P>
<P>odbc中提供三种dsn,它们的区别很简单：用户dsn只能用于本用户。系统dsn和文件dsn的区别只在于连接信息的存放位置不同：系统dsn存放在odbc储存区里，而文件dsn则放在一个文本文件中。 </P>
<P>在asp中使用它们时，写法如下： </P>
<P>A.链接sql server: </P>
<P>用系统dsn:</P>
<P>connstr="DSN=dsnname;UID=xx;PWD=xxx;DATABASE=dbname"</P>
<P>用文件dsn: </P>
<P>connstr="FILEDSN=xx;UID=xx;PWD=xxx;DATABASE=dbname" </P>
<P>还可以用连接字符串（从而不用再建立dsn）: </P>
<P>connstr="DRIVER={SQL SERVER};SERVER=servername;UID=xx;PWD=xxx" </P>
<P>B.链接access: </P>
<P>用系统dsn: </P>
<P>connstr="DSN=dsnname" </P>
<P>(或者为：connstr="DSN=dsnname;UID=xx;PWD=xxx") </P>
<P>用文件dsn:</P>
<P>connstr="FILEDSN=xx" </P>
<P>还可以用连接字符串（从而不用再建立dsn）: </P>
<P>connstr="DRIVER={Microsoft Access Driver};DBQ=d:\abc\abc.mdb"</P>
<P>缺陷：</P>
<P>ODBC含有大量的低级的调用,因此开发ODBC应用程序还比较困难. 开发者不得不将大量的精力花在底层的数据库通信中,而不能专注于他们所要处理的数据.</P>
<P>OLE DB <BR>多年以来，ODBC 已成为访问客户端／服务器数据库的标准。ODBC 提供了基于标准的接口，接口要求 SQL 处理功能，并被优化用于基于 SQL 的方法。然而，如果要访问不使用 SQL 的非关系数据源（例如，不按照关系存储数据的 Microsoft Exchange Server）中的数据，情况会如何呢？<BR>进入 OLE DB。OLE DB 建立于 ODBC 之上，并将此技术扩展为提供更高级数据访问接口的组件结构。此结构对企业中及 Internet 上的 SQL、非 SQL 和非结构化数据源提供一致的访问。（实际上，在访问基于 SQL 的数据时，OLE DB 仍使用 ODBC，因为对于 SQL 它是最优结构。）</P>
<P><BR>OLE DB 由三个组件构成：数据使用者（例如，一个应用程序）；包含并公开数据的数据提供程序以及处理并传输数据的服务组件（例如，查询处理器、游标引擎）。OLE DB 是一个针对 SQL 数据源和非 SQL 数据源（例如，邮件和目录）进行操作的 API。</P>
<P><BR>OLE DB 为 C 和 C++ 程序员及使用其他包含 C 样式函数调用语言的程序员提供绑定。有一些语言（例如 VB 和 VBScript）不提供指针数据类型（地址变量）。因此，这些语言不能使用 C 样式绑定，而且不能直接调用 OLE DB。<BR>它实际上包涵了Microsoft　Jet数据库引擎，这是一个由Microsoft　Access所使用的引擎，并允许应用程序开发者通过ODBC象直接链接到其它数据库一样，直接链接到Access表，当然也可以访问SQL　SERVER数据库。Dao最适用于单系统应用程序或小范围本地分布使用。<BR>在此基础上，Microsoft 推出了另一个数据访问对象模型：ADO(第一个是DAO)。ADO 采用基于 DAO 和 RDO 的对象，并提供比 DAO 和 RDO 更简单的对象模型（尽管会产生一些冗余的功能，如现在进行一项操作时可以用不止一种方法）。ADO 中的对象层次结构比 DAO 中的更平缓。ADO 包含一些简化对数据存储区数据的访问任务的内置对象。<BR>而DAO是第一个面向对象的接口，DAO模型是设计关系数据库系统结构的对象类的集合。它们提供了完成管理一个关系型数据库系统所需的全部操作的属性和方法，这其中包括创建数据库，定义表、字段和索引，建立表间的关系，定位和查询数据库等</P><STRONG>
<P>数据访问技术的演变<A href="http://www.microsoft.com/china/MSDN/library/data/sqlserver/TheEvolutionofData.mspx?mfr=true">http://www.microsoft.com/china/MSDN/library/da<WBR>ta/sqlserver/TheEvolutionofData.mspx?mfr=true</A></P>
<P></P></STRONG>
<HR>

<P></P>
<P><STRONG>连接数据库代码</STRONG></P>
<P>asp连接access&nbsp;sql数据库代码及数据库操作<BR>1. ASP与Access数据库连接：<BR>dim strConn<BR>dim conn<BR>strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Da<WBR>ta Source="+Server.mappath("da<WBR>ta/db1.mdb")+";Persist Security Info=False"<BR>set conn = Server.CreateObject("ADODB.Connection") </P>
<P><BR>2. ASP与SQL数据库连接：<BR>dim conn <BR>set conn=server.createobject("ADODB.connection") <BR>con.open "PROVIDER=SQLOLEDB;DA<WBR>TA SOURCE=SQL服务器名称或IP地址;UID=sa;PWD=数据库密码;DATABASE=数据库名称 </P>
<P><BR>建立记录集对象： set rs=server.createobject("adodb.recordset") <BR>rs.open SQL语句,conn,1,3 </P>
<P><BR><STRONG>SQL常用命令使用方法：</STRONG> </P>
<P>数据记录筛选：<BR>sql="select * from 数据表 where 字段名=字段值 order by 字段名 " <BR>sql="select * from 数据表 where 字段名 like ‘%字段值%‘ order by 字段名 " <BR>sql="select top 10 * from 数据表 where 字段名 order by 字段名 " <BR>sql="select * from 数据表 where 字段名 in (‘值1‘,‘值2‘,‘值3‘)" <BR>sql="select * from 数据表 where 字段名 between 值1 and 值2" </P>
<P>更新数据记录：<BR>sql="update 数据表 set 字段名=字段值 where 条件表达式" <BR>sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式" </P>
<P>删除数据记录：<BR>sql="delete from 数据表 where 条件表达式" <BR>sql="delete from 数据表" (将数据表所有记录删除) </P>
<P>添加数据记录：<BR>sql="insert into 数据表 (字段1,字段2,字段3 …) valuess (值1,值2,值3 …)" <BR>sql="insert into 目标数据表 select * from 源数据表" (把源数据表的记录添加到目标数据表) </P>
<P>数据记录统计函数：<BR>AVG(字段名) 得出一个表格栏平均值<BR>COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据行数统计<BR>MAX(字段名) 取得一个表格栏最大的值<BR>MIN(字段名) 取得一个表格栏最小的值<BR>SUM(字段名) 把数据栏的值相加 </P>
<P>引用以上函数的方法：<BR>sql="select sum(字段名) as 别名 from 数据表 where 条件表达式" <BR>set rs=conn.excute(sql) <BR>用 rs("别名") 获取统计的值，其它函数运用同上。<BR>&nbsp; </P>
<P>数据表的建立和删除：<BR>CREATE TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) …… ) <BR>例：CREATE TABLE tab01(name varchar(50),datetime default now()) <BR>DROP TABLE 数据表名称 (永久性删除一个数据表) </P>
<P><STRONG>记录集对象的方法：</STRONG>&nbsp; <BR>rs.movenext 将记录指针从当前的位置向下移一行 <BR>rs.moveprevious 将记录指针从当前的位置向上移一行 <BR>rs.movefirst 将记录指针移到数据表第一行 <BR>rs.movelast 将记录指针移到数据表最后一行 <BR>rs.absoluteposition=N 将记录指针移到数据表第N行 <BR>rs.absolutepage=N 将记录指针移到第N页的第一行 <BR>rs.pagesize=N 设置每页为N条记录 <BR>rs.pagecount 根据 pagesize 的设置返回总页数 <BR>rs.recordcount 返回记录总数 <BR>rs.bof 返回记录指针是否超出数据表首端，true表示是，false为否 <BR>rs.eof 返回记录指针是否超出数据表末端，true表示是，false为否 <BR>rs.delete 删除当前记录，但记录指针不会向下移动 <BR>rs.addnew 添加记录到数据表末端 <BR>rs.update 更新数据表记录 </P>
<P></P>
<HR>

<P></P>
<P><STRONG><FONT color=#ff0000>&nbsp;&nbsp; nchar，char，varchar与nvarchar的区别</FONT></STRONG></P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char类型： 对英文(ASCII)字符占用1个字节，对一个汉字占用2个字节，CHAR存储定长数据很方便，CHAR字段上的索引效率级高，比如定义 char(10)，那么不论你存储的数据是否达到了10个字节，都要占去10个字节的空间。因为是固定长度，所以速度效率高。</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Varchar类型：Varchar 的类型不以空格填满，比如varchar(100)，但它的值只是"qian",则它的值就是"qian"<BR>而char 不一样，比如char(100),它的值是"qian"，而实际上它在数据库中是"qian "(qian后共有96个空格，就是把它填满为100个字节)。</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 由于char是以固定长度的，所以它的速度会比varchar快得多!但程序处理起来要麻烦一点，要用trim之类的函数把两边的空格去掉!</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VARCHAR存储变长数据，但存储效率没有CHAR高。如 果一个字段可能的值是不固定长度的，我们只知道它不可能超过10个字符，把它定义为 VARCHAR(10)是最合算的。VARCHAR类型的实际长度是它的值的实际长度+1。为什么“+1”呢？这一个字节用于保存实际使用了多大的长度。</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Nchar类型和Nvarchar类型是怎么一回事呢？为了与其他多种字符的转换，如中文，音标等，对每个英文(ASCII)字符都占用2个字节，对一个汉字也占用两个字节，所有的字符都占用2个字节。</P>
<P>例如</P>
<P>varchar(n):变长型字符数据类型，存储最长长度为8,000 个字符。</P>
<P>举个例子：<BR>insert a select '木子a'<BR>--- 存储长度为5个字节，余下的3个字节全部释放<BR>insert a select '木神易<BR>----存储长度为6个字节，余下的2个字节全部释放<BR>---意思是varchar变长字符数据类型与存储数据的实际长度是一致的</P>
<P>nvarchar(n):可变长度 Unicode 数据，其最大长度为 4,000 字符。<BR>字节的存储大小是所输入字符个数的两倍，<BR>就是说它是双字节来存储数据的。<BR>如果存储数据如果存在单字节时，它也是以双字节来占用存储空间的。</P>
<P>varchar一般适用于英文和数字，Nvarchar适用中文和其他字符，其中N表示Unicode常量，可以解决多语言字符集之间的转换问题</P>
<P></P>
<P></P>
<P>NVARCHAR <BR>在存储时，无论是全角还是半角，每个字符都占用两个字节。 <BR>在定义时，无论全角或是半角，都是定义字符个数而不是字节数。 <BR>最多显示4000个字符（无论全角或半角） <BR>是UNICODE标准字符集。 <BR>VARCHAR <BR>在存储时每个半角字符占用1个字节，每个全角字符占用两个字节。 <BR>在定义时，如果要存储一个汉字，要定义VARCHAR(2)才可以。要存储一个半角英文字母，VARCHAR(1)即可。 <BR>最多显示8000个半角字，4000个全角字 <BR>是非UNICODE字符集。</P>
<P>NCHAR是定长字符， <BR>NVARCHAR是不定长字符， <BR>如果希望列中所有数据项的大小接近一致，则使用 nchar。 <BR>如果希望列中数据项的大小差异很大，则使用 nvarchar</P>
<P><BR><BR><BR>&nbsp;</P></div>]]></description>
	    <author><![CDATA[高级菜鸟]]></author>
	    <comments>http://wuxiong8665.blog.163.com/blog/static/935122009105102236427</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://wuxiong8665.blog.163.com/blog/static/935122009105102236427</guid>
    <pubDate>Thu, 5 Nov 2009 22:22:36 +0800</pubDate>
    <dcterms:modified>2009-11-06T01:04:28+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[ASP ADO三大对象的属性、方法、事件及常数]]></title>	
    <link>http://wuxiong8665.blog.163.com/blog/static/93512200910584856907</link>
    <description><![CDATA[<div><P><SPAN><STRONG><FONT color=#ff0000>Connection对象<BR><BR></FONT>属性</STRONG><BR><BR>属性名称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;数据类型和用途&nbsp;</SPAN></P>
<P><SPAN>Attributes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可读写Long类型，通过两个常数之和指定是否使用保留事务（retainning&nbsp;transactions）。常数adXactCommitRetaining表示调用CommitTrans方法时启动一个新事务；常数adXactAbortRetaning表示调用RollbackTrans方法时启动一个新事务。默认值为0，表示不使用保留事务。&nbsp;</SPAN></P>
<P><SPAN>CommandTimeout&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可读写Long类型，指定中止某个相关Command对象的Execute调用之前必须等待的时间。默认值为30秒。&nbsp;</SPAN></P>
<P><SPAN>ConnectionString&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可读写String类型，提供数据提供者或服务提供者打开到数据源的连接所需要的特定信息&nbsp;</SPAN></P>
<P><SPAN>ConnectionTimeout&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可读写Long类型，指定中止一个失败的Connection.Open方法调用之前必须等待的时间，默认值为15秒。</SPAN></P>
<P><SPAN>CursorLocation&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可读写Long类型，确定是使用客户端(adUseClient)游标引擎，还是使用服务器端(adUseServer)游标引擎。默认值是adUseServer。&nbsp;</SPAN></P>
<P><SPAN>DefaultDatabase&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可读写String类型，如果ConnectString中未指定数据库名称，就使用这里所指定的名称，对SQL&nbsp;Server而言，其值通常是pubs&nbsp;</SPAN></P>
<P><SPAN>IsolationLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可读写Long类型，指定和其他并发事务交互时的行为或事务。见IsolationLevel常数&nbsp;</SPAN></P>
<P><SPAN>Mode&nbsp;Long类型，指定对Connection的读写权限。见Mode常数&nbsp;</SPAN></P>
<P><SPAN>Provider&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可读写String类型，如果ConnectionString中未指定OLE&nbsp;DB数据或服务提供者的名称，就使用这时指定的名称。默认值是MSDASQL(</SPAN><SPAN>Microsoft&nbsp;OLE&nbsp;DB&nbsp;Provider&nbsp;for&nbsp;ODBC)。&nbsp;</SPAN></P>
<P><SPAN>State&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;可读写Long类型，指定连接是处于打开状态，还是处于关闭状态或中间状态。见State常数&nbsp;</SPAN></P>
<P><SPAN>Version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;只读String类型，返回ADO版本号。&nbsp;<BR><BR><STRONG>注意：上面所列出的大多数可读写的属性，只有当连接处于关闭状态时才是可写的。</STRONG><BR><BR>只有当用户为Connection对象用BeginTrans...CommitTrans...RollbackTrans方法定义了不遗余力，事务隔离程度的指定才真正有效。如果有多个数据库用户同时执行事务，那么应用程序中必须指定如何响应运行中的其他事务。<BR><BR><STRONG>方法</STRONG><BR><BR>方法&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;用途&nbsp;<BR>BeginTrans&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;初始化一个事务；其后必须有CommitTrans和／或RollbackTrans相呼应&nbsp;<BR>Close&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;关闭连接&nbsp;<BR>CommitTrans&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;提交一个事务，以完成对数据源的永久改变（要求使用之前必须调用了BeginTrans方法)&nbsp;<BR>Execute&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;从SELECT&nbsp;SQL语句返回一个forward-on<WBR>ly&nbsp;Recordset对象，也用来执行那些不返回Recordset语句，如INSERT、UPDATE、DELETE查询或DDL语句&nbsp;<BR>Open&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;用连接字符串来打开一个连接&nbsp;<BR>OpenSchema&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;返回一个Recordset对象以提供数据源的结构信息(metadata)&nbsp;<BR>RollbackTrans&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;取消一个事务，恢复对数据源做的临时性改变(要求使用之前必须调用了BeginTrans方法)&nbsp;<BR><BR>注：只有Execute、Open和OpenSchema三个方法才能接受变元参数。Execute的语法为：<BR>cnnName.Execute&nbsp;strCommand,[lngRowsAffected[,lngOptions]]<BR>strCommand的值可以是SQL语句、表名、存储过程名，也可以是数据提供者所能接受的任意字符串。为了提高性能，最好为lngOptions参数指定合适的值（详见lngOptions参数用到的常数），以使提供者解释语句时不用再去判定其类型。可选参数lngRowsAffected将返回INSERT、UPDATE或DELETE查询执行以后所影响的数目。这些查询会返回一个关闭的Recordset对象。一个SELECT查询将返回lngRowsAffected值为0并且返回带有一行或多行内容的打开的forward-on<WBR>ly&nbsp;Recordset。<BR><BR><STRONG>事件</STRONG><BR><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;<BR>BeginTransComplete&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BeginTrans方法执行以后。<BR></SPAN></P>
<TABLE border=0 cellSpacing=0 cellPadding=0 width="100%" align=center>
<TBODY>
<TR>
<TD>程序代码：</TD>
<TD align=right>&nbsp;</TD></TR></TBODY></TABLE>
<DIV style="OVERFLOW-X: hidden; OVERFLOW-Y: auto; HEIGHT: 78px">Private&nbsp;Sub&nbsp;cnnName_BeginTransComplet(ByVal&nbsp;TransactionLevel&nbsp;As&nbsp;Long,ByVal&nbsp;pError&nbsp;As&nbsp;ADODB.Error,adStatus&nbsp;As&nbsp;ADODB.EventStatusEnum,&nbsp;ByVal&nbsp;pConnection&nbsp;As&nbsp;ADODB.Connection)</DIV>&nbsp;<BR>CommitTransComplete&nbsp;&nbsp;&nbsp;&nbsp;CommitTrans方法执行以后<BR>
<TABLE border=0 cellSpacing=0 cellPadding=0 width="100%" align=center>
<TBODY>
<TR>
<TD>程序代码：</TD>
<TD align=right>&nbsp;</TD></TR></TBODY></TABLE>
<DIV style="OVERFLOW-X: hidden; OVERFLOW-Y: auto; HEIGHT: 61px">Private&nbsp;Sub&nbsp;Connection1_CommitTransComplete(ByVal&nbsp;pError&nbsp;As&nbsp;ADODB.Error,&nbsp;adStatus&nbsp;As&nbsp;ADODB.EventStatusEnum,&nbsp;ByVal&nbsp;pConnection&nbsp;As&nbsp;ADODB.Connection)&nbsp;</DIV><BR>ConnectComplete&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;成功建立到数据源的Connection之后<BR>
<TABLE border=0 cellSpacing=0 cellPadding=0 width="100%" align=center>
<TBODY>
<TR>
<TD>程序代码：</TD>
<TD align=right><U></U></TD></TR></TBODY></TABLE>
<DIV style="OVERFLOW-X: hidden; OVERFLOW-Y: auto; HEIGHT: 61px">Private&nbsp;Sub&nbsp;Connection1_ConnectComplete(ByVal&nbsp;pError&nbsp;As&nbsp;ADODB.Error,&nbsp;adStatus&nbsp;As&nbsp;ADODB.EventStatusEnum,&nbsp;ByVal&nbsp;pConnection&nbsp;As&nbsp;ADODB.Connection)</DIV>&nbsp;<BR>Disconnect&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connection关闭之后<BR>
<TABLE border=0 cellSpacing=0 cellPadding=0 width="100%" align=center>
<TBODY>
<TR>
<TD>程序代码：</TD>
<TD align=right>&nbsp;</TD></TR></TBODY></TABLE>
<DIV style="OVERFLOW-X: hidden; OVERFLOW-Y: auto; HEIGHT: 61px">Private&nbsp;Sub&nbsp;Connection1_Disconnect(adStatus&nbsp;As&nbsp;ADODB.EventStatusEnum,&nbsp;ByVal&nbsp;pConnection&nbsp;As&nbsp;ADODB.Connection)&nbsp;</DIV><BR>ExecuteComplete&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;完成Connection.Execute或Command.Execute之时<BR>
<TABLE border=0 cellSpacing=0 cellPadding=0 width="100%" align=center>
<TBODY>
<TR>
<TD>程序代码：</TD>
<TD align=right><U></U></TD></TR></TBODY></TABLE>
<DIV style="OVERFLOW-X: hidden; OVERFLOW-Y: auto; HEIGHT: 95px">Private&nbsp;Sub&nbsp;Connection1_ExecuteComplete(ByVal&nbsp;RecordsAffected&nbsp;As&nbsp;Long,&nbsp;ByVal&nbsp;pError&nbsp;As&nbsp;ADODB.Error,&nbsp;adStatus&nbsp;As&nbsp;ADODB.EventStatusEnum,&nbsp;ByVal&nbsp;pCommand&nbsp;As&nbsp;ADODB.Command,&nbsp;ByVal&nbsp;pRecordset&nbsp;As&nbsp;ADODB.Recordset,&nbsp;ByVal&nbsp;pConnection&nbsp;As&nbsp;ADODB.Connection)&nbsp;</DIV><BR>InfoMessage&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;一个Error对象被添加到ADODB.Connectio.Error集合之时<BR>
<TABLE border=0 cellSpacing=0 cellPadding=0 width="100%" align=center>
<TBODY>
<TR>
<TD>程序代码：</TD>
<TD align=right><U></U></TD></TR></TBODY></TABLE>
<DIV style="OVERFLOW-X: hidden; OVERFLOW-Y: auto; HEIGHT: 61px">Private&nbsp;Sub&nbsp;Connection1_InfoMessage(ByVal&nbsp;pError&nbsp;As&nbsp;ADODB.Error,&nbsp;adStatus&nbsp;As&nbsp;ADODB.EventStatusEnum,&nbsp;ByVal&nbsp;pConnection&nbsp;As&nbsp;ADODB.Connection)&nbsp;</DIV><BR>RollbackTransComplete&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RollbackTrans方法执行之后<BR>
<TABLE border=0 cellSpacing=0 cellPadding=0 width="100%" align=center>
<TBODY>
<TR>
<TD>程序代码：</TD>
<TD align=right></TD></TR></TBODY></TABLE>
<DIV style="OVERFLOW-X: hidden; OVERFLOW-Y: auto; HEIGHT: 61px">Private&nbsp;Sub&nbsp;Connection1_RollbackTransComplete(ByVal&nbsp;pError&nbsp;As&nbsp;ADODB.Error,&nbsp;adStatus&nbsp;As&nbsp;ADODB.EventStatusEnum,&nbsp;ByVal&nbsp;pConnection&nbsp;As&nbsp;ADODB.Connection)&nbsp;</DIV><BR>WillConnect&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;即将调用Connection.Open方法之时<BR>
<TABLE border=0 cellSpacing=0 cellPadding=0 width="100%" align=center>
<TBODY>
<TR>
<TD>程序代码：</TD>
<TD align=right>&nbsp;</TD></TR></TBODY></TABLE>
<DIV style="OVERFLOW-X: hidden; OVERFLOW-Y: auto; HEIGHT: 78px">Private&nbsp;Sub&nbsp;Connection1_WillConnect(ConnectionString&nbsp;As&nbsp;String,&nbsp;UserID&nbsp;As&nbsp;String,&nbsp;Password&nbsp;As&nbsp;String,&nbsp;Options&nbsp;As&nbsp;Long,&nbsp;adStatus&nbsp;As&nbsp;ADODB.EventStatusEnum,&nbsp;ByVal&nbsp;pConnection&nbsp;As&nbsp;ADODB.Connection)&nbsp;</DIV><BR>WillExecute&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;即将调用Connection.Execute或Command.Execute方法之时<BR>
<TABLE border=0 cellSpacing=0 cellPadding=0 width="100%" align=center>
<TBODY>
<TR>
<TD>程序代码：</TD>
<TD align=right></TD></TR></TBODY></TABLE>
<DIV style="OVERFLOW-X: hidden; OVERFLOW-Y: auto; HEIGHT: 112px">Private&nbsp;Sub&nbsp;Connection1_WillExecute(Source&nbsp;As&nbsp;String,&nbsp;CursorType&nbsp;As&nbsp;ADODB.CursorTypeEnum,&nbsp;LockType&nbsp;As&nbsp;ADODB.LockTypeEnum,&nbsp;Options&nbsp;As&nbsp;Long,&nbsp;adStatus&nbsp;As&nbsp;ADODB.EventStatusEnum,&nbsp;ByVal&nbsp;pCommand&nbsp;As&nbsp;ADODB.Command,&nbsp;ByVal&nbsp;pRecordset&nbsp;As&nbsp;ADODB.Recordset,&nbsp;ByVal&nbsp;pConnection&nbsp;As&nbsp;ADODB.Connection)&nbsp;</DIV><BR><BR>注：其中的adStatus参数所用到的常数的名称和含义详见adStatus所用的常数<BR><BR><STRONG>常数</STRONG><BR><BR>IsolationLevel&nbsp;常数<BR><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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;含义&nbsp;<BR>adXactCursorStability&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;只允许读其他事务已提交的改变（默认值）&nbsp;<BR>adXactBrowse&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;允许读其他事务未提交的改变&nbsp;<BR>adXactChaos&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;本事务不会覆盖其他位于更高隔离程度的事务所做的改变&nbsp;<BR>adXactIsolated&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;所有事务相互独立&nbsp;<BR>adXactReadCommitted&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;等同于adXactCursorStability&nbsp;<BR>adXactReadUncommitted&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;等同于adXactBrowse&nbsp;<BR>adXactRepeatableRead&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;禁止读其他事务的改变&nbsp;<BR>adXactSerializable&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;等同于adXactIsolated&nbsp;<BR>adXactUnspecified&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;不能确定提供者的事务隔离程度&nbsp;<BR><BR>Mode常数<BR><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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;含义&nbsp;<BR>adModeUnknown&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;未指定数据源的连接许可权（默认值）&nbsp;<BR>adModeRead&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;连接是只读的&nbsp;<BR>adModeReadWrite&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;连接是可读写的&nbsp;<BR>adModeShareDenyNone&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;不拒绝其他用户的读写访问(Jet&nbsp;OLE&nbsp;DB&nbsp;Provider的默认值)&nbsp;<BR>adModeShareDenyRead&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;拒绝其他用户打开到数据源的读连接&nbsp;<BR>adModeShareDenyWrite&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;拒绝其他用户打开到数据源的写连接&nbsp;<BR>adModeShareExclusive&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;以独占方式打开数据源&nbsp;<BR>adModeWrite&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;连接是只写的&nbsp;<BR><BR>State常数<BR><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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;含义&nbsp;<BR>adStateClosed&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connection(或其他对象)是关闭的(默认值)&nbsp;<BR>adStateConnecting&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;正在连接数据源的状态&nbsp;<BR>adStateExecuting&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connection或Command对象的Execute方法已被调用&nbsp;<BR>adStateFetching&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;返回行(row)到Recordset对象&nbsp;<BR>adStateOpen&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connection(或其他对象)是打开的(活动的)&nbsp;<BR><BR>Execute方法中lngOption参数用到的常数<BR><BR>Command类型常数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;含义&nbsp;<BR>adCmdUnknown&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Command类型未定（默认值），由数据提供者去判别Command语法&nbsp;<BR>adCmdFile&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;Command是和对象类型相应的文件名称&nbsp;<BR>adCmdStoredProc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Command是存储过程名称&nbsp;<BR>adCmdTable&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Command是能产生内部SELECT&nbsp;*&nbsp;FROM&nbsp;TableName查询的表名称&nbsp;<BR>adCmdTableDirect&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Command是能直接从表中获取行内容的表名称&nbsp;<BR>adCmdText&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Command是一条SQL语句&nbsp;<BR><BR>ADODB事件处理子过程参数adStatus所用的常数<BR><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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;含义&nbsp;<BR>adStatusCancel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;操作被用户取消&nbsp;<BR>adStatusCnatDeny&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;操作不能拒绝其他用户对数据源的访问&nbsp;<BR>adStatusErrorsOccurred&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;操作导致错误并已送到Errors集合中&nbsp;<BR>adStatusOK&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;<BR>adStatusUnWantedEvent&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;操作过程中一个未预料到的事件被激活<BR><BR><FONT color=#ff0000><STRONG>Command对象</STRONG></FONT><BR><BR>Command对象的主要目的是执行参数化的存储过程。其形式要么是临时准备(prepared），要么是持久的预编译（precompiled）过的SQL语句。如果想（存储）一个或多个查询以供在同一Connection上多次执行，Command对象也是很有用的。当想创建Recordset时，一种高效的方法是绕过Command对象而采用Recordset.Open方法。&nbsp;<BR><BR><STRONG>属性</STRONG><BR><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>ActiveConnection&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指针类型，指向Command所关联的Connection对象。对于现存的已打开连接，可使用Set&nbsp;cmmName.ActiveConnection=cnnName。另外，也可以不用相关Connection对象名称而使用有效的连接字符串去创建一个新的连接。默认值为Null。&nbsp;<BR>CommandText&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可读写String类型。为ActiveConnection指定一条SQL语句、表名、存储过程名或提供者能接受的任意字符串。CommandType属性的值决定了CommandText属性值的格式。默认值为空字符串：""&nbsp;<BR>CommandTimeout&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可读写Long类型，指定中止一个Command.Execute调用之前必须等待的时间。这时的值优先于Connection.ComandTimeout中的设定值。默认值为30秒。&nbsp;<BR>CommandType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可读写Long类型，指定数据提供者该如何解释CommandText属性值。CommandType等效于Connection.Execute方法中的可选参数lngOption。详见CommandType所用到的常数。默认值为adCmdUnkown.&nbsp;<BR>Name&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;可读写String类型，指定Command的名称。&nbsp;<BR>Prepared&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可读写Boolean类型，判断数据源是否把CommandText中的SQL语句编译为prepared&nbsp;statement（一种临时性存储过程）。prepared&nbsp;statement仅存活于Command的ActiveConnection生命周期中。许多客户／服务器RDBMS，包括SQL&nbsp;SERVER，都支持prepared&nbsp;statement。如果数据源不支持prepared&nbsp;statement,则把该属性设为True，将导致一个自陷错误。&nbsp;<BR>State&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;可读写Long类型，指定Commnad状态。见State常数。&nbsp;<BR><BR>注意：最好每次都为CommandType指定的一个合适的常数值，否则会降低系统运行的效率。<BR><BR><STRONG>方法</STRONG><BR><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;&nbsp;&nbsp;&nbsp;用途&nbsp;<BR>Createparameter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在执行该方法之前，必须首先声明一个ADODB.Parameter对象。调用语法为：<BR>
<TABLE border=0 cellSpacing=0 cellPadding=0 width="100%" align=center>
<TBODY>
<TR>
<TD>程序代码：</TD>
<TD align=right></TD></TR></TBODY></TABLE>
<DIV style="OVERFLOW-X: hidden; OVERFLOW-Y: auto; HEIGHT: 44px">cmmName.CreateParameter&nbsp;[strName[,lngType[,lngDirection[,lngSize[,varValue]]]]]&nbsp;</DIV><BR>Execute&nbsp;调用语法同Connection.Execute大致相同。&nbsp;<BR><BR>常数<BR><BR>State常数<BR><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;<BR>adStateClosed&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connection(或其他对象)是关闭的(默认值)&nbsp;<BR>adStateConnecting&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;正在连接数据源的状态&nbsp;<BR>adStateExecuting&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connection或Command对象的Execute方法已被调用&nbsp;<BR>adStateFetching&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;返回行(row)到Recordset对象&nbsp;<BR>adStateOpen&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connection(或其他对象)是打开的(活动的)&nbsp;<BR><BR>CommandType所用到的常数<BR><BR>Command类型常数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;含义&nbsp;<BR>adCmdUnknown&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Command类型未定（默认值），由数据提供者去判别Command语法&nbsp;<BR>adCmdFile&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Command是和对象类型相应的文件名称&nbsp;<BR>adCmdStoredProc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Command是存储过程名称&nbsp;<BR>adCmdTable&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Command是能产生内部SELECT&nbsp;*&nbsp;FROM&nbsp;TableName查询的表名称&nbsp;<BR>adCmdTableDirect&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Command是能直接从表中获取行内容的表名称&nbsp;<BR>adCmdText&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Command是一条SQL语句<BR><BR><FONT color=#ff0000><STRONG>Recordset对象</STRONG></FONT><BR><BR><STRONG>属性</STRONG><BR><BR>属性名称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;数据类型和用途&nbsp;<BR>AbsolutePage&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可读写Long类型，要么是设置或返回当前记录所处的页面序号，要么是一个PositionEnum常数，见AbsolutePage用到的常数。在获取或设置AbsolutePage的值之前，必须先设定PageSize的值。AbsolutePage是从1开始计数的。如果当前记录位于第一页时，AbsolutePage的返回值为1，对AbsolutePage设置将使当前记录指针指向指定页的第一条记录。&nbsp;<BR>AbsolutePosition*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可读写的Long类型（从1开始计数），设置或返回当前记录年处的位置。AbsolutePosition的最大取值是RecordCount属性的值。&nbsp;<BR>ActiveCommand&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可读写的String类型，Recordset所关联的先前打开的Command对象名称&nbsp;<BR>ActiveConnection&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指针类型，指向Recordset所关联的先前打开的Connection对象，或指向一条完整有效的ConnectionString串值。<BR>BOF*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;只读Boolean类型，若为True，表明记录指针已位于Recordset第一条记录之前，并且没有了当前记录&nbsp;<BR>Bookmark*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可读写variant类型，返回对特定记录的引用或使用一个Bookmark值使记录指针指向特定记录&nbsp;<BR>CacheSize*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可读写Long类型，指定本地Cache中所存的记录条数，最小(默认值)为1。若增加了CacheSize的值，则在流动Recordset以获取更多记录时，能减少与服务器的通信次数。&nbsp;<BR>CursorLocation&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可读写Long类型，指定可流动游标的位置，即CursorType是位于客户端还是位于服务器端，见CursorLocation用到的常数。默认值是使用OLE&nbsp;DB数据源提供的游标。&nbsp;<BR>CusrsorType*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可读写Long类型，指定Recordset游标的类型，见CursorType用到的常数，默认值是forward-on<WBR>ly游标&nbsp;<BR>DataMember&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指针类型，指向关联的DataEnvironment.Command对象&nbsp;<BR>DataSource&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指针类型，指向关联的DataEnvironment.Connection对象&nbsp;<BR>EditMode*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;只读Long类型，返回Recordset的编辑状态，见EditMode用到的常数&nbsp;<BR>EOF*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;只读Boolean类型，若为True，表明记录指针已超出Recordset的最后一条记录，并且没有了当前记录。&nbsp;<BR>Filter*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可读写variant类型，要么是一条件表达式（一条有效的SQL&nbsp;WHERE子句但又不出现保留字WHERE），要么是指向特定记录的Bookmark数组，要么是一个Filter常数，详见Filter用到的常数。&nbsp;<BR>LockType*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可读写Long类型，指定打开Recordset所使用的记录锁定方法。默认值是只读，对应于forward-on<WBR>ly游标的只读特性。见LockType属性用到的常数。&nbsp;<BR>MarshalOptions&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可读写Long类型，指定客户端改动后，应返回哪个记录集合，此属性仅适合于不常见的ADOR.Recordset对象，此对象是RDS.ADOR.Recordset对象成员之一。&nbsp;<BR>MaxRecords*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可读写Long类型，指定SELECT查询或存储过程返回的最大记录条数，默认值为0，即全部返回&nbsp;<BR>PageCount&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;只读Long类型，返回Recordset所有的页数，必须设定了PageSize的值，PageCount的返回值才是真正有意义的。如果Recordset不支持PageCount属性，则返回值为-1&nbsp;<BR>PageSize&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可读写Long类型，设置或返回一个逻辑页所包含的记录条数。使用逻辑页可把大的Recordset分解为多个易处理的小部分。通常的做法是把PageSize设为DataGrid、MsFlexGrid或层次型的FlexGrid控件所能显示的记录条数。PageSize和锁定Jet(2k)或锁定SQL&nbsp;Server(6.5版及更早版本,2k;7.0版，8k)数据库时用到的表页面大小无关&nbsp;<BR>PersistFormat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可读写Long类型，设置或返回由调用Save方法所创建的Recordset文件的格式。当前仅有一个值adPersistADTG(默认格式：Advanced&nbsp;Da<WBR>ta&nbsp;TableGram)&nbsp;<BR>RecordCount*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;只读Long类型，如果Recordset支持近似定位或支持书签，则返回带可流动游标的Recordset所含有的记录数；如果不支持，必须使用MoveLast方法以取得确实覆盖了所有记录的准确的RecordCount数值。如果forward-on<WBR>ly类型Recordset有一条或多条记录，Recordset返回-1(True),任何类型的空的Recordset都将返回0(False)&nbsp;<BR>Sort*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可读写String类型，包含一条不含保留字ORDER&nbsp;BY的SQL&nbsp;ORDERY&nbsp;BY子句，用以指定Recordset的排序方式&nbsp;<BR>Source*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可读写String类型，可以是SQL语句、表名、存储过程名或相关Command对象名。如果提供了Command对象名，则Source将返回Command.CommandText的值。利用Open方法的参数lngOptions可以指定提供给Source值的类型&nbsp;<BR>State&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可读写Long类型，为对象状态常数之一。见State常数&nbsp;<BR>Status&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;只读Long类型，表明对Recordset进行批处理或其他多记录(bulk)操作后的状态。见Status属性用到的常数&nbsp;<BR><BR>注意：上表所列属性是ADODB.Recordset对象的标准属性，即那些被关系数据库的大多数通用OLE&nbsp;DB数据提供者所支持的属性。带星号的属性表示它与DAO.Recordset或rdoResultset对象的相应属性完全一样或很接近。&nbsp;<BR><BR><STRONG>方法</STRONG><BR><BR>方法&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;用途&nbsp;<BR>AddNew*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;向可更新的Recordset添加一条新记录。调用语法为rstName.AddNew[{varField|avarFields},{varValue|avarValuese}],其中varField是单个字段名，avarFields是字段名数组。varValue是单个字段值，avarValue是由avarFields指定字段的值所组成的数组。调用Update方法则把新记录加到数据库的表中。如果向主关键字不是第一个字段的Recordset中添加记录，则必须在AddNew方法中指定主关键字的名称和值&nbsp;<BR>Cancel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;取消异步查询的执行，中止存储过程或复合SQL语句创建多个Recordset，调用语法为rstName.Cancel&nbsp;<BR>CancelBatch*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;取消LockEdit值为BatchOptimistic的Recordset的即将生效的批量更新操作，调用语法为：rstName.CancelBatch&nbsp;[lngAffectRecords],可选参数lngAffectRecords的取值见lngAffectRecords用到的常数&nbsp;<BR>Clone&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;复制一个带有独立记录指针的Recordset对象，调用语法为：Set&nbsp;rstDupe=rstName.Clone()&nbsp;<BR>Close&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;关闭Recordset对象，以后可以重新设Recordset的属性并使用Open方法来再度访问Recordset&nbsp;。调用语法为:rstName.Close&nbsp;<BR>Delete*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果Recordset的LockEdit属性值未设为adLockBatchOptimistic，立刻从Recordset和相应表中删除当前记录&nbsp;<BR>Find&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;寻找满足指定条件的记录。调用语法为：rstName.Find&nbsp;strCriteria&nbsp;[,lngSkipRecords,&nbsp;lngSearchDirection&nbsp;[,lngStart]],其中strCriteria是不含WHERE关键字的SQL&nbsp;WHERE子句，可选参数lngSkipRecords是应用Find前所跳过的记录数目，lngDirection指定查找方向(adSearchForward,和adSearchBackward,其中adSearchForward是默认值),可选参数lngStart指定了从哪儿开始查找，其值要么是一个Bookmark值，要么是Bookmark常数，见varStart参数用到的Bookmark常数。&nbsp;<BR>GetRows&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;返回一个二维variant数组（行、列），调用语法为avarname=rstName.GetRows(lngRows&nbsp;[,varStart[,{strFieldName|lngFieldIndex|avarFieldNames|avarFieldIndexes}]],其中lngRows是返回记录行数，varStart指定从哪儿开始查找，其值要么是一个Bookmark值，要么是Bookmark常数，见varStart参数用到的Bookmark常数。第三个参数可以是单个列（字段）的名称或索引，也可以是多个列名称或索引组成的variant数组。如果不指定第三个参数，GetRows返回Recordset中所有列。&nbsp;<BR>GetString&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;默认情况下，返回指定数目记录的String串值，记录间由返回代码分隔。记录内由tab分隔。调用语法为：&nbsp;strClip=rstname.GetString(lngRows,[,&nbsp;strCloumnDelimiter[,strRowDelimiter,[strNullExpr]]])。其中lngRows为返回记录行数，strColumnDelimiter为可选的列分隔符(vbTab是默认值),strRowDelimiter是可选的行分隔符(vbCr是默认值)，strNullExpr是可选参数，用于碰到Null值时的替代值（默认值是空字符串）。GetString的主要用途是通过把控件的Clip属性设为strClip来处理MSFlexGrid或MSHFlexGrid控件&nbsp;<BR>Move*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;从当前记录移动记录指针。调用语法为：rstName.Move&nbsp;lngNumRecords&nbsp;[,&nbsp;varStart],其中lngNumRecords是要跳过的记录数，可选选参数varStart指定从哪开始移动。其值要么是一个Bookmark值，要么是Bookmark常数，见varStart参数用到的Bookmark常数。&nbsp;<BR>MoveFirst*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;移动记录指针到第一条记录，调用语法为：rstName.MoveFirst&nbsp;<BR>MoveLast*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;移动记录指针到最后一条记录，调用语法为：rstName.MoveLast&nbsp;<BR>MoveNext&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;移动记录指针到下一条记录，调用语法为：rstName.MoveNext。它是能用于forward-on<WBR>ly&nbsp;Recordset的唯一Move方法&nbsp;<BR>MovePrevious*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;移动记录指针到前一条记录，调用语法为：rstName.MovePrevious&nbsp;<BR>NextRecordset&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;返回另外的Recordset,它通常由能产生多个Recordset的复合SQL语句(如SELECT&nbsp;*&nbsp;FROM&nbsp;orders;SELECT&nbsp;*&nbsp;FROM&nbsp;customers)或存储过程来创建。调用语法为Next=rstName.NextRecordset&nbsp;[(lngRecordsAffected)],其中可选参数lngRecordsAffected指定返回到rstNext中去的记录数目。如果已不存在Recordset，rstNext被设为Nothing&nbsp;<BR>Open&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在一个活动Command或Connection对象上打开一个Recordset，调用语法为：rstName.Open&nbsp;[varSource&nbsp;[,&nbsp;varActiveConnection&nbsp;[,&nbsp;lngCursorType&nbsp;[,&nbsp;lngLockType&nbsp;[,&nbsp;lngOptions]]]]]。这些参数都是可选的，&nbsp;<BR>Requery&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;重新从表中获取Recordset的内容，等效于Close后再Open。它是一个资源集中型操作。语法为：rstName.Requery&nbsp;<BR>Resync*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;重新从表中获取部分Recordset内容。调用语法为rstName.Resync&nbsp;[lngAffectRecords],其中lngAffectRecords的取值见lngAffectRecords用到的常数。如果把该参数设为adAffectCurrent或adAffectGroup，则比adAffectAll(默认值)所耗的资源要少。&nbsp;<BR>Save&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;创建包含Recordset永久性拷贝的文件。调用语法为rstName.Save&nbsp;strFileName。其中strFileName为路径和文件名。通常用.rst作为文件的扩展名。&nbsp;<BR>Supports&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果数据提供者支持指定的游标相关的方法，则返回True，否则返回为False。调用语法为Supported=rstname.Supports&nbsp;(lngCursorOptions).关于lngCursorOptions,见Supports方法用到的常数。&nbsp;<BR>Update*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;使对Recordset的修改对底层数据源中的表生效。对于批量操作，Update方法只使修改对本地(Cached)Recordset生效。调用语法为rstName.Update&nbsp;<BR>UpdateBatch*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;合对指量类型的Recordset(LockType属性值为adBatchOptimistic,CursorType属性值为adOpenKeyset或adOpenStatic)所做的修改对底层数据源中的表生效。调用语法为rstName.UpdateBatch&nbsp;[lngAffectRecords],其中lngAffectRecords的取值见lngAffectrecords用到的常数。&nbsp;<BR><BR>注：ADODB.Recordset对象不支持Edit方法。为了改变ADODB.Recordset对象当前记录的一个或多个字段的值，可以先使用rstName.Fields(n).Value=varValue把相应字段的值改为所需要的值，而后执行rstName.Update即可。<BR><BR><STRONG>事件</STRONG><BR><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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;触发时机&nbsp;<BR>EndOfRecordset&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;记录指针试图移到最后一条记录之外时&nbsp;<BR>FieldchangeComplete&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;字段值的改变完成之后&nbsp;<BR>MoveComplete&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Move或Move...方法执行之后&nbsp;<BR>RecordsChangeComplete&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;对单个记录编辑完成以后&nbsp;<BR>RecordsetChangeComplete&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;缓存中的改变对底层表生效之后&nbsp;<BR>WillChangField&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;<BR>WillChangeRecord&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;对单个记录改变之前&nbsp;<BR>WillChangeRecordset&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;缓存中的改变对底层表生效之前&nbsp;<BR>WillMove&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Move或Move...方法执行之前&nbsp;<BR><BR>注：事件处理模块的函数头几乎都用到了adReason参数。该参数的取值见adReason参数用到的常数。<BR><BR><STRONG>常数</STRONG><BR><BR>AbsolutePage属性用到的常数<BR><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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;含义&nbsp;<BR>adPosUnknown&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;数据提供者不支持页面，Recordset为空，或数据提供者不能确定页码。&nbsp;<BR>adPosBOF&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;记录指针定位于文件开头（BOF属性值为True）&nbsp;<BR>adPosEOF&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;记录指针定位于文件结尾（EOF属性值为True）&nbsp;<BR><BR>CursorLocation属性用到的常数<BR><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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;含义&nbsp;<BR>adUseClient&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;使用客户端游标库提供的游标。ADODB.Recordset要求客户端游标&nbsp;<BR>adUseServer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;使用数据源提供的游标，通常（但非绝对）位于服务器上（默认值）&nbsp;<BR><BR>CursorType属性用到的常数<BR><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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;含义&nbsp;<BR>adOpenForwardonly&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;提供单向移动游标和只读Recordset（默认值）&nbsp;<BR>adOpenDynamic&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;提供可滚动游标，可显示其他用户对Recordset所做的改动（包括添加新记录）&nbsp;<BR>adOpenKeyset&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;提供可滚动游标，只隐藏其他用户所做的改动，类似于dynaset类型的DAO.Recordset&nbsp;<BR>adOpenStatic&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;提供一个位于Recordset静态拷贝上的可滚动游标，类似于snapshot类型的DAO.Recordset，但多了可更新特性&nbsp;<BR><BR>EditMode属性用到的常数<BR><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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;含义&nbsp;<BR>adEditNone&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;<BR>adEditAdd&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;临时添加一条记录，但尚未存入数据库的表中&nbsp;<BR>adEditInProgress&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;当前记录中的数据已经改动，但尚未存入数据库的表中&nbsp;<BR><BR>Filter属性用到的常数<BR><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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;含义&nbsp;<BR>adFilterNone&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;除去已有的过滤器，显示Recordset中的所有记录（等效于把Filter属性置为空串，默认值）&nbsp;<BR>adfilterAffectedRecords&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;只显示上次CancelBatch、Delete、Resync或UpdateBatch方法执行后所影响的记录&nbsp;<BR>adFilterFetchedRecords&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;只当前Cache中的记录，记录条数由CacheSize来确定&nbsp;<BR>adFilterPendingRecords&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;只显示已改动但尚未被数据源处理的记录（仅适用于批量更新模式）&nbsp;<BR><BR>LockType属性用到的常数<BR><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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;含义&nbsp;<BR>adLockRecordOnly&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指定只读访问（默认值）&nbsp;<BR>adLockBatchOptimistic&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;使用批量更新模式而不是默认的立即更新模式&nbsp;<BR>adLockOptimistic&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;使用乐观锁（仅在更新过程中才锁定记录或页面）&nbsp;<BR>adLockPessimistic&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;使用悲观锁（编辑或更新整个过程中均锁定记录或页面）&nbsp;<BR><BR>State常数<BR><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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;含义&nbsp;<BR>adStateClosed&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connection(或其他对象)是关闭的(默认值)&nbsp;<BR>adStateConnecting&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;正在连接数据源的状态&nbsp;<BR>adStateExecuting&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connection或Command对象的Execute方法已被调用&nbsp;<BR>adStateFetching&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;返回行(row)到Recordset对象&nbsp;<BR>adStateOpen&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connection(或其他对象)是打开的(活动的)&nbsp;<BR><BR>Status属性用到的常数(仅适用于Batch或Bulk&nbsp;Recordset操作)<BR><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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;含义&nbsp;<BR>adRecOK&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;成功更新&nbsp;<BR>adRecNew&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;&nbsp;&nbsp;&nbsp;成功添加&nbsp;<BR>adRecModified&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;<BR>adRecDeleted&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;<BR>adRecUnmodified&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;无改动&nbsp;<BR>adRecInvalid&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;&nbsp;未保存：Bookmark属性无效&nbsp;<BR>adRecMultipleChanges&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;未保存：保存会影响其他记录&nbsp;<BR>adRecPendingChanges&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;未保存：记录引用了一个等待插入操作&nbsp;<BR>adRecCanceled&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;<BR>adRecCantRelease&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;未保存：现有记录值阻止了保存&nbsp;<BR>adRecConcurrencyViolation&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;未保存：乐观并发锁发生了问题&nbsp;<BR>adRecIntegrityViolation&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;未保存：操作会影响一致性&nbsp;<BR>adRecMaxChangesExceeded&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;未保存：存在太多的等待改动&nbsp;<BR>adRecObjectOpen&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;未保存：打开存贮对象发生冲突&nbsp;<BR>adRecOutofMemory&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;未保存：内存不足&nbsp;<BR>adRecPermissionDenied&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;未保存：用户权限不够&nbsp;<BR>adRecSchemaViolation&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;未保存：记录的结构不符合数据库中的定义&nbsp;<BR>adRecDBDeleted&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;未保存或删除：记录已被删除&nbsp;<BR><BR>lngAffectRecords参数用到的常数<BR><BR>Command类型常数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;含义&nbsp;<BR>adAffectAll&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;包括Recordset对象的所有记录，那些被Filter属性过滤隐藏的记录也计算在内（默认值）&nbsp;<BR>adAffectCurrent&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;只包括当前记录&nbsp;<BR>adAffectGroup&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;只包括那些符合当前Filter条件的记录&nbsp;<BR><BR>varStart参数用到的Bookmark常数<BR><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;&nbsp;&nbsp;含义&nbsp;<BR>adBookmarkCurrent&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;从当前记录开始（默认值）&nbsp;<BR>adBookmarkFirst&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;从第一条记录开始&nbsp;<BR>adBookmarkLast&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;从最后一条记录开始&nbsp;<BR><BR>Supports方法用到的常数<BR><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;&nbsp;&nbsp;&nbsp;含义&nbsp;<BR>adAddNew&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;调用AddNew方法&nbsp;<BR>adApproxPosition&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;设置和得到Absoluteposition和AbsolutePage属性值&nbsp;<BR>adBookmark&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;设置和得到Bookmark属性值&nbsp;<BR>adDelete&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;调用Delete方法&nbsp;<BR>adHoldRecords&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;获取另外的记录或改变获取记录指针的位置，但不提交未确定的改变&nbsp;<BR>adMovePrevious&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;调用GetRows,Move,MoveFirst和MovePrevious方法（表明是一个双向可滚动游标）&nbsp;<BR>adResync&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;调用Resync方法&nbsp;<BR>adUpdate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;调用Update方法&nbsp;<BR>adUpdateBatch&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;调用UpdateBatch和CancelBatch方法&nbsp;<BR><BR>adReason参数用到的常数<BR><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;&nbsp;&nbsp;含义&nbsp;<BR>AdRsnAddNew&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;调用了AddNew方法&nbsp;<BR>AdRsnClose&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;调用了Close方法&nbsp;<BR>AdRsnDelete&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;调用了Delete方法&nbsp;<BR>AdRsnFirstChange&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;第一次对记录字段值做了修改&nbsp;<BR>AdRsnMove&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;调用了Move方法&nbsp;<BR>AdRsnMoveFirst&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;调用了MoveFirst方法&nbsp;<BR>AdRsnMoveLast&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;调用了MoveLast方法&nbsp;<BR>AdRsnMovePrevious&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;调用了MovePrevious方法&nbsp;<BR>AdRsnRequery&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;调用了Requery方法&nbsp;<BR>AdRsnResync&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;调用了Resync方法&nbsp;<BR>AdRsnUndoAddNew&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AddNew操作被用户取消&nbsp;<BR>AdRsnUndoDelete&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Delete操作被用户取消&nbsp;<BR>AdRsnUndoUpdate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Update操作被用户取消&nbsp;<BR>AdRsnUpdate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;调用了Update方法 </div>]]></description>
	    <author><![CDATA[高级菜鸟]]></author>
	    <comments>http://wuxiong8665.blog.163.com/blog/static/93512200910584856907</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://wuxiong8665.blog.163.com/blog/static/93512200910584856907</guid>
    <pubDate>Thu, 5 Nov 2009 20:48:56 +0800</pubDate>
    <dcterms:modified>2009-11-05T20:52:22+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[网站logo与普通logo有什么不同，如何设计网站logo？]]></title>	
    <link>http://wuxiong8665.blog.163.com/blog/static/935122009104112511947</link>
    <description><![CDATA[<div><P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em"><STRONG>logo并非越复杂越漂亮越好，特别是一些品牌，要考虑到能无限放大，单色印刷要有效等情况，应该做成简单有创意的矢量图（网站logo在这此方面要求可能不那么严格，因为一般不需要放大、不经常印刷）</STRONG></P>
<P style="TEXT-INDENT: 2em"><STRONG>简单的logo并不一定是设计得差，它可能简约而内涵丰富，并且能给人留下深刻的印象，如 IBM 的标志。</STRONG></P>
<P style="TEXT-INDENT: 2em"><EM>以下是引自设计中国的内容</EM></P>
<P style="TEXT-INDENT: 2em"><A href="http://www.chinaddu.com/art/theory/2009-09/1251789704d19541.html">http://www.chinaddu.com/art/theory/2009-09/1251789704d19541.html</A></P>
<P style="TEXT-INDENT: 2em">一个有效的logo可以跨越各种各样的媒体和应用。因为这个理由，logo应该被设计成简单矢量格式的来确保可以扩大到任何尺寸。<BR><BR>问你自己，你的logo在打印的时候是否仍然有效<BR><BR>●单色打印？<BR><BR>●反色打印（例如：浅色logo，深色背景）<BR><BR>●邮票尺寸大小的打印<BR><BR>●广告牌那么大的打印</P>
<P style="TEXT-INDENT: 2em">&nbsp;</P>
<P style="TEXT-INDENT: 2em"><STRONG>网站logo如何设计呢？请看下面的引用文章。</STRONG><BR></P>
<P style="TEXT-INDENT: 2em">下面就网站Logo的设计原则、设计手法、设计技巧、设计工具等谈谈个人的看法，另外还对几个经典站点的logo进行了简单分析，希望对设计网站的朋友能有所帮助。</P>
<P style="TEXT-INDENT: 2em">　　Logo，译为标志、厂标、标志图等，顾名思义，站点的logo，就是站点的标志图案，它一般会出现在站点的每一个页面上，是网站给人的第一印象。logo的作用很多，最重要的就是表达网站的理念、便于人们识别，广泛用于站点的连接、宣传等，有些类似企业的商标。因而，logo设计追求的是：以简洁的符号化的视觉艺术形象把网站的形象和理念长留于人们心中。</P>
<P style="TEXT-INDENT: 2em">　　 首先，谈谈logo的设计原则，与其他标志图案设计原则一样：遵循人们的认识规律，突出主题、引人注目。所谓认识规律，比如从上到下，从左到右，从小到大，从远到近的视觉习惯；比如由前因推理到后果，有源头才有流水的思维习惯；还有人们的审美能力和审美心理等。要做到突出主题，就要求设计者非常了解站点的定位和发展方向，能够在方寸之间概括出站点的理念。引人注目，是指视觉效果要强烈——容易识别、辨认和记忆。</P>
<P style="TEXT-INDENT: 2em">　　logo的设计手法主要有以下几种：</P>
<P style="TEXT-INDENT: 2em">　　①表象性手法；</P>
<P style="TEXT-INDENT: 2em">　　②表征性手法；</P>
<P style="TEXT-INDENT: 2em">　　③借喻性手法；</P>
<P style="TEXT-INDENT: 2em">　　④标识性手法；</P>
<P style="TEXT-INDENT: 2em">　　⑤卡通化手法；</P>
<P style="TEXT-INDENT: 2em">　　⑥几何形构成手法；</P>
<P style="TEXT-INDENT: 2em">　　⑦渐变推移手法。</P>
<P style="TEXT-INDENT: 2em">　　其中标识性手法、卡通化手法和几何形构成法是最常用的网站logo设计手法。标识性手法是用标志、文字、字头字母的表音符号来设计logo；卡通化手法通过夸张、幽默的卡通图象来设计logo；几何形构成法是用点、线、面、方、圆、多边形或三维空间等几何图形来设计logo。当然，设计时往往是以一种手法为主，几种手法交错使用。</P>
<P style="TEXT-INDENT: 2em">　　logo的设计技巧很多，概括说来要注意以下几点：</P>
<P style="TEXT-INDENT: 2em">　　①保持视觉平衡、讲究线条的流畅，使整体形状美观；</P>
<P style="TEXT-INDENT: 2em">　　②用反差、对比或边框等强调主题；</P>
<P style="TEXT-INDENT: 2em">　　③选择恰当的字体；</P>
<P style="TEXT-INDENT: 2em">　　④注意留白，给人想象空间；</P>
<P style="TEXT-INDENT: 2em">　　⑤运用色彩。因为人们对色彩的反映比对形状的反映更为敏锐和直接，更能激发情感，</P>
<P style="TEXT-INDENT: 2em">　　这里我就着重谈一下logo设计中的的色彩运用技巧。</P>
<P style="TEXT-INDENT: 2em">　　①基色要相对稳定</P>
<P style="TEXT-INDENT: 2em">　　②强调色彩的形式感：比如重色块、线条的组合</P>
<P style="TEXT-INDENT: 2em">　　③强调色彩的记忆感和感情规律：比如黄色代表富丽、明快；橙红给人温暖、热烈感；蓝色、紫色、绿色使人凉爽、沉静；茶色、熟褐色令人联想到浓郁的香味（看过快餐店的广告吗？)</P>
<P style="TEXT-INDENT: 2em">　　④合理使用色彩的对比关系，色彩的对比能产生强烈的视觉效果，而色彩的调和则构成空间层次。</P>
<P style="TEXT-INDENT: 2em">　　⑤重视色彩的注目性：下面附表分别列出了注目程度高和注目程度低的配色情况，设计时可以参照使用。</P>
<P style="TEXT-INDENT: 2em">　　表-1 注目程度高的配色：</P>
<P style="TEXT-INDENT: 2em">　　顺序 　１ ２ ３ ４ ５ ６ ７ ８ ９ 10</P>
<P style="TEXT-INDENT: 2em">　　底色 　黑 黄 黑 紫 紫 蓝 绿 白 黄 黄 </P>
<P style="TEXT-INDENT: 2em">　　图形色 黄 黑 白 黄 白 白 白 黑 绿 蓝</P>
<P style="TEXT-INDENT: 2em">　　表-2 注目程度低的配色：</P>
<P style="TEXT-INDENT: 2em">　　顺序　 １ ２ ３ ４ ５ ６ ７ ８ ９ 10</P>
<P style="TEXT-INDENT: 2em">　　底色 　黄 白 红 红 黑 紫 灰 红 绿 黑 </P>
<P style="TEXT-INDENT: 2em">　　图形色 白 黄 绿 蓝 紫 黑 黑 紫 红 蓝 </P>
<P style="TEXT-INDENT: 2em">　　logo的设计工具，凡是图象设计和处理方面的软件几乎都可以用来设计logo，这里推荐几款经典的设计工具：</P>
<P style="TEXT-INDENT: 2em">　　①平面静态图：PhotoShop 5.0/CorelDraw 8/PaintShop Pro6.0；</P>
<P style="TEXT-INDENT: 2em">　　②Gif动画图：Ulead GIF Animator 2.0/Photo Animator 1.0；</P>
<P style="TEXT-INDENT: 2em">　　③Flash动画：Flash 4.0</P>
<P style="TEXT-INDENT: 2em">　　</P>
<P style="TEXT-INDENT: 2em">　　最后，设计logo时还要注意以下几个问题。</P>
<P style="TEXT-INDENT: 2em">　　一是：外观尺寸和基本色调要根据站点页面的整体版面设计来确定，而且要考虑到在其他印刷、制作过程中进行放缩等处理时的效果变化，以便logo能在各种媒体上保持相对稳定。</P>
<P style="TEXT-INDENT: 2em">　　二是：重视简单的法则——简单容易被接收，简单给人们想象，简单提高了效率，简单就是美。</P>
<P style="TEXT-INDENT: 2em">　　三是：生活是一切艺术的源泉，热爱生活并从中发现创作的切入点。</P>
<P style="TEXT-INDENT: 2em">　　理论了半天，好了，我们现在就上网抓几个大家熟悉的logo来例证一下：</P>
<P style="TEXT-INDENT: 2em">　　①：新浪的logo底色是白，文字sina和新浪网是黑色，其中i字母上的点用了表象性手法处理成一只眼睛，而这又使整个字母i象一个小火炬，这样，即向人们传达了“世界在你眼中”的理念，激发人们对网络世界的好奇，又使人们容易记住新浪网的域名。</P>
<P style="TEXT-INDENT: 2em">　　②：搜狐的logo比较特别，主要有两部分组成，一是文字，中英文名称，字体选择较古典；一是小狐狸图，蛮机灵狡猾的样子。搜狐网站随各个页面的色调不同而放置不同色彩的logo，但logo的基本内容不变。当然，你不会不知道搜狐的理念：出门找地图，上网找搜狐。但愿那只机灵的狐狸能帮你走出网络丛林。</P>
<P style="TEXT-INDENT: 2em">　　③：Yahoo的logo（中文站）很简单：英中文站名，红字白底。英文Yahoo字母间的排列和组合很讲究动态效果，加上Yahoo这个词的音感强，使人一见就仿佛要生惊讶——而不禁自问：Do you Yahoo?</P>
<P style="TEXT-INDENT: 2em">　　④：网易的logo使用了三色：红（网易）、黑（NETEAS</A>)、白（底色）。网易两字用了篆书，体现了古典意味，也许在暗示网易在中文网络的元老地位吧。但是，如果没有从个人主页到虚拟社区，从新闻报道到专题频道等丰富方便的服务，光是从logo上，你是难于相信：轻松上网，易如反掌。</P>
<P style="TEXT-INDENT: 2em">　　这里就举这几个例子，当然，在网络海洋中，很多网站，特别是一些个人网站，其logo的设计都很值得我们去学习的。</P>
<P style="TEXT-INDENT: 2em">
<TABLE border=0 cellSpacing=5 cellPadding=1 width=700>
<TBODY>
<TR>
<TD></TD></TR></TBODY></TABLE></P></div>]]></description>
	    <author><![CDATA[高级菜鸟]]></author>
	    <comments>http://wuxiong8665.blog.163.com/blog/static/935122009104112511947</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://wuxiong8665.blog.163.com/blog/static/935122009104112511947</guid>
    <pubDate>Wed, 4 Nov 2009 23:25:11 +0800</pubDate>
    <dcterms:modified>2009-11-04T23:25:11+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[瑞星云安全－防网站被挂马]]></title>	
    <link>http://wuxiong8665.blog.163.com/blog/static/935122009102105434370</link>
    <description><![CDATA[<div><P>瑞星云安全网站联盟是由国内著名杀毒软件厂商——瑞星推出的针对网站的免费木马监测服务，可以实施监测你的网站状态，如发现被挂木马会第一时间通过Email通知你，很实用，类似360挂马监测中心。瑞星云安全网站联盟无需注册也可在线扫描你的网站是否被挂马，注册为会员并在你的网站上安装监控代码后即可实时对你的网站监测，还提供优先扫描设置、木马监测报告、挂马趋势报告、恶意网站TOP10等功能。</P>
<P>网址：<A href="http://union.rising.com.cn/">http://union.rising.com.cn</A></P></div>]]></description>
	    <author><![CDATA[高级菜鸟]]></author>
	    <comments>http://wuxiong8665.blog.163.com/blog/static/935122009102105434370</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://wuxiong8665.blog.163.com/blog/static/935122009102105434370</guid>
    <pubDate>Mon, 2 Nov 2009 22:54:34 +0800</pubDate>
    <dcterms:modified>2009-11-02T23:18:03+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[360挂马监测－防网站被挂马]]></title>	
    <link>http://wuxiong8665.blog.163.com/blog/static/935122009102105257198</link>
    <description><![CDATA[<div><P>360挂马监测中心是由360安全卫士推出的另类网站监测服务，不是监测你的网站能不能访问、服务器是否出现故障，而是监测你的网站是否有安全漏洞而被挂了木马。360安全中心面向所有个人网站、商业网站、政府网站，免费提供实时挂马监测服务，如果发现网站被挂马会在第一时间通过email通知您。很实用的站长工具，推荐站长们使用360推出的免费挂马监测服务。</P>
<P>网址：<A href="http://jc.360.cn/">http://jc.360.cn</A></P>
<P>网站被挂马，会严重伤害您的忠实用户！<BR>网站被挂马，搜索引擎和安全公司会将其列入黑名单！<BR>网站被挂马，管理员并不能立即知晓，等木马借助站点肆意传播时，灾难已经发生！ </P>
<P>&nbsp;</P></div>]]></description>
	    <author><![CDATA[高级菜鸟]]></author>
	    <comments>http://wuxiong8665.blog.163.com/blog/static/935122009102105257198</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://wuxiong8665.blog.163.com/blog/static/935122009102105257198</guid>
    <pubDate>Mon, 2 Nov 2009 22:52:57 +0800</pubDate>
    <dcterms:modified>2009-11-02T22:52:57+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[“小人”难防，“德高望众者”更是防不胜防－议联想网盘]]></title>	
    <link>http://wuxiong8665.blog.163.com/blog/static/93512200992803555458</link>
    <description><![CDATA[<div><P><STRONG>互联网提供给了我们无数免费的基础服务，确实值得感谢一番！企业要生存，广告、收费也在情理之中，但说好了免费的，结果只是个吸引用户、人气的幌子就特让人生气，如果是你一向不怀疑的德高望众的名企则更是让人无语至极！珍爱生命，提防德高望众之流！</STRONG></P>
<P>
</P><HR>

<P></P>
<P><FONT color=#ff0000>联想可能真的没赚我们的钱，要不然怎么会穷得守不住承诺呢？</FONT></P>
<P><STRONG><FONT color=#ff0000>联想</FONT>－（联想的东西你）<FONT color=#ff0000>想都不要想</FONT></STRONG></P>
<P><FONT color=#ff0000>网友对联想网盘的议论：</FONT></P>
<P><FONT color=#ff0000>联想官方论坛：<A href="http://www.lenovodata.com/bbs/viewthread.php?tid=6341&amp;extra=&amp;page=1">http://www.lenovodata.com/bbs/viewthread.php?tid=6341&amp;extra=&amp;page=1</A></FONT></P>
<P><FONT color=#ff0000></FONT>&nbsp;<A href="http://www.tianya.cn/publicforum/content/it/1/531550.shtml">http://www.tianya.cn/publicforum/content/it/1/531550.shtml</A></P>
<P>
</P><HR>

<P></P>
<P>&nbsp;</P>
<P><STRONG>“小混混”（小人、小骗子、小企业）比比皆是，人们早有提防的心理</STRONG></P>
<P><STRONG>而一些“德高望众者”（名人、名企），倍受人们的信赖，大家对他们的只有信任而没有戒备。</STRONG></P>
<P><STRONG></STRONG>&nbsp;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 正常人在网上使用某项服务（如空间、视频上传、特别是文件存储）时，首先想到的就是可靠长久。</P>
<P>一些名企，典型代表－联想（<STRONG>它以前还做过一件丑事：联想的一个网站办着办着没人理了，居然连域名都没人续费（50元）而停了</STRONG>），就利用人们的这种心理拉人气，吸引用户，没等多久就原形毕露。</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一开始就提供永久免费5G网盘，呼吁大家邀请用户，虽然在国外空间远比5G大而且更优秀的网盘多的是，但由于进出口带宽原因，速度总是不够，而且国外的东西随时有被中国局域网屏蔽的危险（G W F E D)，而且联想的5G空间在国内算大了，还有比较便捷的客户端可断点续传及文件夹上传，加上联想是个国际大品牌，虽然不能外链也绝对算是国内最好的了。</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 于是一场联想网盘狂风大作。</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可是好景不长，联想在不吭声不出气一个屁不放的情况下停止了用户上传，去官方论坛询问者无数，就是没有任何人得到任何消息。</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 于是我在失望中等待，直到我几乎忘了！</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;突然我又想起了它，可是当我再去时，网站再次改版，除了以前预告的企业付费版外，个人版也成了付费版，不过还好右上角还有个测试版（以前好像不是这么称呼的）登陆链接。兴致勃勃地登陆了，进入后第一句话就是：你太长时间没登陆，文件已放入二级存储区，想立即激活吗？</P>
<P style="TEXT-INDENT: 2em"><FONT style="BACKGROUND-COLOR: #c0c0c0" color=#0000ff>如果您的数据已经申请激活，60个工作日以后，您的数据即可恢复，敬请耐心等待。</FONT></P>
<P style="TEXT-INDENT: 2em">（我日这么高的效率！<FONT color=#ff0000>而且非得60个工作日以后，摆明就是要让你等不及直接将它放弃！</FONT>国外网站有这种机制的，自己点一下要恢复的文件就恢复了！）</P>
<P style="TEXT-INDENT: 2em"><FONT style="BACKGROUND-COLOR: #c0c0c0" color=#0000ff>插一段：看看管理员对60个工作日后的解释：</FONT><A href="http://www.lenovodata.com/bbs/viewthread.php?tid=6186&amp;extra=page%3D1"><FONT style="BACKGROUND-COLOR: #c0c0c0" color=#0000ff>http://www.lenovodata.com/bbs/viewthread.php?tid=6186&amp;extra=page%3D1</FONT></A><FONT style="BACKGROUND-COLOR: #c0c0c0" color=#0000ff>&nbsp;（最后一个回复）</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #c0c0c0" color=#0000ff>您好，找回数据需要一定的时间，给您带来不方便，郑重向您道歉</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #c0c0c0" color=#0000ff>&nbsp;如果您的数据特别重要，可以试一下我们的专业版vip.lenovodata.com，承诺提供永久存储</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #c0c0c0" color=#0000ff>&nbsp;谢谢您的支持！</FONT></P>
<P><FONT color=#ff0000><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[找回数据需要一定的时间]</STRONG>，数据传输有那么慢吗？60天，再多的数据也可绕地球传输几周了！如果是程序实现数据从二级备份转移恢复，应该是半小时内的事（充其量5G数据，在局域网或同一硬盘内复制能用多少时间？）</FONT></P>
<P><FONT color=#ff0000>如果是人工处理也不会一定是60天后，60天内还差不多！（被二级转存了的用户真多得不行了吗？联想网盘的用户量暴大啊，失望了很久没去理它的用户很多啊？是要我夸你用户多还是效率高呢？）</FONT></P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 没办法，还是申请恢复，然后每次登陆都是那个等待恢复的界面：您的休眠数据正在唤醒中……请耐心等待（60天以后），唤醒后将自动进行账户激活。<FONT color=#ff0000>下面加个立即激活的链接（而且60天后别来个你的数据无法恢复，那用户就得跳楼了！摆明让你急，一点立即激活就删掉你所有文件）</FONT></P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 总不能一直这样等下去吧，于是去测试版界面点击注册想重新注册一个，结果是：请新老用户申请个人版获得更好的服务！ 我晕，你要新用户买个人版我没意见，但老用户也应该按你的要求升级吗？是不是过段时间就要取消测试版逼我们升级了呢！</P>
<P><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;既然你联想早就想这么做，何必打个永久免费的幌子，这不摆明了欺骗全国人民的感情吗？不想免费一开始就别这么说，没人怪你。</STRONG></P>
<P>
</P><HR>

<P></P>
<P><STRONG>最后得到结论：</STRONG></P>
<P><FONT color=#ff0000>无商不奸，名企更是奸人于毫无防备之中！</FONT></P>
<P><FONT color=#ff0000>联想</FONT>－（联想的东西你）<FONT color=#ff0000>想都不要想</FONT>（买东西也不用考虑联想，想不清的话直接告诉你答案：价格贵（内含大量广告费）质量差）</P>
<P><FONT color=#ff0000>联想可能真的没赚我们的钱，要不然怎么会穷得守不住承诺呢？</FONT></P>
<P><FONT color=#ff0000>不要迷信名企，也有比名企更务实守信的无名小企</FONT></P>
<P><FONT color=#ff0000>没那实力就别叫嚣得太厉害！说大话早晚得露陷！</FONT></P>
<P>
</P><HR>

<P></P>
<P><STRONG>支持国货者可能有意见了，不是我故意鄙视一些国产名牌（如瑞星，只吃干饭不做事，烦人却有一套，废物一个还要自称中国老大，没能力还学人家卡巴占资源，占资源得占得有道理啊），确实是他们太不争气还喜欢说大话，要不是因为国外的好东西总是被一些国外人士的政治言论或国内不良人士作祟（上传不良的东西）导致被屏蔽（如微软的网盘（25G）、谷歌的协作平台（10G）及其它一些比较有名的非名企），随便选个国外稍有名气的都比国内的可靠。</STRONG></P>
<P></P>
<P><FONT color=#0000ff>出处：</FONT><A href="http://wuxiong8665.blog.163.com/blog/static/93512200992803555458/"><FONT color=#0000ff>http://wuxiong8665.blog.163.com/blog/static/93512200992803555458/</FONT></A></P>
<P></P>
<HR>

<P></P>
<P></P>
<P>有同样行径的还有网易永久免费无限空间的相册，当时无人不知无人不晓，而在变成初始1G，超过后每月200M了！虽然不算过分，但200M确实不够上传一次拍的照片（被迫裁小压缩，那高相素的相机要了何用），而且也违背了当时宣称的永久免费无限空间！</P></div>]]></description>
	    <author><![CDATA[高级菜鸟]]></author>
	    <comments>http://wuxiong8665.blog.163.com/blog/static/93512200992803555458</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://wuxiong8665.blog.163.com/blog/static/93512200992803555458</guid>
    <pubDate>Wed, 28 Oct 2009 12:35:55 +0800</pubDate>
    <dcterms:modified>2009-10-28T14:05:41+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[MSSQL 2005 安全配置]]></title>	
    <link>http://wuxiong8665.blog.163.com/blog/static/93512200992703835745</link>
    <description><![CDATA[<div><H2><FONT size=2>来源于网络</FONT></H2>
<H2>MS SQL 2005 安全设置</H2>
<DIV>MS SQL 2005的安全性比SQL 2000要强上不少，不过默认设置还是有和原来一样的漏洞，下面我们来修改一下默认设置。<BR>1、安装MSSQL时使用混合模式，当然SA密码最好不能为空，在SQL2005中，可以对SA这个超级用户名进行修改或删除。<BR>use master<BR>ALTER LOGIN [sa] WITH NAME=[zxs] /*修改SA帐号*/<BR>sp_password '111111','123456','sa' /*修改SA密码*/<BR>使用以上命令可修改SA帐号，也可进行图形化的修改<BR>使用安全的帐号策略。对SA或等同用户进行最强的保护，当然，包括使用一个非常强壮的密码，如下图<BR><IMG title="MSSQL 2005 安全配置 - 高级菜鸟 - 高级菜鸟" border=0 alt="" src="http://images.itdb.cn/News/2006/01/31/8C8C414E1854257.PNG"><BR>这里可以看到SQL 2005比SQL 2000 增强的地方了。<BR>2、SQL的认证有Windows身份认证和混合身份认证。在2005中，登陆SQL可以使用indows身份认证和混合身份认证方便，如果不希望系统管理员接触数据库的话，可以在安全性==登录名是把系统帐号“BUILTIN\Administrators”删除。当然，还有别的多余的帐号也可一同禁止，只需要在帐号==属性==状态中把是否允许连接到数据库引擎改为拒绝，还有登录改为禁用即可，不过这样的坏处就是当你忘了SA的密码时，我也没办法帮你啦。<BR><IMG title="MSSQL 2005 安全配置 - 高级菜鸟 - 高级菜鸟" border=0 alt="" src="http://images.itdb.cn/News/2006/01/31/8C8C414E18ECBCB.PNG"><BR>也可用命令sp_change_users_login 'report' 搜索一下独立的帐户再删除<BR>3、管理扩展存储过程<BR>删除不必要的存储过程，因为有些存储过程能很容易地被人利用起来提升权限或进行破坏。<BR>如果你不需要扩展存储过程xp_cmdshell请把它去掉。xp_cmdshell根本就是一个大后门。<BR>如果不需要请丢弃OLE自动存储过程（会造成管理器中的某些特征不能使用），这些过程包括如下：<BR>sp_OACreate sp_OADestroy sp_OAGetErrorInfo sp_OAGetProperty<BR>sp_OAMethod sp_OASetProperty sp_OAStop<BR>去掉不需要的注册表访问的存储过程，注册表存储过程甚至能够读出操作系统管理员的密码来，如下：<BR>xp_regaddmultistring xp_regdeletekey xp_regdeletevalue xp_regenumvalues<BR>xp_regread xp_regremovemultistring xp_regwrite<BR>还有一些其他的扩展存储过程，你也最好检查检查。<BR>在处理存储过程的时候，请确认一下，避免造成对数据库或应用程序的伤害。运行以下SQL语句可删除所有危险的SP。<BR>DROP PROCEDURE sp_makewebtask<BR>exec master..sp_dropextendedproc xp_cmdshell /*命令行*/<BR>exec master..sp_dropextendedproc xp_dirtree /*可以展开你需要了解的目录，获得所有目录深度*/<BR>exec master..sp_dropextendedproc xp_fileexist /*用来确定一个文件是否存在*/<BR>exec master..sp_dropextendedproc xp_getnetname /*可以获得服务器名称*/<BR>exec master..sp_dropextendedproc xp_terminate_process<BR>exec master..sp_dropextendedproc sp_oamethod<BR>exec master..sp_dropextendedproc sp_oacreate<BR>exec master..sp_dropextendedproc xp_regaddmultistring<BR>exec master..sp_dropextendedproc xp_regdeletekey<BR>exec master..sp_dropextendedproc xp_regdeletevalue<BR>exec master..sp_dropextendedproc xp_regenumkeys<BR>exec master..sp_dropextendedproc xp_regenumvalues<BR>exec master..sp_dropextendedproc sp_add_job<BR>exec master..sp_dropextendedproc sp_addtask<BR>exec master..sp_dropextendedproc xp_regread<BR>exec master..sp_dropextendedproc xp_regwrite<BR>exec master..sp_dropextendedproc xp_readwebtask<BR>exec master..sp_dropextendedproc xp_makewebtask<BR>exec master..sp_dropextendedproc xp_regremovemultistring<BR>exec master..sp_dropextendedproc sp_OACreate<BR>DROP PROCEDURE sp_addextendedproc <BR>5、SQL Server 2005本身就具有加密功能，完全集成了一个密钥管理架构。不过，最好远程网络连接时使用SSL来加密协议，这就需要一个证书来支持。这里搜索一下就会有很多这方面的说明，就不多说了。<BR>6、使用IPSec策略阻止所有地址访问本机的TCP1433与UDP1434端口，也可对TCP1433端口进行修改，但是在SQL2005中，可以使用TCP动态端口，(在SQL Server Configuration Manager的SQL 2005网络配置中)如下图<BR><IMG title="MSSQL 2005 安全配置 - 高级菜鸟 - 高级菜鸟" border=0 alt="" src="http://images.itdb.cn/News/2006/01/31/8C8C414E19AB79C.PNG"><BR>这是SQL帮助中的说明<BR>如果某个 SQL Server 实例已配置为侦听动态端口，则在启动时，该实例将检查操作系统中的可用端口，并为该端口打开一个端点。传入连接必须指定要连接的端口号。由于每次启动 SQL Server 时端口号都可能会改变，因此 SQL Server 提供 SQL Server 浏览器服务器，来监视端口并将传入连接指向该实例的当前端口。<BR>也可对每个IP进行侦听<BR><IMG title="MSSQL 2005 安全配置 - 高级菜鸟 - 高级菜鸟" border=0 alt="" src="http://images.itdb.cn/News/2006/01/31/8C8C414E1A44110.PNG"><BR>这是SQL帮助中的说明<BR>指定 SQL Server 是否侦听所有绑定到计算机网卡的 IP 地址。如果设置为“否”，则使用每个 IP 地址各自的属性对话框对各个 IP 地址进行配置。如果设置为“是”，则 IPAll 属性框的设置将应用于所有 IP 地址。默认值为“是”。<BR>当然你也可以下面的SQL Native Client 配置中新建一别名来指定你的SQL服务器和端口，也可在服务器属性==连接＝＝远程服务器链接==把允许远程链接到本服务器的勾去掉<BR>关闭远程链接命令行为<BR>EXEC sys.sp_configure N'remote access', N'0'<BR>8、对远程网络连接进行IP限制，SQL Server 2005如同SQL 2000一样没有提供网络连接的安全解决办法，但是Windows 2K以上系统了提供了IPSec策略。对远程网络连接的IP进行限制，只保证需要的IP能够访问，拒绝其他 IP进行的端口连接，把安全威胁降到最低。<BR>9、在服务器的属性安全中，启用登录审核中的失败与成功登陆，启用C2审核跟踪，C2是一个政府安全等级，它保证系统能够保护资源并具有足够的审核能力。C2模式允许我们监视对所有数据库实体的所有访问企图。如图<BR><IMG title="MSSQL 2005 安全配置 - 高级菜鸟 - 高级菜鸟" border=0 alt="" src="http://images.itdb.cn/News/2006/01/31/8C8C414E1AB6827.PNG"><BR>启用C2审核的命令为<BR>EXEC sys.sp_configure N'c2 audit mode', N'1'<BR></DIV></div>]]></description>
	    <author><![CDATA[高级菜鸟]]></author>
	    <comments>http://wuxiong8665.blog.163.com/blog/static/93512200992703835745</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://wuxiong8665.blog.163.com/blog/static/93512200992703835745</guid>
    <pubDate>Tue, 27 Oct 2009 00:38:35 +0800</pubDate>
    <dcterms:modified>2009-10-27T00:45:35+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[SQL注入专题整理]]></title>	
    <link>http://wuxiong8665.blog.163.com/blog/static/9351220099257398114</link>
    <description><![CDATA[<div><P>从CSDN引来的，学习下</P>
<P>&nbsp;</P>
<P style="TEXT-INDENT: 2em">ＳＱＬ注入是从正常的WWW端口访问，而且表面看起来跟一般的Web页面访问没什么区别， 所以目前市面的防火墙都不会对ＳＱＬ注入发出警报，如果管理员没查看IIS日志的习惯，可能被入侵很长时间都不会发觉。 </P>
<P style="TEXT-INDENT: 2em">&nbsp; &nbsp; 随着B/S模式应用开发的发展，使用这种模式编写应用程序的程序员也越来越多。但是由于这个行业的入门门槛不高，程序员的水平及经验也参差不齐，相当大一部分程序员在编写代码的时候，没有对用户输入数据的合法性进行判断，使应用程序存在安全隐患。用户可以提交一段数据库查询代码，根据程序返回的结果，获得某些他想得知的数据，这就是所谓的SQL Injection，即SQL注入。 </P>
<P style="TEXT-INDENT: 2em">&nbsp; &nbsp; SQL注入是从正常的WWW端口访问，而且表面看起来跟一般的Web页面访问没什么区别，所以目前市面的防火墙都不会对SQL注入发出警报，如果管理员没查看IIS日志的习惯，可能被入侵很长时间都不会发觉。 </P>
<P style="TEXT-INDENT: 2em">&nbsp; 但是，SQL注入的手法相当灵活，在注入的时候会碰到很多意外的情况。能不能根据具体情况进行分析，构造巧妙的SQL语句，从而成功获取想要的数据，是高手与“菜鸟”的根本区别。 </P>
<P style="TEXT-INDENT: 2em">SQL注入漏洞全接触--入门篇&nbsp; &nbsp; </P>
<P style="TEXT-INDENT: 2em">&nbsp; SQL注入是从正常的WWW端口访问，而且表面看起来跟一般的Web页面访问没什么区别，所以目前市面的防火墙都不会对SQL注入发出警报，如果管理员没查看IIS日志的习惯，可能被入侵很长时间都不会发觉。&nbsp; &nbsp; </P>
<P style="TEXT-INDENT: 2em">详细内容&gt;&gt; </P>
<P style="TEXT-INDENT: 2em"><A href="http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449834.aspx">http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449834.aspx</A> </P>
<P style="TEXT-INDENT: 2em">SQL注入漏洞全接触--进阶篇&nbsp; &nbsp; </P>
<P style="TEXT-INDENT: 2em">&nbsp; SQL注入的一般步骤，首先，判断环境，寻找注入点，判断数据库类型，其次，根据注入参数类型，在脑海中重构SQL语句的原貌。&nbsp; </P>
<P style="TEXT-INDENT: 2em">详细内容&gt;&gt; </P>
<P style="TEXT-INDENT: 2em"><A href="http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449870.aspx">http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449870.aspx</A> </P>
<P style="TEXT-INDENT: 2em">SQL注入漏洞全接触--高级篇&nbsp; &nbsp; </P>
<P style="TEXT-INDENT: 2em">&nbsp; 看完入门篇和进阶篇后，稍加练习，破解一般的网站是没问题了。但如果碰到表名列名猜不到，或程序作者过滤了一些特殊字符，怎么提高注入的成功率？怎么样提高猜解效率？&nbsp; </P>
<P style="TEXT-INDENT: 2em">详细内容&gt;&gt; </P>
<P style="TEXT-INDENT: 2em"><A href="http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449883.aspx">http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449883.aspx</A> </P>
<P style="TEXT-INDENT: 2em">SQL注入法攻击一日通&nbsp; </P>
<P style="TEXT-INDENT: 2em">&nbsp; SQL注入的简单原理和攻击一般步骤，文章作者想让人一天学会SQL注入攻击。&nbsp; &nbsp; </P>
<P style="TEXT-INDENT: 2em">详细内容&gt;&gt; </P>
<P style="TEXT-INDENT: 2em"><A href="http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449901.aspx">http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449901.aspx</A> </P>
<P style="TEXT-INDENT: 2em">SQL Server应用程序中的高级SQL注入&nbsp; </P>
<P style="TEXT-INDENT: 2em">&nbsp; 这份文档是详细讨论SQL注入技术，它适应于比较流行的IIS+ASP+SQLSERVER平台。它讨论了哪些SQL语句能通过各种各样的方法注入到应用程序中，并且记录与攻击相关的数据确认和数据库锁定。&nbsp; &nbsp; &nbsp; </P>
<P style="TEXT-INDENT: 2em">详细内容&gt;&gt; </P>
<P style="TEXT-INDENT: 2em"><A href="http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449913.aspx">http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449913.aspx</A> </P>
<P style="TEXT-INDENT: 2em">编写通用的ASP防SQL注入攻击程序 </P>
<P style="TEXT-INDENT: 2em">&nbsp; 如果编写通用的SQL防注入程序一般的http请求不外乎get 和 post,所以只要我们在文件中过滤所有post或者get请求中的参数信息中非法字符即可，所以我们实现http 请求信息过滤就可以判断是是否受到SQL注入攻击。 </P>
<P style="TEXT-INDENT: 2em">详细内容&gt;&gt; </P>
<P style="TEXT-INDENT: 2em"><A href="http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449925.aspx">http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449925.aspx</A> </P>
<P style="TEXT-INDENT: 2em">利用instr()函数防止SQL注入攻击 </P>
<P style="TEXT-INDENT: 2em">&nbsp; 学asp也有一段时间了，这几天一直在写自己的程序，也遇到了好多问题，我就不得不得考虑到一些现在的漏洞，比如，‘ 或 and 1=1等等的一些漏洞！别的先不管，今天我就来说说如何堵这个漏洞！详细内容&gt;&gt; </P>
<P style="TEXT-INDENT: 2em"><A href="http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449932.aspx">http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449932.aspx</A> </P>
<P style="TEXT-INDENT: 2em">SQL注入攻击的原理及其防范措施&nbsp; &nbsp; </P>
<P style="TEXT-INDENT: 2em">&nbsp; ASP编程门槛很低，新手很容易上路。在一段不长的时间里，新手往往就已经能够编出看来比较完美的动态网站，在功能上，老手能做到的，新手也能够做到。 </P>
<P style="TEXT-INDENT: 2em">详细内容&gt;&gt; </P>
<P style="TEXT-INDENT: 2em"><A href="http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449940.aspx">http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449940.aspx</A> </P>
<P style="TEXT-INDENT: 2em">跨站式SQL注入技巧&nbsp; </P>
<P style="TEXT-INDENT: 2em">&nbsp; 学习如何从数据库中获取想要获得的内容。 </P>
<P style="TEXT-INDENT: 2em">详细内容&gt;&gt; </P>
<P style="TEXT-INDENT: 2em"><A href="http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449948.aspx">http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449948.aspx</A> </P>
<P style="TEXT-INDENT: 2em">防范Sql注入式攻击&nbsp; &nbsp; </P>
<P style="TEXT-INDENT: 2em">&nbsp; Sql注入式攻击是指利用设计上的漏洞，在目标服务器上运行Sql 命令以及进行其他方式的攻击 动态生成Sql命令时没有对用户输入的数据进行验证是Sql注入攻击得逞的主要原因。 </P>
<P style="TEXT-INDENT: 2em">详细内容&gt;&gt; </P>
<P style="TEXT-INDENT: 2em"><A href="http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449951.aspx">http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449951.aspx</A> </P>
<P style="TEXT-INDENT: 2em">Dreamweaver中sql注入式攻击的防范&nbsp; &nbsp; </P>
<P style="TEXT-INDENT: 2em">&nbsp; 在安全性方面，新手最容易忽略的问题就是SQL注入漏洞的问题。用NBSI 2.0对网上的一些ASP网站稍加扫描，就能发现许多ASP网站存在SQL注入漏洞。详细内容&gt;&gt; </P>
<P style="TEXT-INDENT: 2em"><A href="http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449953.aspx">http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449953.aspx</A> </P>
<P style="TEXT-INDENT: 2em">PHP与SQL注入攻击&nbsp; &nbsp; </P>
<P style="TEXT-INDENT: 2em">&nbsp; SQL注入攻击是黑客攻击网站最常用的手段。如果你的站点没有使用严格的用户输入检验，那么常容易遭到SQL注入攻击。SQL注入攻击通常通过给站点数据库提交不良的数据或查询语句来实现，很可能使数据库中的纪录遭到暴露，更改或被删除。下面来谈谈SQL注入攻击是如何实现的，又如何防范。 </P>
<P style="TEXT-INDENT: 2em">详细内容&gt;&gt; </P>
<P style="TEXT-INDENT: 2em"><A href="http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449956.aspx">http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449956.aspx</A> </P>
<P style="TEXT-INDENT: 2em">SQL注入攻击零距离&nbsp; &nbsp; </P>
<P style="TEXT-INDENT: 2em">&nbsp; 一次次的SQL注射入侵，一次次的网站被黑，总是那句话，漏洞在所难免，难道一点办法都没吗？这篇文章就是为大家解析下SQL注 射的原理，以及给出一些预防方法。 </P>
<P style="TEXT-INDENT: 2em">详细内容&gt;&gt; </P>
<P style="TEXT-INDENT: 2em"><A href="http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449959.aspx">http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449959.aspx</A> </P>
<P style="TEXT-INDENT: 2em">SQL注入技术和跨站脚本攻击的检测&nbsp; &nbsp; </P>
<P style="TEXT-INDENT: 2em">&nbsp; 在最近两年中，安全专家应该对网络应用层的攻击更加重视。因为无论你有多强壮的防火墙规则设置或者非常勤于补漏的修补机制，如果你的网络应用程序开发者没有遵循 安全代码进行开发，攻击者将通过80端口进入你的系统。 </P>
<P style="TEXT-INDENT: 2em">详细内容&gt;&gt; </P>
<P style="TEXT-INDENT: 2em"><A href="http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449961.aspx">http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449961.aspx</A> </P>
<P style="TEXT-INDENT: 2em">菜鸟入门级：SQL注入攻击&nbsp; &nbsp; </P>
<P style="TEXT-INDENT: 2em">&nbsp; 一般国内的小一点的新闻站点程序 都有 ""&amp;request 这种漏洞，下面我讲解攻击方法。 </P>
<P style="TEXT-INDENT: 2em">详细内容&gt;&gt; </P>
<P style="TEXT-INDENT: 2em"><A href="http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449963.aspx">http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449963.aspx</A> </P>
<P style="TEXT-INDENT: 2em">三步堵死SQL注入漏洞&nbsp; &nbsp; </P>
<P style="TEXT-INDENT: 2em">&nbsp; 防御SQL注入有妙法，第一步：很多新手从网上下载SQL通用防注入系统的程序，在需要防范注入的页面头部用 来防止别人进行手动注入测试. </P>
<P style="TEXT-INDENT: 2em">详细内容&gt;&gt; </P>
<P style="TEXT-INDENT: 2em"><A href="http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449965.aspx">http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449965.aspx</A> </P>
<P style="TEXT-INDENT: 2em">SQL注入实战---利用“dbo”获得SQL管理权限和系统权限&nbsp; &nbsp; </P>
<P style="TEXT-INDENT: 2em">&nbsp; 如果显示“dbo” 转换数据类型为 int 的列时发生语法错误 那么就可以用我下面介绍的方法来获得系统管理权限，如果是“abc” 转换数据类型为 int 的列时发生语法错误 那么就用不能用我下面的介绍来获得系统权限了. </P>
<P style="TEXT-INDENT: 2em">详细内容&gt;&gt; </P>
<P style="TEXT-INDENT: 2em"><A href="http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449967.aspx">http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449967.aspx</A> </P>
<P style="TEXT-INDENT: 2em">两个防SQL注入过滤代码&nbsp; &nbsp; </P>
<P style="TEXT-INDENT: 2em">&nbsp; SQL注入防护的一种简单方法，在网页中嵌入过滤代码，基于认为的安全防护措施. </P>
<P style="TEXT-INDENT: 2em">详细内容&gt;&gt; </P>
<P style="TEXT-INDENT: 2em"><A href="http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449969.aspx">http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449969.aspx</A> </P>
<P style="TEXT-INDENT: 2em">蓝雨设计整站SQL注入漏洞&nbsp; &nbsp; </P>
<P style="TEXT-INDENT: 2em">&nbsp; 以下文章中就会出现NOWA修改系统漏洞当中从未有的SQL注入漏洞！只怪蓝雨修改程序的时候没有做好注入问题了！这个可不能怪我！谁叫人家程序设计员不会注意安全死角阿？ </P>
<P style="TEXT-INDENT: 2em">详细内容&gt;&gt; </P>
<P style="TEXT-INDENT: 2em"><A href="http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449972.aspx">http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449972.aspx</A> </P>
<P style="TEXT-INDENT: 2em">SQL注入渗透某网络安全公司的网站全过程&nbsp; &nbsp; </P>
<P style="TEXT-INDENT: 2em">&nbsp; 写这篇文章不是为了告诉大家如何去做入侵，而是希望提醒大家:“入侵是偶然的，但安全并不是必然的”，不要疏忽运作上的一些小细节。 </P>
<P style="TEXT-INDENT: 2em">详细内容&gt;&gt; </P>
<P style="TEXT-INDENT: 2em"><A href="http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449973.aspx">http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449973.aspx</A> </P>
<P style="TEXT-INDENT: 2em">sql注入防御&nbsp; &nbsp; </P>
<P style="TEXT-INDENT: 2em">&nbsp; SQL注入通过网页对网站数据库进行修改。它能够直接在数据库中添加具有管理员权限的用户，从而最终获得系统管理员权限。黑客可以利用获得的管理员权限任意获得网站上的文件或者在网页上加挂木马和各种恶意程序，对网站和访问该网站的网友都带来巨大危害.详细内容&gt;&gt; </P>
<P style="TEXT-INDENT: 2em"><A href="http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449976.aspx">http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449976.aspx</A> </P>
<P style="TEXT-INDENT: 2em">终极防范SQL注入漏洞&nbsp; &nbsp; </P>
<P style="TEXT-INDENT: 2em">&nbsp; 其实SQL注入漏洞并不可怕，知道原理 ＋ 耐心仔细，就可以彻底防范！下面给出4个函数，足够你抵挡一切SQL注入漏洞！读懂代码，你就能融会贯通.详细内容&gt;&gt; </P>
<P style="TEXT-INDENT: 2em"><A href="http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449979.aspx">http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449979.aspx</A> </P>
<P style="TEXT-INDENT: 2em">SQL注入与ASP木马上传&nbsp; &nbsp; </P>
<P style="TEXT-INDENT: 2em">&nbsp; SQL注入后，如何上传木马，一直是比较头疼的事，我这里提供上传木马的一种另一种方法。 </P>
<P style="TEXT-INDENT: 2em">1、SQL注入的时候，用xp_cmdshell 向服务器上写入一个能写文件的asp文件. </P>
<P style="TEXT-INDENT: 2em">详细内容&gt;&gt; </P>
<P style="TEXT-INDENT: 2em"><A href="http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449983.aspx">http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449983.aspx</A> </P>
<P style="TEXT-INDENT: 2em">如何在SQL注入时保护数据库&nbsp; &nbsp; </P>
<P style="TEXT-INDENT: 2em">&nbsp; SQL注入是防止数据库攻击的一个有效策略。攻击者将注入一个SQL语句到另外一个语句中，这个通常会损坏你的数据库。有数据库接口的Web站点通常在SQL注入的时候容易受到攻击，因为它们是基于动态的SQL. </P>
<P style="TEXT-INDENT: 2em">详细内容&gt;&gt; </P>
<P style="TEXT-INDENT: 2em"><A href="http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449986.aspx">http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449986.aspx</A> </P>
<P style="TEXT-INDENT: 2em">天晨设计整站SQL注入漏洞&nbsp; &nbsp; </P>
<P style="TEXT-INDENT: 2em">&nbsp; 作者从一个安全工作员的角度，对天晨设计整站SQL注入漏洞做出了详细的测试. </P>
<P style="TEXT-INDENT: 2em">详细内容&gt;&gt; </P>
<P style="TEXT-INDENT: 2em"><A href="http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449988.aspx">http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449988.aspx</A> </P>
<P style="TEXT-INDENT: 2em">浅谈sql注入式(SQL injection)攻击与防范&nbsp; &nbsp; </P>
<P style="TEXT-INDENT: 2em">&nbsp; 没有系统的学习过asp或者php编程，也没有系统的学习过access、sqlserver、mysql等数据库，所以我不是一个程序员，虽然经常干一些类似程序员的事情. </P>
<P style="TEXT-INDENT: 2em">详细内容&gt;&gt; </P>
<P style="TEXT-INDENT: 2em"><A href="http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449991.aspx">http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449991.aspx</A> </P>
<P style="TEXT-INDENT: 2em">用vbs来写sql注入等80端口的攻击脚本&nbsp; </P>
<P style="TEXT-INDENT: 2em">&nbsp; 昨天晚上在机器里乱翻时无意打开一个vbs脚本,突然发现一个以前没有见过的对象Test.SendRequest("http://" &amp; g_sServer &amp; "/testfiles/browser.asp"),虽然对象没有见过,但是意思很明显:发送http请求. </P>
<P style="TEXT-INDENT: 2em">详细内容&gt;&gt; </P>
<P style="TEXT-INDENT: 2em"><A href="http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449992.aspx">http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449992.aspx</A> </P>
<P style="TEXT-INDENT: 2em">C# 检查字符串,防SQL注入攻击&nbsp; &nbsp; </P>
<P style="TEXT-INDENT: 2em">&nbsp; 这些天,CSDN上讨论SQL注入攻击似乎是如火如荼啊...我也来参合一下..如下,CheckParams函数,接收参数任意,如参数中有字符串,则对字符串进行检查,如参数中有集合(如Array之类,总之是实现了ICollection的),则对集合中的字符串元素进行检查. </P>
<P style="TEXT-INDENT: 2em">详细内容&gt;&gt; </P>
<P style="TEXT-INDENT: 2em"><A href="http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449994.aspx">http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449994.aspx</A> </P>
<P style="TEXT-INDENT: 2em">关于对SQL注入80004005 及其它错误消息分析&nbsp; &nbsp; </P>
<P style="TEXT-INDENT: 2em">&nbsp; 本文详细讲述了 Microsoft 数据访问组件 (MDAC) 收到 0x800040005 错误的一些常见原因，MDAC 包括 ActiveX 数据对象、OLE DB 和远程数据服务 (RDS)。同时，本文还讨论了其它一些错误消息，包括 80040e21、80040e14 和80040e10. </P>
<P style="TEXT-INDENT: 2em">详细内容&gt;&gt; </P>
<P style="TEXT-INDENT: 2em"><A href="http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449996.aspx">http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449996.aspx</A> </P>
<P style="TEXT-INDENT: 2em">SQL注入入侵动网SQL版论坛 </P>
<P style="TEXT-INDENT: 2em">&nbsp; 现在动网最新版本是7.0+SP2。应该说安全性已经是很高的了。所以从脚本本身的问题去突破它难度不小。但是我们可以从外部的一些途径间接“搞定”动网.现在IIS+ASP+SQL2000的组合是比较常见的。而一个网站运用大量的ASP脚本程序，难免不出纰漏。如果一台主机上存在某个SQL注入点，而这台主机又安装有动网SQL版的话，基本上可以得出结论：这个动网就是你的了。下面来看一下实例.详细内容&gt;&gt; </P>
<P style="TEXT-INDENT: 2em"><A href="http://blog.csdn.net/wufeng4552/archive/2008/12/05/3450001.aspx">http://blog.csdn.net/wufeng4552/archive/2008/12/05/3450001.aspx</A> </P>
<P style="TEXT-INDENT: 2em">利用SQL注入2分钟入侵网站全程实录&nbsp; &nbsp; </P>
<P style="TEXT-INDENT: 2em">&nbsp; 说起流光、溯雪、乱刀，可以说是大名鼎鼎无人不知无人不晓，这些都是小榕哥的作品。每次一提起小榕哥来，我的崇拜景仰就如滔滔江水，连绵不绝~~~~（又来了！） 让我们崇拜的小榕哥最新又发布了SQL注入工具，这回喜欢利用SQL注入入侵网站的黑友们有福了。小榕哥的工具就是强！偶用它来搞定我们本地的信息港，从寻找注入漏洞到注入攻击成功，通过准确计时，总共只用了3分还差40秒，呵呵，王者风范，就是强啊！不信吗？看看我的入侵过程吧. </P>
<P style="TEXT-INDENT: 2em">详细内容&gt;&gt; </P>
<P style="TEXT-INDENT: 2em"><A href="http://blog.csdn.net/wufeng4552/archive/2008/12/05/3450005.aspx">http://blog.csdn.net/wufeng4552/archive/2008/12/05/3450005.aspx</A></P></div>]]></description>
	    <author><![CDATA[高级菜鸟]]></author>
	    <comments>http://wuxiong8665.blog.163.com/blog/static/9351220099257398114</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://wuxiong8665.blog.163.com/blog/static/9351220099257398114</guid>
    <pubDate>Sun, 25 Oct 2009 19:39:08 +0800</pubDate>
    <dcterms:modified>2009-10-25T19:46:03+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[MSSQL 2000 安全配置]]></title>	
    <link>http://wuxiong8665.blog.163.com/blog/static/93512200992573542740</link>
    <description><![CDATA[<div><P>引来的，学习下</P>
<P>&nbsp;</P>
<P>首先,做好用户安全:&nbsp; <BR><BR>--简单的,只允许sql的用户访问sql(防止利用administrator组用户访问)&nbsp; <BR><BR>1.企业管理器--右键SQL实例--属性--安全性--身份验证--选择"sql&nbsp; server和windows"--确定&nbsp; <BR><BR>2.企业管理器--安全性--登陆--右键sa--设置密码--其他用户也设置密码&nbsp; <BR><BR>3.删除用户:&nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; BUILTIN\Administrators&nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;机器名&gt;\Administrator&nbsp; --这个用户不一定有&nbsp; <BR>&nbsp; 这样可以防止用windows身份登陆SQL&nbsp; <BR><BR>4.设置进入企业管理器需要输入密码&nbsp; <BR>在企业管理器中&nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --右键你的服务器实例(就是那个有绿色图标的)&nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --编辑SQL Server注册属性&nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --选择"使用 SQL Server 身份验证"&nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --并勾选"总是提示输入登录名和密码"&nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --确定&nbsp; <BR><BR>--经过上面的设置,你的SQL&nbsp; Server基本上算是安全了.&nbsp; <BR><BR>------------------------------------------------------------------------&nbsp; <BR><BR><BR>其次,改默认端口,隐藏服务器,减少被攻击的可能性&nbsp; <BR><BR>SQL Server服务器&nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --开始&nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --程序&nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --Microsoft&nbsp; SQL&nbsp; Server&nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --服务器网络实用工具&nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --启用的协议中"TCP/IP"&nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --属性&nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --默认端口,输入一个自已定义的端口,比如2433&nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --勾选隐藏服务器&nbsp; <BR><BR>----------------------------------------------------------------------------&nbsp; <BR><BR><BR>--管好sql的用户,防止访问他不该访问的数据库(总控制,明细还可以控制他对于某个数据库的具体对象具有的权限)&nbsp; <BR><BR>--切换到你新增的用户要控制的数据库&nbsp; <BR>use&nbsp; 你的库名&nbsp; <BR>go&nbsp; <BR><BR>--新增用户&nbsp; <BR>exec&nbsp; sp_addlogin&nbsp; 'test'&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --添加登录&nbsp; <BR>exec&nbsp; sp_grantdbaccess&nbsp; N'test'&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --使其成为当前数据库的合法用户&nbsp; <BR>exec&nbsp; sp_addrolemember&nbsp; N'db_owner',&nbsp; N'test'&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --授予对自己数据库的所有权限&nbsp; <BR><BR>--这样创建的用户就只能访问自己的数据库,及数据库中包含了guest用户的公共表&nbsp; <BR>go&nbsp; <BR><BR>--删除测试用户&nbsp; <BR>exec&nbsp; sp_revokedbaccess&nbsp; N'test'&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --移除对数据库的访问权限&nbsp; <BR>exec&nbsp; sp_droplogin&nbsp; N'test'&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --删除登录&nbsp; <BR><BR><BR>如果在企业管理器中创建的话,就用: <BR><BR>企业管理器--安全性--右键登录--新建登录 <BR><BR>常规项 <BR>--名称中输入用户名 <BR>--身份验证方式根据你的需要选择(如果是使用windows身份验证,则要先在操作系统的用户中新建用户) <BR>--默认设置中,选择你新建的用户要访问的数据库名 <BR><BR>服务器角色项 <BR>这个里面不要选择任何东西 <BR><BR>数据库访问项 <BR>勾选你创建的用户需要访问的数据库名 <BR>数据库角色中允许,勾选"public","db_ownew" <BR><BR>确定,这样建好的用户与上面语句建立的用户一样 <BR>---------------------------------------------------------------------------&nbsp; <BR><BR>最后一步,为具体的用户设置具体的访问权限,这个可以参考下面的最简示例: <BR><BR>--添加只允许访问指定表的用户:&nbsp; <BR>exec&nbsp; sp_addlogin&nbsp; '用户名','密码','默认数据库名'&nbsp; <BR><BR>--添加到数据库&nbsp; <BR>exec&nbsp; sp_grantdbaccess&nbsp; '用户名' <BR><BR>--分配整表权限&nbsp; <BR>GRANT&nbsp; SELECT ,&nbsp; INSERT ,&nbsp; UPDATE ,&nbsp; DELETE&nbsp; ON table1 TO [用户名] <BR><BR>--分配权限到具体的列 <BR>GRANT&nbsp; SELECT ,&nbsp; UPDATE&nbsp; ON table1(id,AA) TO [用户名] </P>
<P>&nbsp;</P>
<P></P>
<HR>

<P></P>
<P>示例：新建用户单独赋予权限</P>
<P>/*--示例说明 <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 示例在数据库pubs中创建一个拥有表jobs的所有权限、拥有表titles的SELECT权限的角色r_test <BR>&nbsp;&nbsp;&nbsp; 随后创建了一个登录l_test，然后在数据库pubs中为登录l_test创建了用户账户u_test <BR>&nbsp;&nbsp;&nbsp; 同时将用户账户u_test添加到角色r_test中，使其通过权限继承获取了与角色r_test一样的权限 <BR>&nbsp;&nbsp;&nbsp; 最后使用DENY语句拒绝了用户账户u_test对表titles的SELECT权限。 <BR>&nbsp;&nbsp;&nbsp; 经过这样的处理，使用l_test登录SQL Server实例后，它只具有表jobs的所有权限。 <BR>--*/ <BR><BR>USE pubs <BR><BR>--创建角色 r_test <BR>EXEC sp_addrole 'r_test' <BR><BR>--授予 r_test 对 jobs 表的所有权限 <BR>GRANT ALL ON jobs TO r_test <BR>--授予角色 r_test 对 titles 表的 SELECT 权限 <BR>GRANT SELECT ON titles TO r_test <BR><BR><BR>--添加登录 l_test,设置密码为pwd,默认数据库为pubs <BR>EXEC sp_addlogin 'l_test','pwd','pubs' <BR><BR>--为登录 l_test 在数据库 pubs 中添加安全账户 u_test <BR>EXEC sp_grantdbaccess 'l_test','u_test' <BR><BR>--添加 u_test 为角色 r_test 的成员 <BR>EXEC sp_addrolemember 'r_test','u_test' <BR><BR>-------------------------------补充-------------- <BR>--上面的授权为对单表进行授权 <BR>--2005可对SCHEMA级别进行授权 <BR>--授予安全账户 u_test ,架构interface下的查询权限 <BR>GRANT SELECT ON SCHEMA::interface TO u_test <BR>--拒绝安全账户 u_test ,架构dbo下的权限 <BR>DENY VIEW DEFINITION ON SCHEMA::dbo TO risk <BR><BR>------------------------------------------------- <BR><BR>--拒绝安全账户 u_test 对 titles 表的 SELECT 权限 <BR>DENY SELECT ON titles TO u_test <BR><BR>/*--完成上述步骤后,用 l_test 登录,可以对jobs表进行所有操作,但无法对titles表查询,虽然角色 r_test 有titles表的select权限,但已经在安全账户中明确拒绝了对titles的select权限,所以l_test无titles表的select权限--*/ <BR><BR>--从数据库 pubs 中删除安全账户 <BR>EXEC sp_revokedbaccess 'u_test' <BR><BR>--删除登录 l_test <BR>EXEC sp_droplogin 'l_test' <BR><BR>--删除角色 r_test <BR>EXEC sp_droprole 'r_test' <BR><BR>exec sp_dropsrvrolemember N'aa', sysadmin <BR>go <BR>exec sp_addsrvrolemember N'aa', securityadmin <BR>go <BR></P>
<P><BR></P></div>]]></description>
	    <author><![CDATA[高级菜鸟]]></author>
	    <comments>http://wuxiong8665.blog.163.com/blog/static/93512200992573542740</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://wuxiong8665.blog.163.com/blog/static/93512200992573542740</guid>
    <pubDate>Sun, 25 Oct 2009 19:35:42 +0800</pubDate>
    <dcterms:modified>2009-10-27T00:38:56+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[常用命令]]></title>	
    <link>http://wuxiong8665.blog.163.com/blog/static/935122009924115817717</link>
    <description><![CDATA[<div>一，ping 　　 <BR><BR>　　它是用来检查网络是否通畅或者网络连接速度的命令。作为一个生活在网络上的管理员或者黑客来说，ping命令是第一个必须掌握的DOS命令，它所利用的原理是这样的：网络上的机器都有唯一确定的IP地址，我们给目标IP地址发送一个数据包，对方就要返回一个同样大小的数据包，根据返回的数据包我们可以确定目标主机的存在，可以初步判断目标主机的操作系统等。下面就来看看它的一些常用的操作。先看看帮助吧，在DOS窗口中键入：ping /? 回车，。所示的帮助画面。在此，我们只掌握一些基本的很有用的参数就可以了（下同）。 　　 <BR><BR>　　-t 表示将不间断向目标IP发送数据包，直到我们强迫其停止。试想，如果你使用100M的宽带接入，而目标IP是56K的小猫，那么要不了多久，目标IP就因为承受不了这么多的数据而掉线，呵呵，一次攻击就这么简单的实现了。 　　 <BR><BR>　　-l 定义发送数据包的大小，默认为32字节，我们利用它可以最大定义到65500字节。结合上面介绍的-t参数一起使用，会有更好的效果哦。 　　 <BR><BR>　　-n 定义向目标IP发送数据包的次数，默认为3次。如果网络速度比较慢，3次对我们来说也浪费了不少时间，因为现在我们的目的仅仅是判断目标IP是否存在，那么就定义为一次吧。 　　 <BR><BR>　　说明一下，如果-t 参数和 -n参数一起使用，ping命令就以放在后面的参数为标准，比如"ping IP -t -n 3"，虽然使用了-t参数，但并不是一直ping下去，而是只ping 3次。另外，ping命令不一定非得ping IP，也可以直接ping主机域名，这样就可以得到主机的IP。 　　 <BR><BR>　　下面我们举个例子来说明一下具体用法。 　　 <BR><BR>　　这里time=2表示从发出数据包到接受到返回数据包所用的时间是2秒，从这里可以判断网络连接速度的大小 。从TTL的返回值可以初步判断被ping主机的操作系统，之所以说"初步判断"是因为这个值是可以修改的。这里TTL=32表示操作系统可能是win98。 <BR><BR>　　（小知识：如果TTL=128，则表示目标主机可能是Win2000；如果TTL=250，则目标主机可能是Unix） <BR><BR>　　至于利用ping命令可以快速查找局域网故障，可以快速搜索最快的QQ服务器，可以对别人进行ping攻击……这些就靠大家自己发挥了。 　　 <BR><BR>二，nbtstat 　　 <BR><BR>　　该命令使用TCP/IP上的NetBIOS显示协议统计和当前TCP/IP连接，使用这个命令你可以得到远程主机的NETBIOS信息，比如用户名、所属的工作组、网卡的MAC地址等。在此我们就有必要了解几个基本的参数。 　　 <BR><BR>　　-a 使用这个参数，只要你知道了远程主机的机器名称，就可以得到它的NETBIOS信息（下同）。 　　 <BR><BR>　　-A 这个参数也可以得到远程主机的NETBIOS信息，但需要你知道它的IP。 <BR><BR>　　-n 列出本地机器的NETBIOS信息。 　　 <BR><BR>　　当得到了对方的IP或者机器名的时候，就可以使用nbtstat命令来进一步得到对方的信息了，这又增加了我们入侵的保险系数。 　　 <BR><BR>三，netstat <BR><BR>　　这是一个用来查看网络状态的命令，操作简便功能强大。 　　 <BR><BR>　　-a 查看本地机器的所有开放端口，可以有效发现和预防木马，可以知道机器所开的服务等信息，如图4。 　　 <BR><BR>　　这里可以看出本地机器开放有FTP服务、Telnet服务、邮件服务、WEB服务等。用法：netstat -a IP。 <BR><BR>　　-r 列出当前的路由信息，告诉我们本地机器的网关、子网掩码等信息。用法：netstat -r IP。 <BR>四，tracert <BR><BR>　　跟踪路由信息，使用此命令可以查出数据从本地机器传输到目标主机所经过的所有途径，这对我们了解网络布局和结构很有帮助。如图5。 　　 <BR><BR>　　这里说明数据从本地机器传输到192.168.0.1的机器上，中间没有经过任何中转，说明这两台机器是在同一段局域网内。用法：tracert IP。 　　 <BR><BR>五，net 　　 <BR><BR>　　这个命令是网络命令中最重要的一个，必须透彻掌握它的每一个子命令的用法，因为它的功能实在是太强大了，这简直就是 微软为我们提供的最好的入侵工具。首先让我们来看一看它都有那些子命令，键入net /?回车如图6。 <BR><BR>　　在这里，我们重点掌握几个入侵常用的子命令。 　　 <BR><BR>　　net view 　　 <BR><BR>　　使用此命令查看远程主机的所以共享资源。命令格式为net view \IP。　　 <BR><BR>　　net use <BR><BR>　　把远程主机的某个共享资源影射为本地盘符，图形界面方便使用，呵呵。命令格式为net use x: \IP\sharename。上面一个表示把192.168.0.5IP的共享名为magic的目录影射为本地的Z盘。下面表示和192.168.0.7建立IPC$连接（net use \IP\IPC$ "password" /user:"name"）， 　　 <BR><BR>　　建立了IPC$连接后，呵呵，就可以上传文件了：copy nc.exe \192.168.0.7\admin$，表示把本地目录下的nc.exe传到远程主机，结合后面要介绍到的其他DOS命令就可以实现入侵了。 　　 <BR><BR>　　net start <BR><BR>　　使用它来启动远程主机上的服务。当你和远程主机建立连接后，如果发现它的什么服务没有启动，而你又想利用此服务怎么办？就使用这个命令来启动吧。用法：net start servername，如图9，成功启动了telnet服务。 　　 <BR><BR>　　net stop <BR><BR>　　入侵后发现远程主机的某个服务碍手碍脚，怎么办？利用这个命令停掉就ok了，用法和net start同。 　　 <BR><BR>　　net user <BR><BR>　　查看和帐户有关的情况，包括新建帐户、删除帐户、查看特定帐户、激活帐户、帐户禁用等。这对我们入侵是很有利的，最重要的，它为我们克隆帐户提供了前提。键入不带参数的net user，可以查看所有用户，包括已经禁用的。下面分别讲解。 <BR><BR>　　1，net user abcd 1234 /add，新建一个用户名为abcd，密码为1234的帐户，默认为user组成员。 <BR><BR>　　2，net user abcd /del，将用户名为abcd的用户删除。 <BR><BR>　　3，net user abcd /active:no，将用户名为abcd的用户禁用。 <BR><BR>　　4，net user abcd /active:yes，激活用户名为abcd的用户。 <BR><BR>　　5，net user abcd，查看用户名为abcd的用户的情况　　 <BR><BR>　　net localgroup <BR><BR>　　查看所有和用户组有关的信息和进行相关操作。键入不带参数的net localgroup即列出当前所有的用户组。在入侵过程中，我们一般利用它来把某个帐户提升为administrator组帐户，这样我们利用这个帐户就可以控制整个远程主机了。用法：net localgroup groupname username /add。 　　 <BR><BR>　　现在我们把刚才新建的用户abcd加到administrator组里去了，这时候abcd用户已经是超级管理员了，呵呵，你可以再使用net user abcd来查看他的状态，和图10进行比较就可以看出来。但这样太明显了，网管一看用户情况就能漏出破绽，所以这种方法只能对付菜鸟网管，但我们还得知道。现在的手段都是利用其他工具和手段克隆一个让网管看不出来的超级管理员，这是后话。有兴趣的朋友可以参照《黑客防线》第30期上的《由浅入深解析隆帐户》一文。 　　 <BR><BR>　　net time <BR><BR>　　这个命令可以查看远程主机当前的时间。如果你的目标只是进入到远程主机里面，那么也许就用不到这个命令了。但简单的入侵成功了，难道只是看看吗？我们需要进一步渗透。这就连远程主机当前的时间都需要知道，因为利用时间和其他手段（后面会讲到）可以实现某个命令和程序的定时启动，为我们进一步入侵打好基础。用法：net time \IP。 　　 <BR><BR>六，at <BR><BR>这个命令的作用是安排在特定日期或时间执行某个特定的命令和程序（知道net time的重要了吧？）。当我们知道了远程主机的当前时间，就可以利用此命令让其在以后的某个时间（比如2分钟后）执行某个程序和命令。用法：at time command \computer。 　　 <BR><BR>　　表示在6点55分时，让名称为a-01的计算机开启telnet服务（这里net start telnet即为开启telnet服务的命令）。 　　 <BR>七，ftp 　　 <BR><BR>　　大家对这个命令应该比较熟悉了吧？网络上开放的ftp的主机很多，其中很大一部分是匿名的，也就是说任何人都可以登陆上去。现在如果你扫到了一台开放ftp服务的主机（一般都是开了21端口的机器），如果你还不会使用ftp的命令怎么办？下面就给出基本的ftp命令使用方法。 <BR><BR>　　首先在命令行键入ftp回车，出现ftp的提示符，这时候可以键入"help"来查看帮助（任何DOS命令都可以使用此方法查看其帮助)。 　　 <BR><BR>　　大家可能看到了，这么多命令该怎么用？其实也用不到那么多，掌握几个基本的就够了。 　　 <BR><BR>　　首先是登陆过程，这就要用到open了，直接在ftp的提示符下输入"open 主机IP ftp端口"回车即可，一般端口默认都是21，可以不写。接着就是输入合法的用户名和密码进行登陆了，这里以匿名ftp为例介绍。 　　 <BR><BR>　　用户名和密码都是ftp，密码是不显示的。当提示**** logged in时，就说明登陆成功。这里因为是匿名登陆，所以用户显示为Anonymous。 　　 <BR><BR>　　接下来就要介绍具体命令的使用方法了。 　　 <BR><BR>　　dir 跟DOS命令一样，用于查看服务器的文件，直接敲上dir回车，就可以看到此ftp服务器上的文件。 <BR><BR>　　cd 进入某个文件夹。 <BR><BR>　　get 下载文件到本地机器。 <BR><BR>　　put 上传文件到远程服务器。这就要看远程ftp服务器是否给了你可写的权限了，如果可以，呵呵，该怎么 利用就不多说了，大家就自由发挥去吧。 <BR><BR>　　delete 删除远程ftp服务器上的文件。这也必须保证你有可写的权限。 <BR><BR>　　bye 退出当前连接。 <BR><BR>　　quit 同上。 <BR>　　 <BR><BR>八，telnet <BR><BR>　　功能强大的远程登陆命令，几乎所有的入侵者都喜欢用它，屡试不爽。为什么？它操作简单，如同使用自己的机器一样，只要你熟悉DOS命令，在成功以administrator身份连接了远程机器后，就可以用它来干你想干的一切了。下面介绍一下使用方法，首先键入telnet回车，再键入help查看其帮助信息。 　　 <BR><BR>　　然后在提示符下键入open IP回车，这时就出现了登陆窗口，让你输入合法的用户名和密码，这里输入任何密码都是不显示的。 　　 <BR><BR>　　当输入用户名和密码都正确后就成功建立了telnet连接，这时候你就在远程主机上具有了和此用户一样的权限，利用DOS命令就可以实现你想干的事情了。这里我使用的超级管理员权限登陆的。　　 <BR><BR>　　到这里为止，网络DOS命令的介绍就告一段落了，这里介绍的目的只是给菜鸟网管一个印象，让其知道熟悉和掌握网络DOS命令的重要性。其实和网络有关的DOS命令还远不止这些，这里只是抛砖引玉，希望能对广大菜鸟网管有所帮助。学好DOS对当好网管有很大的帮助，特别的熟练掌握了一些网络的DOS命令。 <BR><BR>　　另外大家应该清楚，任何人要想进入系统，必须得有一个合法的用户名和密码（输入法漏洞差不多绝迹了吧），哪怕你拿到帐户的只有一个很小的权限，你也可以利用它来达到最后的目的。所以坚决消灭空口令，给自己的帐户加上一个强壮的密码，是最好的防御弱口令入侵的方法。 <BR><BR>　　最后，由衷的说一句，培养良好的安全意识才是最重要的。 <BR><BR>========================================= <BR>开始→运行→命令集锦 <BR>winver---------检查Windows版本 <BR>wmimgmt.msc----打开windows管理体系结构(WMI) <BR>wupdmgr--------windows更新程序 <BR>wscript--------windows脚本宿主设置 <BR>write----------写字板 <BR>winmsd---------系统信息 <BR>wiaacmgr-------扫描仪和照相机向导 <BR>winchat--------XP自带局域网聊天 <BR><BR>mem.exe--------显示内存使用情况 <BR>Msconfig.exe---系统配置实用程序 <BR>mplayer2-------简易widnows media player <BR>mspaint--------画图板 <BR>mstsc----------远程桌面连接 <BR>mplayer2-------媒体播放机 <BR>magnify--------放大镜实用程序 <BR>mmc------------打开控制台 <BR>mobsync--------同步命令 <BR><BR>dxdiag---------检查DirectX信息 <BR>drwtsn32------ 系统医生 <BR>devmgmt.msc--- 设备管理器 <BR>dfrg.msc-------磁盘碎片整理程序 <BR>diskmgmt.msc---磁盘管理实用程序 <BR>dcomcnfg-------打开系统组件服务 <BR>ddeshare-------打开DDE共享设置 <BR>dvdplay--------DVD播放器 <BR><BR>net stop messenger-----停止信使服务 <BR>net start messenger----开始信使服务 <BR>notepad--------打开记事本 <BR>nslookup-------网络管理的工具向导 <BR>ntbackup-------系统备份和还原 <BR>narrator-------屏幕"讲述人" <BR>ntmsmgr.msc----移动存储管理器 <BR>ntmsoprq.msc---移动存储管理员操作请求 <BR>netstat -an----(TC)命令检查接口 <BR><BR>syncapp--------创建一个公文包 <BR>sysedit--------系统配置编辑器 <BR>sigverif-------文件签名验证程序 <BR>sndrec32-------录音机 <BR>shrpubw--------创建共享文件夹 <BR>secpol.msc-----本地安全策略 <BR>syskey---------系统加密，一旦加密就不能解开，保护windows xp系统的双重密码 <BR>services.msc---本地服务设置 <BR>Sndvol32-------音量控制程序 <BR>sfc.exe--------系统文件检查器 <BR>sfc /scannow---windows文件保护 <BR><BR>tsshutdn-------60秒倒计时关机命令 <BR>tourstart------xp简介（安装完成后出现的漫游xp程序） <BR>taskmgr--------任务管理器 <BR><BR>eventvwr-------事件查看器 <BR>eudcedit-------造字程序 <BR>explorer-------打开资源管理器 <BR><BR><BR>packager-------对象包装程序 <BR>perfmon.msc----计算机性能监测程序 <BR>progman--------程序管理器 <BR><BR>regedit.exe----注册表 <BR>rsop.msc-------组策略结果集 <BR>regedt32-------注册表编辑器 <BR>rononce -p ----15秒关机 <BR>regsvr32 /u *.dll----停止dll文件运行 <BR>regsvr32 /u zipfldr.dll------取消ZIP支持 <BR><BR>cmd.exe--------CMD命令提示符 <BR>chkdsk.exe-----Chkdsk磁盘检查 <BR>certmgr.msc----证书管理实用程序 <BR>calc-----------启动计算器 <BR>charmap--------启动字符映射表 <BR>cliconfg-------SQL SERVER 客户端网络实用程序 <BR>Clipbrd--------剪贴板查看器 <BR>conf-----------启动netmeeting <BR>compmgmt.msc---计算机管理 <BR>cleanmgr-------垃圾整理 <BR>ciadv.msc------索引服务程序 <BR><BR>osk------------打开屏幕键盘 <BR>odbcad32-------ODBC数据源管理器 <BR>oobe/msoobe /a----检查XP是否激活 <BR>lusrmgr.msc----本机用户和组 <BR>logoff---------注销命令 <BR><BR><BR>iexpress-------木马捆绑工具，系统自带 <BR><BR>Nslookup-------IP地址侦测器 <BR><BR>fsmgmt.msc-----共享文件夹管理器 <BR><BR>utilman--------辅助工具管理器 <BR><BR>gpedit.msc-----组策略 <BR></div>]]></description>
	    <author><![CDATA[高级菜鸟]]></author>
	    <comments>http://wuxiong8665.blog.163.com/blog/static/935122009924115817717</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://wuxiong8665.blog.163.com/blog/static/935122009924115817717</guid>
    <pubDate>Sat, 24 Oct 2009 23:58:17 +0800</pubDate>
    <dcterms:modified>2009-10-24T23:58:17+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[批处理一键关闭高危有害端口完整版]]></title>	
    <link>http://wuxiong8665.blog.163.com/blog/static/935122009924112140929</link>
    <description><![CDATA[<div><P>把下面的内容复制到记事本 保存为&nbsp; 文件名.bat 双击运行即可</P>
<P><STRONG>注意：你的系统不一定支持ipseccmd，可以在cmd里试一下或者在下面代码的某句ipseccmd后另起一行加个pause看看报不报错！</STRONG></P>
<P><STRONG>如果不支持，证明你安装的系统并没有装上windows support &nbsp;tools。请到微软下载安装。</STRONG></P>
<P><STRONG>win xp2：<A href="http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&amp;FamilyId=49AE8576-9BB9-4126-9761-BA8011FABF38">http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&amp;FamilyId=49AE8576-9BB9-4126-9761-BA8011FABF38</A></STRONG></P>
<P><STRONG>win xp3：自己到微软去找吧！今天打开微软的网站特慢。（说不定就是用xp2那个，我用的xp3原版，里面有，只是默认没安装）。</STRONG></P>
<P>&nbsp;</P>
<P>echo.<BR>echo ******** 特别注意：不要关闭，请按任意键进行 Win 服务器过滤策略！ ********<BR>echo.<BR>pause&gt;nul<BR><BR>rem For PC Server<BR>ipseccmd -w REG -p "HFUT_SECU" -o -x<BR>ipseccmd -w REG -p "HFUT_SECU" -x<BR>rem ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/80" -f *+0:80:TCP -n BLOCK -x<BR>rem ipseccmd -w REG -p "HFUT_SECU" -r "Block UDP/1434" -f *+0:1434:UDP -n BLOCK -x<BR>rem ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/3389" -f *+0:3389:TCP -n BLOCK -x<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/445" -f *+0:445:TCP -n BLOCK -x &gt;nul<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block UDP/445" -f *+0:445:UDP -n BLOCK -x &gt;nul<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/1025" -f *+0:1025:TCP -n BLOCK -x &gt;nul<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block UDP/139" -f *+0:139:UDP -n BLOCK -x &gt;nul<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/1068" -f *+0:1068:TCP -n BLOCK -x &gt;nul<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/5554" -f *+0:5554:TCP -n BLOCK -x &gt;nul<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/9995" -f *+0:9995:TCP -n BLOCK -x &gt;nul<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/9996" -f *+0:9996:TCP -n BLOCK -x &gt;nul<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/6129" -f *+0:6129:TCP -n BLOCK -x &gt;nul<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block ICMP/255" -f *+0:255:ICMP -n BLOCK -x &gt;nul<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/43958" -f *+0:43958:TCP -n BLOCK -x &gt;nul<BR>echo 关闭流行危险端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/20034" -f *+0:20034:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马NetBus Pro开放的端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/1092" -f *+0:1092:TCP -n BLOCK -x &gt;nul<BR>echo 关闭蠕虫LoveGate开放的端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/3996" -f *+0:3996:TCP -n BLOCK -x &gt;nul<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/4060" -f *+0:4060:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马RemoteAnything开放的端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/4590" -f *+0:4590:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马ICQTrojan开放的端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/1080" -f *+0:1080:TCP -n BLOCK -x &gt;nul<BR>echo 禁止代理服务器扫描…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/113" -f *+0:113:TCP -n BLOCK -x &gt;nul<BR>echo 禁止Authentication Service服务…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/79" -f *+0:79:TCP -n BLOCK -x &gt;nul<BR>echo 禁止Finger扫描…………OK！<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block UDP/53" -f *+0:53:UDP -n BLOCK -x &gt;nul<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/53" -f *+0:53:TCP -n BLOCK -x &gt;nul<BR>echo 禁止区域传递（TCP），欺骗DNS（UDP）或隐藏其他的通信…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/707" -f *+0:707:TCP -n BLOCK -x &gt;nul<BR>echo 关闭nachi蠕虫病毒监听端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/808" -f *+0:808:TCP -n BLOCK -x &gt;nul<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/23" -f *+0:23:TCP -n BLOCK -x &gt;nul<BR>echo 关闭Telnet 和木马Tiny Telnet Server监听端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/520" -f *+0:520:TCP -n BLOCK -x &gt;nul<BR>echo 关闭Rip 端口…………OK！<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/1999" -f *+0:1999:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马程序BackDoor的默认服务端口…………OK！<BR>ipseccmd -w REG -p "HFUT_SECU" [size=4]-r "Block TCP/2001" -f *+0:2001:TCP -n BLOCK -x &gt;nul<BR>echo 关闭马程序黑洞2001的默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/2023" -f *+0:2023:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马程序Ripper的默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/2583" -f *+0:2583:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马程序Wincrash v2的默认服务端口…………OK！<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/3389" -f *+0:3389:TCP -n BLOCK -x &gt;nul<BR>echo 关闭Windows 的远程管理终端（远程桌面）监听端口…………OK！<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/4444" -f *+0:4444:TCP -n BLOCK -x &gt;nul<BR>echo 关闭msblast冲击波蠕虫监听端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/4899" -f *+0:4899:TCP -n BLOCK -x &gt;nul<BR>echo 关闭远程控制软件（remote administrator)服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/5800" -f *+0:5800:TCP -n BLOCK -x &gt;nul<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/5900" -f *+0:5900:TCP -n BLOCK -x &gt;nul<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/8888" -f *+0:8888:TCP -n BLOCK -x &gt;nul<BR>echo 关闭远程控制软件VNC的两个默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/6129" -f *+0:6129:TCP -n BLOCK -x &gt;nul<BR>echo 关闭Dameware服务端默认监听端口（可变！）…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/6267" -f *+0:6267:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马广外女生的默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/660" -f *+0:660:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马DeepThroat v1.0 - 3.1默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/6671" -f *+0:6671:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Indoctrination默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/6939" -f *+0:6939:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马PRIORITY默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/7306" -f *+0:7306:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马网络精灵默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/7511" -f *+0:7511:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马聪明基因的默认连接端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/7626" -f *+0:7626:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马冰河默认端口(注意可变！)…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/8011" -f *+0:8011:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马WAY2.4默认服务端口…………OK！<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/9989" -f *+0:9989:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马InIkiller默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/19191" -f *+0:19191:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马兰色火焰默认开放的telnet端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/1029" -f *+0:1029:TCP -n BLOCK -x &gt;nul<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/20168" -f *+0:20168:TCP -n BLOCK -x &gt;nul<BR>echo 关闭lovegate 蠕虫所开放的两个后门端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/23444" -f *+0:23444:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马网络公牛默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/27374" -f *+0:27374:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马SUB7默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/30100" -f *+0:30100:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马NetSphere默认的服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/31337" -f *+0:31337:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马BO2000默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/45576" -f *+0:45576:TCP -n BLOCK -x &gt;nul<BR>echo 关闭代理软件的控制端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/50766" -f *+0:50766:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Schwindler默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/61466" -f *+0:61466:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Telecommando默认服务端口…………OK!<BR><BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/31338" -f *+0:31338:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Back Orifice默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/8102" -f *+0:8102:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马网络神偷默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/2000" -f *+0:2000:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马黑洞2000默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/31339" -f *+0:31339:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马NetSpy DK默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/2001" -f *+0:2001:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马黑洞2001默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/31666" -f *+0:31666:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马BOWhack默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/34324" -f *+0:34324:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马BigGluck默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/7306" -f *+0:7306:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马网络精灵3.0，netspy3.0默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/40412" -f *+0:40412:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马The Spy默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/40421" -f *+0:40421:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Masters Paradise默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/8011" -f *+0:8011:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马wry，赖小子，火凤凰默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/40422" -f *+0:40422:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Masters Paradise 1.x默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/23444" -f *+0:23444:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Silencer默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/6400" -f *+0:6400:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马The tHing默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/1600" -f *+0:1600:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Psyber Stream Server默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/20000" -f *+0:20000:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Millenium默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/1234" -f *+0:1234:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Ultors Trojan默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/65000" -f *+0:65000:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Devil 1.03默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/1245" -f *+0:1245:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马VooDoo Doll默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/7306" -f *+0:7306:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马NetMonitor默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/1492" -f *+0:1492:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马FTP99CMP默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/1170" -f *+0:1170:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Streaming Audio Trojan默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/1999" -f *+0:1999:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马BackDoor默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/30303" -f *+0:30303:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Socket23默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/2001" -f *+0:2001:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Trojan Cow默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/6969" -f *+0:6969:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Gatecrasher默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/2023" -f *+0:2023:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Ripper默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/61466" -f *+0:61466:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Telecommando默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/2115" -f *+0:2115:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Bugs默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/12076" -f *+0:12076:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Gjamer默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/2140" -f *+0:2140:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Deep Throat默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/4950" -f *+0:4950:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马IcqTrojen默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/2140" -f *+0:2140:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马The Invasor默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/16969" -f *+0:16969:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Priotrity默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/2801" -f *+0:2801:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Phineas Phucker默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/1245" -f *+0:1245:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Vodoo默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/30129" -f *+0:30129:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Masters Paradise默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/5742" -f *+0:5742:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Wincrash默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/3700" -f *+0:3700:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Portal of Doom默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/2583" -f *+0:2583:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Wincrash2默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/4092" -f *+0:4092:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马WinCrash默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/1033" -f *+0:1033:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Netspy默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/4590" -f *+0:4590:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马ICQTrojan默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/1981" -f *+0:1981:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马ShockRave默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/5000" -f *+0:5000:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Sockets de Troie默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/555" -f *+0:555:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Stealth Spy默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/5001" -f *+0:5001:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Sockets de Troie 1.x默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/2023" -f *+0:2023:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Pass Ripper默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/5321" -f *+0:5321:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Firehotcker默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/666" -f *+0:666:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Attack FTP默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/5400" -f *+0:5400:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Blade Runner默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/21554" -f *+0:21554:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马GirlFriend默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/5401" -f *+0:5401:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Blade Runner 1.x默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/50766" -f *+0:50766:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Fore Schwindler默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/5402" -f *+0:5402:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Blade Runner 2.x默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/34324" -f *+0:34324:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Tiny Telnet Server默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/5569" -f *+0:5569:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Robo-Hack默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/30999" -f *+0:30999:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Kuang默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/6670" -f *+0:6670:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马DeepThroat默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/11000" -f *+0:11000:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Senna Spy Trojans默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/6771" -f *+0:6771:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马DeepThroat默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/23456" -f *+0:23456:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马WhackJob默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/6969" -f *+0:6969:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马GateCrasher默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/555" -f *+0:555:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Phase0默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/6969" -f *+0:6969:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Priority默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/5400" -f *+0:5400:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Blade Runner默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/7000" -f *+0:7000:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Remote Grab默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/4950" -f *+0:4950:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马IcqTrojan默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/7300" -f *+0:7300:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马NetMonitor默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/9989" -f *+0:9989:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马InIkiller默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/7301" -f *+0:7301:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马NetMonitor 1.x默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/9872" -f *+0:9872:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Portal Of Doom默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/7306" -f *+0:7306:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马NetMonitor 2.x默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/11223" -f *+0:11223:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Progenic Trojan默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/7307" -f *+0:7307:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马NetMonitor 3.x默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/1999" -f *+0:1999:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马BackDoor默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/5800" -f *+0:5800:TCP -n BLOCK -x &gt;nul<BR>echo 关闭远程控制软件VNC默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/5900" -f *+0:5900:TCP -n BLOCK -x &gt;nul<BR>echo 关闭远程控制软件VNC默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/22222" -f *+0:22222:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Prosiak 0.47默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/7626" -f *+0:7626:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马冰河默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/4444" -f *+0:4444:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马msblast默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/7308" -f *+0:7308:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马NetMonitor 4.x默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/6129" -f *+0:6129:TCP -n BLOCK -x &gt;nul<BR>echo 关闭远程控制软件（dameware nt utilities)默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/2023" -f *+0:2023:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Ripper默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/1245" -f *+0:1245:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马VooDoo Doll默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/121" -f *+0:121:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马BO jammerkillahV默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/456" -f *+0:456:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Hackers Paradise默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/555" -f *+0:555:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Stealth Spy默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/666" -f *+0:666:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Satanz Backdoor默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/1001" -f *+0:1001:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Silencer默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/1033" -f *+0:1033:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Netspy默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/7000" -f *+0:7000:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Remote Grab默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/7300 " -f *+0:7300:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马NetMonitor默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/23456 " -f *+0:23456:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Ugly FTP默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/23456 " -f *+0:23456:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Ugly FTP默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/30100 " -f *+0:30100:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马NetSphere默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/9872" -f *+0:9872:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Portal of Doom默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/9899" -f *+0:9899:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马iNi-Killer默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/50505" -f *+0:50505:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Sockets de Troie默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/6939" -f *+0:6939:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Indoctrination默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/11000" -f *+0:11000:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Senna Spy默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/12223" -f *+0:12223:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Hack?99 KeyLogger默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/12362" -f *+0:12362:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Whack-a-mole 1.x默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/20000" -f *+0:20000:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Millenium默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/2583" -f *+0:2583:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Wincrash v2默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/53001" -f *+0:53001:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Remote Windows Shutdown默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/7789" -f *+0:7789:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马ICKiller默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/40426" -f *+0:40426:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Masters Paradise 3.x默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/5569" -f *+0:5569:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马RoboHack默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/8000" -f *+0:8000:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马huigezi默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/9872" -f *+0:9872:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马Portal of Doom默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/2005" -f *+0:2005:TCP -n BLOCK -x &gt;nul<BR>echo 关闭木马黑洞2005默认服务端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/2000" -f *+0:2000:TCP -n BLOCK -x &gt;nul<BR>echo 关闭彩虹桥1.2默认端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -r "Block TCP/9999" -f *+0:9999:TCP -n BLOCK -x &gt;nul<BR>echo 关闭huigezi映射默认端口…………OK!<BR>ipseccmd -w REG -p "HFUT_SECU" -x &gt;nul<BR>gpupdate &gt;nul<BR>echo.<BR>echo “拒绝服务”安全协议全部设置完毕！您的系统可以免受流行蠕虫病毒及典型木马后门的侵扰！<BR>echo “拒绝服务”提醒您注意升级操作系统和杀毒软件！<BR>echo “拒绝服务”版网络安全协议你已经完全设置完成了！请重新启动你的计算机！<BR>echo. <BR>echo 请按任意键退出！</P></div>]]></description>
	    <author><![CDATA[高级菜鸟]]></author>
	    <comments>http://wuxiong8665.blog.163.com/blog/static/935122009924112140929</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://wuxiong8665.blog.163.com/blog/static/935122009924112140929</guid>
    <pubDate>Sat, 24 Oct 2009 23:21:40 +0800</pubDate>
    <dcterms:modified>2009-10-25T11:50:54+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[object sender与EventArgs e【转】]]></title>	
    <link>http://wuxiong8665.blog.163.com/blog/static/935122009921115151467</link>
    <description><![CDATA[<div><P style="TEXT-INDENT: 2em">说的通俗一些，就是： </P>
<P style="TEXT-INDENT: 2em">有一个叫做EventHandler 的家伙，他会告诉你（主程序），有一些事情发生了：这个事情是谁导致的呢？是某个object类型对象导致的，它用Source或Sender来表示。这个事情是什么事呢？e的内容就是事情的内容了。 </P>
<P style="TEXT-INDENT: 2em">至于Source和Sender，没有区别，你想用哪个就用哪个，其实都是一样的。 </P>
<P style="TEXT-INDENT: 2em"><BR>所以，我们在程序中的事件处理函数就是依赖于这个东西实现的：比方说你点了一个按钮，程序怎么知道应该用哪个函数来处理这个动作呢？那么EventHandler 这个家伙会告诉程序："button1(sender)被点击(e)了，请调用对应的处理函数"。当然这个函数是谁，这个函数要做什么，是由你自己写的。 </P>
<P style="TEXT-INDENT: 2em">再深入一层，这个过程实际上就是：你的动作被windows捕获，windows把这个动作作为系统消息发送给程序（可以看message结构），程序从自己的消息队列中不断的取出消息，并在消息循环中寻找对应的处理方式，这时message结构中的类似于sender和e的东东就起到了引导程序使用正确的处理函数的作用。 </P>
<P style="TEXT-INDENT: 2em">归根究底，这个sender和e及其一整套的处理方式，只不过是windows消息机制的另外一种表现罢了 ^_^</P>
<P style="TEXT-INDENT: 2em"><BR>是C#.NET的.<BR>object sender 发出事件的对象 <BR>System.EventArgs e 对象中的数据 </P>
<P style="TEXT-INDENT: 2em">如果是按钮button的话，那sender就是那个button, <BR>e是事件参数，在某些事件里，e用处不大，比如在MouseEventArgs的Mouse事件中，可以看到e包括mouse的坐标值等，以供你的程序使用。</P>
<P style="TEXT-INDENT: 2em">具体的说来，对于系统提供的类的事件，Sender参数只是简单地传递了指向引发事件的那个类的实例的一个引用，而e是EventArgs类型的参数，它包含了事件所携带的信息。</P>
<P style="TEXT-INDENT: 2em">至于第二个问题，我不是很明白“我看到在很多事件代码中那些代码都是照写(object sender, System.EventArgs e)，根本就不用改变sender和e，参数不是应该随实际情况变化的吗？”这句话的意思，比如说一个按钮控件，当它的单击事件被引发时，系统会自动把这个按钮对象作一个类型强制转换然后赋值给Sender，然后传递e。之所以都是这个形式是因为大多数情况下这些简单的事件不需要传递特殊的信息，您可以看一下KeyPress事件，这个事件就包含一个KeyPressEventArgs，包含了按键的信息。</P>
<P style="TEXT-INDENT: 2em">另外需要明确的一个概念就是类似这样形式的方法：<BR>private void Button_Click(object sender, EventArgs e)<BR>这样的方法称为事件处理方法，它类似于C语言中的事件处理函数，它是在运行时由系统调用的，因此它的参数不会变化，就好像我们写方法时的方法名一样。</P>
<P style="TEXT-INDENT: 2em">&nbsp;</P>
<P style="TEXT-INDENT: 2em">一、了解C#中的预定义事件处理机制</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; 在写代码前我们先来熟悉.net框架中和事件有关的类和委托，了解C#中预定义事件的处理。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; EventArgs是包含事件数据的类的基类,用于传递事件的细节。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; EventHandler是一个委托声明如下</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public delegate void EventHandler( object sender , EventArgs e )</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; 注意这里的参数,前者是一个对象（其实这里传递的是对象的引用，如果是button1的click事件则sender就是button1），后面是包含事件数据的类的基类。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; 下面我们研究一下Button类看看其中的事件声明（使用WinCV工具查看），以Click事件为例。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public event EventHandler Click;</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; 这里定义了一个EventHandler类型的事件Click</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; 前面的内容都是C#在类库中已经为我们定义好了的。下面我们来看编程时产生的代码。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private void button1_Click(object sender, System.EventArgs e)</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; 这是我们和button1_click事件所对应的方法。注意方法的参数符合委托中的签名（既参数列表）。那我们怎么把这个方法和事件联系起来呢，请看下面的代码。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.button1.Click += new System.EventHandler(this.button1_Click);</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; 把this.button1_Click方法绑定到this.button1.Click事件。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; 下面我们研究一下C#事件处理的工作流程，首先系统会在为我们创建一个在后台监听事件的对象(如果是 button1的事件那么监听事件的就是button1)，这个对象用来产生事件，如果有某个用户事件发生则产生对应的应用程序事件，然后执行订阅了事件 的所有方法。</P>
<P style="TEXT-INDENT: 2em">二、简单的自定义事件(1)</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; 首先我们需要定义一个类来监听客户端事件，这里我们监听键盘的输入。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; 定义一个委托。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public delegate void UserRequest(object sender,EventArgs e);</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; 前面的object用来传递事件的发生者，后面的EventArgs用来传递事件的细节，现在暂时没什么用处，一会后面的例子中将使用。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; 下面定义一个此委托类型类型的事件</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public event UserRequest On<wbr>UserRequest;</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; 下面我们来做一个死循环</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void Run()</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; bool finished=false;</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; do</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; {</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; if (Console.ReadLine()=="h")</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; {</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; On<wbr>UserRequest(this,new EventArgs());</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; } </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; }while(!finished);</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; 此代码不断的要求用户输入字符，如果输入的结果是h,则触发On<wbr>UserRequest事件，事件的触发者是本身（this），事件细节无(没有传递任何参数的EventArgs实例)。我们给这个类取名为UserInputMonitor。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 下面我们要做的是定义客户端的类</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; 首先得实例化UserInputMonitor类</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UserInputMonitor monitor=new UserInputMonitor();</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; 然后我们定义一个方法。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private void ShowMessage(object sender,EventArgs e)</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine("HaHa!!");</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最后要做的是把这个方法和事件联系起来（订阅事件），我们把它写到库户端类的构造函数里。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; Client(UserInputMonitor m)</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m.On<wbr>UserRequest+=new UserInputMonitor.UserRequest(this.ShowMessage);</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //m.On<wbr>UserRequest+=new m.UserRequest(this.ShowMessage);</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //注意这种写法是错误的，因为委托是静态的</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 下面创建客户端的实例。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new Client(monitor);</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对了，别忘了让monitor开始监听事件。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; monitor.run();</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 大功告成，代码如下： 
</P><BLOCKQUOTE>
<BLOCKQUOTE>
<P></P>
<P style="TEXT-INDENT: 2em">using System;</P>
<P style="TEXT-INDENT: 2em">class UserInputMonitor</P>
<P style="TEXT-INDENT: 2em">{</P>
<P style="TEXT-INDENT: 2em">public delegate void UserRequest(object sender,EventArgs e);</P>
<P style="TEXT-INDENT: 2em">//定义委托</P>
<P style="TEXT-INDENT: 2em">public event UserRequest On<wbr>UserRequest;</P>
<P style="TEXT-INDENT: 2em">//此委托类型类型的事件</P>
<P style="TEXT-INDENT: 2em">public void Run()</P>
<P style="TEXT-INDENT: 2em">{</P>
<P style="TEXT-INDENT: 2em">bool finished=false;</P>
<P style="TEXT-INDENT: 2em">do</P>
<P style="TEXT-INDENT: 2em">{</P>
<P style="TEXT-INDENT: 2em">if (Console.ReadLine()=="h")</P>
<P style="TEXT-INDENT: 2em">{</P>
<P style="TEXT-INDENT: 2em">On<wbr>UserRequest(this,new EventArgs());</P>
<P style="TEXT-INDENT: 2em">} </P>
<P style="TEXT-INDENT: 2em">}while(!finished);</P>
<P style="TEXT-INDENT: 2em">}</P>
<P style="TEXT-INDENT: 2em">}</P>
<P style="TEXT-INDENT: 2em">public class Client</P>
<P style="TEXT-INDENT: 2em">{</P>
<P style="TEXT-INDENT: 2em">public static void Main()</P>
<P style="TEXT-INDENT: 2em">{</P>
<P style="TEXT-INDENT: 2em">UserInputMonitor monitor=new UserInputMonitor();</P>
<P style="TEXT-INDENT: 2em">new Client(monitor);</P>
<P style="TEXT-INDENT: 2em">monitor.Run();</P>
<P style="TEXT-INDENT: 2em">}</P>
<P style="TEXT-INDENT: 2em">private void ShowMessage(object sender,EventArgs e)</P>
<P style="TEXT-INDENT: 2em">{</P>
<P style="TEXT-INDENT: 2em">Console.WriteLine("HaHa!!");</P>
<P style="TEXT-INDENT: 2em">}</P>
<P style="TEXT-INDENT: 2em">Client(UserInputMonitor m)</P>
<P style="TEXT-INDENT: 2em">{</P>
<P style="TEXT-INDENT: 2em">m.On<wbr>UserRequest+=new UserInputMonitor.UserRequest(this.ShowMessage);</P>
<P style="TEXT-INDENT: 2em">//m.On<wbr>UserRequest+=new m.UserRequest(this.ShowMessage);</P>
<P style="TEXT-INDENT: 2em">//注意这种写法是错误的，因为委托是静态的</P>
<P style="TEXT-INDENT: 2em">}</P>
<P style="TEXT-INDENT: 2em">}</P></BLOCKQUOTE></BLOCKQUOTE>
<P></P>
<P style="TEXT-INDENT: 2em">三、进一步研究C#中的预定义事件处理机制</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; 可能大家发现在C#中有些事件和前面的似乎不太一样。例如</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.textBox1.KeyPress+=newSystem.Windows.Forms.KeyPressEventHandler(this.textBox1_KeyPress);</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; 这里使用了KeyPressEventArgs而不是EventArgs作为参数。这里使用了KeyEventHandler委托，而不是EventHandler委托。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;KeyPressEventArgs是EventArgs的派生类，而KeyEventHandler的声明如下</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public delegate void KeyEventHandler( object sender , KeyEventArgs e ); </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 是参数为KeyEventArgs的委托。那为什么KeyPress事件要这么做呢，我们可以从两个类的构造函数来找答案。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public EventArgs();</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public KeyPressEventArgs(char keyChar);</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; 这里的keyData是什么，是用来传递我们按下了哪个键的，哈。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; 我在KeyEventArgs中又发现了属性</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public char KeyChar { get; }</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; 进一步证明了我的理论。下面我们来做一个类似的例子来帮助理解。</P>
<P style="TEXT-INDENT: 2em">四、简单的自定义事件(2)</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 拿我们上面做的例子来改。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp; 我们也定义一个EventArgs（类似KeyEventArgs）取名MyEventArgs,定义一个构造函数public MyEventArgs(char keyChar),同样我们也设置相应的属性。代码如下 
</P><BLOCKQUOTE>
<P></P>
<P style="TEXT-INDENT: 2em">using System;</P>
<P style="TEXT-INDENT: 2em">class MyMyEventArgs:EventArgs</P>
<P style="TEXT-INDENT: 2em">{</P>
<P style="TEXT-INDENT: 2em">private char keyChar;</P>
<P style="TEXT-INDENT: 2em">public MyMyEventArgs(char keyChar)</P>
<P style="TEXT-INDENT: 2em">{</P>
<P style="TEXT-INDENT: 2em">this.keychar=keychar;</P>
<P style="TEXT-INDENT: 2em">}</P>
<P style="TEXT-INDENT: 2em">public char KeyChar</P>
<P style="TEXT-INDENT: 2em">{</P>
<P style="TEXT-INDENT: 2em">get</P>
<P style="TEXT-INDENT: 2em">{</P>
<P style="TEXT-INDENT: 2em">return keyChar;</P>
<P style="TEXT-INDENT: 2em">}</P>
<P style="TEXT-INDENT: 2em">}</P>
<P style="TEXT-INDENT: 2em">}</P></BLOCKQUOTE>
<P></P>
<P style="TEXT-INDENT: 2em">因为现在要监听多个键了，我们得改写监听器的类中的do...while部分。改写委托，改写客户端传递的参数。好了最终代码如下，好累 
</P><BLOCKQUOTE>
<P></P>
<P style="TEXT-INDENT: 2em">using System;</P>
<P style="TEXT-INDENT: 2em">class MyEventArgs:EventArgs</P>
<P style="TEXT-INDENT: 2em">{</P>
<P style="TEXT-INDENT: 2em">private char keyChar;</P>
<P style="TEXT-INDENT: 2em">public MyEventArgs(char keyChar)</P>
<P style="TEXT-INDENT: 2em">{</P>
<P style="TEXT-INDENT: 2em">this.keyChar=keyChar;</P>
<P style="TEXT-INDENT: 2em">}</P>
<P style="TEXT-INDENT: 2em">public char KeyChar</P>
<P style="TEXT-INDENT: 2em">{</P>
<P style="TEXT-INDENT: 2em">get</P>
<P style="TEXT-INDENT: 2em">{</P>
<P style="TEXT-INDENT: 2em">return keyChar;</P>
<P style="TEXT-INDENT: 2em">}</P>
<P style="TEXT-INDENT: 2em">}</P>
<P style="TEXT-INDENT: 2em">}</P>
<P style="TEXT-INDENT: 2em">class UserInputMonitor</P>
<P style="TEXT-INDENT: 2em">{</P>
<P style="TEXT-INDENT: 2em">public delegate void UserRequest(object sender,MyEventArgs e);</P>
<P style="TEXT-INDENT: 2em">//定义委托</P>
<P style="TEXT-INDENT: 2em">public event UserRequest On<wbr>UserRequest;</P>
<P style="TEXT-INDENT: 2em">//此委托类型类型的事件</P>
<P style="TEXT-INDENT: 2em">public void Run()</P>
<P style="TEXT-INDENT: 2em">{</P>
<P style="TEXT-INDENT: 2em">bool finished=false;</P>
<P style="TEXT-INDENT: 2em">do</P>
<P style="TEXT-INDENT: 2em">{</P>
<P style="TEXT-INDENT: 2em">string inputString= Console.ReadLine();</P>
<P style="TEXT-INDENT: 2em">if (inputString!="") </P>
<P style="TEXT-INDENT: 2em">On<wbr>UserRequest(this,new MyEventArgs(inputString[0]));</P>
<P style="TEXT-INDENT: 2em">}while(!finished);</P>
<P style="TEXT-INDENT: 2em">}</P>
<P style="TEXT-INDENT: 2em">}</P>
<P style="TEXT-INDENT: 2em">public class Client</P>
<P style="TEXT-INDENT: 2em">{</P>
<P style="TEXT-INDENT: 2em">public static void Main()</P>
<P style="TEXT-INDENT: 2em">{</P>
<P style="TEXT-INDENT: 2em">UserInputMonitor monitor=new UserInputMonitor();</P>
<P style="TEXT-INDENT: 2em">new Client(monitor);</P>
<P style="TEXT-INDENT: 2em">monitor.Run();</P>
<P style="TEXT-INDENT: 2em">}</P>
<P style="TEXT-INDENT: 2em">private void ShowMessage(object sender,MyEventArgs e)</P>
<P style="TEXT-INDENT: 2em">{</P>
<P style="TEXT-INDENT: 2em">Console.WriteLine("捕捉到：{0}",e.KeyChar);</P>
<P style="TEXT-INDENT: 2em">}</P>
<P style="TEXT-INDENT: 2em">Client(UserInputMonitor m)</P>
<P style="TEXT-INDENT: 2em">{</P>
<P style="TEXT-INDENT: 2em">m.On<wbr>UserRequest+=new UserInputMonitor.UserRequest(this.ShowMessage);</P>
<P style="TEXT-INDENT: 2em">//m.On<wbr>UserRequest+=new m.UserRequest(this.ShowMessage);</P>
<P style="TEXT-INDENT: 2em">//注意这种写法是错误的，因为委托是静态的</P>
<P style="TEXT-INDENT: 2em">}</P>
<P style="TEXT-INDENT: 2em">}</P></BLOCKQUOTE></div>]]></description>
	    <author><![CDATA[高级菜鸟]]></author>
	    <comments>http://wuxiong8665.blog.163.com/blog/static/935122009921115151467</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://wuxiong8665.blog.163.com/blog/static/935122009921115151467</guid>
    <pubDate>Wed, 21 Oct 2009 23:51:51 +0800</pubDate>
    <dcterms:modified>2009-10-21T23:51:51+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[SQL2000 系统数据库及实例数据库Northwind和pubs介绍]]></title>	
    <link>http://wuxiong8665.blog.163.com/blog/static/93512200992110117471</link>
    <description><![CDATA[<div><P><FONT size=3>&nbsp;</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>SQL Server安装4个系统数据库。它们分别是master数据库、model数据库、tempdb数据库和msdb数据库。</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>这些数据库是SQL Server的心脏和灵魂。</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>另外，还安装了两个实例数据库，分别是：Northwind和pubs</FONT></P>
<P style="TEXT-INDENT: 2em">
<TABLE border=1 cellSpacing=0 cellPadding=0>
<TBODY>
<TR>
<TD rowSpan=4 width=31>
<P></P>
<P style="TEXT-INDENT: 2em">系统数据库</P>
<P style="TEXT-INDENT: 2em">4个</P>
<P style="TEXT-INDENT: 2em"></P></TD>
<TD width=120>
<P></P>
<P style="TEXT-INDENT: 2em">master</P>
<P style="TEXT-INDENT: 2em">数据库</P>
<P style="TEXT-INDENT: 2em"></P></TD>
<TD vAlign=top width=416>
<P></P>
<P style="TEXT-INDENT: 2em">master数据库控制SQL Server的所有方面。这个数据库中包括所有的配置信息、用户登录信息、当前正在服务器中运行的过程的信息。</P></TD></TR>
<TR>
<TD width=120>
<P></P>
<P style="TEXT-INDENT: 2em">model</P>
<P style="TEXT-INDENT: 2em">数据库</P>
<P style="TEXT-INDENT: 2em"></P></TD>
<TD vAlign=top width=416>
<P></P>
<P style="TEXT-INDENT: 2em">model数据库是建立所有用户数据库时的模板。当你建立一个新数据库时，SQL Server会把model数据库中的所有对象建立一份拷贝并移到新数据库中。在模板对象被拷贝到新的用户数据库中之后，该数据库的所有多余空间都将被空页填满。</P></TD></TR>
<TR>
<TD width=120>
<P></P>
<P style="TEXT-INDENT: 2em">tempdb</P>
<P style="TEXT-INDENT: 2em">数据库</P>
<P style="TEXT-INDENT: 2em"></P></TD>
<TD vAlign=top width=416>
<P></P>
<P style="TEXT-INDENT: 2em">tempdb数据库是一个非常特殊的数据库，供所有来访问你的SQL Server的用户使用。这个库用来保存所有的临时表、存储过程和其他SQL Server建立的临时用的东西。例如，排序时要用到tempdb数据库。数据被放进tempdb数据库，排完序后再把结果返回给用户。每次SQL Server重新启动，它都会清空tempdb数据库并重建。永远不要在tempdb数据库建立需要永久保存的表。</P></TD></TR>
<TR>
<TD width=120>
<P></P>
<P style="TEXT-INDENT: 2em">msdb</P>
<P style="TEXT-INDENT: 2em">数据库</P>
<P style="TEXT-INDENT: 2em"></P></TD>
<TD vAlign=top width=416>
<P></P>
<P style="TEXT-INDENT: 2em">msdb数据库是SQL Server中的一个特例。如果你查看这个数据库的实际定义，会发现它其实是一个用户数据库。不同之处是SQL Server拿这个数据库来做什么。所有的任务调度、报警、操作员都存储在msdb数据库中。该库的另一个功能是用来存储所有备份历史。SQL Server Agent将会使用这个库。</P></TD></TR>
<TR>
<TD rowSpan=2 width=31>
<P style="TEXT-INDENT: 2em">实例数据库</P>
<P style="TEXT-INDENT: 2em">2个</P>
<P style="TEXT-INDENT: 2em"></P></TD>
<TD width=120>
<P></P>
<P style="TEXT-INDENT: 2em">Northwind</P>
<P style="TEXT-INDENT: 2em">示例数据库</P>
<P style="TEXT-INDENT: 2em"></P></TD>
<TD vAlign=top width=416>
<P></P>
<P style="TEXT-INDENT: 2em">Northwind Traders 示例数据库包含一个名为 Northwind Traders 的虚构公司的销售数据，该公司从事世界各地的特产食品进出口贸易。</P>
<P style="TEXT-INDENT: 2em">如果对 Northwind 数据库进行了更改，可通过运行 Microsoft&reg; SQL Server? 安装的 Install 目录下的脚本将其重新安装： </P>
<OL type=1>
<LI>在命令提示符下，更改到 Mssql7"Install 目录。 </LI>
<LI>使用 osql 实用工具运行 Instnwnd.sql 脚本： </LI></OL>
<P></P>
<P style="TEXT-INDENT: 2em">&lt;!--[if !supportLists]--&gt;</P>
<P style="TEXT-INDENT: 2em">3.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </P>
<P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em">&lt;!--[endif]--&gt;</P>
<P style="TEXT-INDENT: 2em">osql/Usa /Psapassword </P>
<P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em">/Sservername /iinstnwnd.sql /oinstnwnd.rpt</P>
<P style="TEXT-INDENT: 2em"></P>
<OL type=1 start=4>
<LI>检查 Instnwnd.rpt 中报告的错误。 </LI></OL>
<P></P>
<P style="TEXT-INDENT: 2em">数据库创建于 SQL Server 安装程序的 Da<WBR>ta 目录下。</P>
<P style="TEXT-INDENT: 2em">&nbsp;</P></TD></TR>
<TR>
<TD width=120>
<P></P>
<P style="TEXT-INDENT: 2em">pubs</P>
<P style="TEXT-INDENT: 2em">示例数据库</P>
<P style="TEXT-INDENT: 2em"></P></TD>
<TD vAlign=top width=416>
<P></P>
<P style="TEXT-INDENT: 2em">pubs 示例数据库以一个图书出版公司为模型，用于演示 Microsoft&reg; SQL Server? 数据库中可用的许多选项。该数据库及其中的表经常在文档内容所介绍的示例中使用。</P>
<P style="TEXT-INDENT: 2em">如果更改了 pubs 数据库，可以使用 SQL Server 安装中 Install 目录下的文件重新进行安装。安装过程需要两步： </P>
<OL type=1>
<LI>从命令提示行使用 osql 实用工具运行 Instpubs.sql 脚本。本操作将除去现有的 pubs 数据库，创建新的 pubs 数据库并定义其中的所有对象。 </LI>
<LI>从命令提示行运行 Pubimage.bat。本操作将在 pub_info 表中插入 image 值。 </LI></OL></TD></TR></TBODY></TABLE></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>&nbsp;&nbsp;&nbsp; </FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>tempdb数据库</FONT></P>
<BLOCKQUOTE>
<P style="TEXT-INDENT: 2em"><FONT size=3>&nbsp;&nbsp;&nbsp; tempdb 数据库保存所有的临时表和临时存储过程。它还满足任何其它的临时存储要求，例如存储SQL Server生成的工作表。tempdb数据库是全局资源，所有连接到系统的用户的临时表和存储过程都存储在该数据库中。tempdb数据库在SQL Server每次启动时都重新创建，因此该数据库在系统启动时总是干净的。临时表和存储过程在连接断开时自动除去，而且当系统关闭后将没有任何连接处于活 动状态，因此tempdb数据库中没有任何内容会从SQL Server的一个会话保存到另一个会话。&nbsp;&nbsp; </FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>&nbsp;&nbsp;&nbsp; 默认情况下，在SQL Server在运行时tempdb数据库会根据需要自动增长。不过，与其它数据库不同，每次启动数据库引擎时，它会重置为其初始大小。如果为tempdb 数据库定义的大小较小，则每次重新启动SQL Server时，将tempdb数据库的大小自动增加到支持工作负荷所需的大小这一工作可能会成为系统处理负荷的一部分。为避免这种开销，可以使用 Alter DATABASE增加tempdb数据库的大小。</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>SQL Server 2000数据库安装完毕之后，系统会自带6个数据库，可是有的时候安装完毕之后并不是自带6个数据库，而是4个数据库，Northwind和pubs数据库没有。下面就介绍安装这两个数据库的方法。</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>&nbsp;&nbsp;&nbsp; 1、从微软官方网站上下载Northwind and pubs Sample Databases for SQL Server 2000，下载地址如下：</FONT></P>
<P style="TEXT-INDENT: 2em"><A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=06616212-0356-46A0-8DA2-EEBC53A68034&amp;displaylang=en"><FONT size=3>http://www.microsoft.com/downloads/details.aspx?FamilyID=06616212-0356-46A0-8DA2-EEBC53A68034&amp;displaylang=en</FONT></A></P>
<P style="TEXT-INDENT: 2em"><FONT size=3>&nbsp;&nbsp;&nbsp; 2、双击下载的文件执行解压缩操作后请到c盘的sql server 2000 sample databases目录下执行instnwnd.sql安装Northwind数据库，执行instpubs.sql安装pubs数据库。</FONT></P>
<P style="TEXT-INDENT: 2em" align=right><FONT size=3>&nbsp;</FONT></P>
<P style="TEXT-INDENT: 2em"><FONT size=3></FONT></P></BLOCKQUOTE></div>]]></description>
	    <author><![CDATA[高级菜鸟]]></author>
	    <comments>http://wuxiong8665.blog.163.com/blog/static/93512200992110117471</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://wuxiong8665.blog.163.com/blog/static/93512200992110117471</guid>
    <pubDate>Wed, 21 Oct 2009 22:11:07 +0800</pubDate>
    <dcterms:modified>2009-10-21T22:24:59+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[CMD 批处理创建文件的N种方式]]></title>	
    <link>http://wuxiong8665.blog.163.com/blog/static/93512200991894718851</link>
    <description><![CDATA[<div><P>type nul&gt;a.exe </P>
<P>cd &gt;a.exe </P>
<P>echo. &gt;a.exe</P>
<P>cd. &gt;a.exe </P>
<P>echo. &gt;a.exe</P>
<P>&gt;号表示覆写，&gt;改为&gt;&gt;表示追加</P>
<P>
</P><HR>

<P></P>
<P>创建同时写入内容</P>
<P>echo 内容&gt;a.txt</P></div>]]></description>
	    <author><![CDATA[高级菜鸟]]></author>
	    <comments>http://wuxiong8665.blog.163.com/blog/static/93512200991894718851</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://wuxiong8665.blog.163.com/blog/static/93512200991894718851</guid>
    <pubDate>Sun, 18 Oct 2009 21:47:18 +0800</pubDate>
    <dcterms:modified>2009-10-18T21:47:18+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[BOM是什么，有什么用？]]></title>	
    <link>http://wuxiong8665.blog.163.com/blog/static/935122009918018359</link>
    <description><![CDATA[<div><P style="TEXT-INDENT: 2em">一段utf8程序在我用记事本更改为gbk再改为utf8后就不能正常运行了，最后发现是BOM问题，用zend删掉文件最开始出的一个小点（应该就是BOM）后解决。</P>
<P style="TEXT-INDENT: 2em">BOM是什么意思?</P>
<P style="TEXT-INDENT: 2em">BOM是“Byte Order Mark”的缩写，用于标记文件的编码。并不是所有的文本编辑工具都能识别BOM标记.在用记事本之类的程序将文本文件保存为UTF-8格式时，记事本会在文件头前面加上几个不可见的字符（EF BB BF），就是所谓的BOM（Byte Order Mark）。</P>
<P style="TEXT-INDENT: 2em">1） notepad ： 可以自动识别出没有带 bom 的 utf-8 编码格式文件，但不可以控制保存文件时是否添加 bom ， 如果保存文件，那么会统一添加 bom 。</P>
<P style="TEXT-INDENT: 2em">2）editplus ： 不能自动识别出没有 bom 的 utf-8 编码格式文件，保存文件为 utf-8 时会自动添加 bom</P>
<P style="TEXT-INDENT: 2em">3） UltraEdit ： 对于字符编码的功能最为强大， 可以自动识别带 bom 和不带 bom 的 utf-8 文件 （可以配置） ； 保存的时候可以通过配置选择是否添加 bom.</P></div>]]></description>
	    <author><![CDATA[高级菜鸟]]></author>
	    <comments>http://wuxiong8665.blog.163.com/blog/static/935122009918018359</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://wuxiong8665.blog.163.com/blog/static/935122009918018359</guid>
    <pubDate>Sun, 18 Oct 2009 12:18:35 +0800</pubDate>
    <dcterms:modified>2009-10-18T12:18:35+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[ASP.NET中bin app_code app_data等文件夹的作用]]></title>	
    <link>http://wuxiong8665.blog.163.com/blog/static/93512200991811400157</link>
    <description><![CDATA[<div><STRONG>
<P>&nbsp;</P>
<P><FONT size=3>概览：</FONT></P>
<P>
<TABLE style="BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; BORDER-TOP: 1px solid; BORDER-RIGHT: 1px solid" border=1 cellSpacing=0 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD>&nbsp;文件夹名称</TD>
<TD>&nbsp;&nbsp; 文件类型</TD>
<TD>&nbsp;&nbsp; 注&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 释<BR></TD></TR>
<TR>
<TD>&nbsp;Bin<BR></TD>
<TD>&nbsp; .dll<BR></TD>
<TD>&nbsp;&nbsp;&nbsp; 包含应用程序所需的任何预生成的程序集<BR></TD></TR>
<TR>
<TD>&nbsp;App_Browsers</TD>
<TD>&nbsp;&nbsp; .browser<BR></TD>
<TD>&nbsp;&nbsp; 包含应用程序特有的浏览器定义文件，ASP.NET用它来识别各浏览器及确定它们的功能</TD></TR>
<TR>
<TD>&nbsp;App_Co<WBR>de</TD>
<TD>&nbsp;&nbsp; .cs、.vb、.xsd、自定义的文件类型<BR></TD>
<TD>&nbsp;&nbsp; 包含作为应用程序的一部分编译的类的源文件。当页面被请求时，ASP.NET编译该文件夹中的代码。该文件夹中的代码在应用程序中自动地被引用<BR></TD></TR>
<TR>
<TD>&nbsp;App_Da<WBR>ta<BR></TD>
<TD>&nbsp;&nbsp; .mdb、.mdf、.xml</TD>
<TD>&nbsp; 包含Microsoft&nbsp; Office&nbsp; Access和SQL&nbsp; Express文件以及XML文件或其他数据存储<BR></TD></TR>
<TR>
<TD>&nbsp;App_GlobalResources<BR></TD>
<TD>&nbsp;&nbsp; .resx</TD>
<TD>&nbsp;&nbsp; 包含在本地化应用程序中以编程方式使用的资源文件</TD></TR>
<TR>
<TD>&nbsp;App_LocalResources</TD>
<TD>&nbsp;&nbsp; .resx</TD>
<TD>&nbsp;&nbsp; 包含页面范围的资源文件</TD></TR>
<TR>
<TD>&nbsp;App_Themes</TD>
<TD>&nbsp;&nbsp; .skin、.CSS、.xsl、附属文件</TD>
<TD>&nbsp;&nbsp; 包含一组定义ASP.NET页面和控件外观的文件<BR></TD></TR>
<TR>
<TD>&nbsp;App_WebReferences<BR></TD>
<TD>&nbsp;&nbsp; .wsdl</TD>
<TD>&nbsp;&nbsp; 包含用以生成代理类的WSDL文件，以及与在应用程序中使用Web服务有关的其他文件</TD></TR></TBODY></TABLE></P></STRONG>
<P><STRONG><FONT size=3></FONT></STRONG>&nbsp;</P>
<P><STRONG><FONT size=3>详述</FONT></STRONG></P>
<P><FONT size=3>
</FONT></P><HR>

<P></P>
<P><STRONG><FONT size=3>1.&nbsp; Bin文件夹</FONT></STRONG></P>
<P><FONT size=3>&nbsp;Bin文件夹包含应用程序所需的，用于控件、组件或者需要引用的任何其他代码的可部署程序集。该目录中存在的任何.dll文&nbsp; 件将自动地链接到应用程序。如果在该文件夹中留有不用的或过期的文件，则可能出现“二义性引用(ambiguous&nbsp; reference)”异常的风险。换句话说，如果两个不同的程序集定义相同的类(相同的命名空间和名称)，则ASP.NET运行库不能决定应该使用哪一&nbsp; 个程序集，从而抛出一个异常。在开发时，当我们重新命名一个项目或一个程序集的名称时，这是常见的错误。为了避免这种错误，一定不要在该文件夹中保留任何&nbsp; 不必要的程序集，或者至少要从配置文件的&lt;assemblies&gt;节中删除如下代码行：</FONT></P>
<P><FONT size=3>&lt;add&nbsp; assembly="*"&nbsp; /&gt;</FONT></P>
<P><FONT size=3>在上表所列所有文件夹中，只有Bin可以被ASP.NET&nbsp; 1.x应用程序识别。该文件夹是强制性的。</FONT></P>
<P><FONT size=3></FONT></P><FONT size=3>
</FONT><HR>

<P></P>
<P><STRONG><FONT size=3>2.&nbsp; App_Browser文件夹</FONT></STRONG></P>
<P><FONT size=3>该可选的文件夹包含.browser文件。.browser文件描述浏览器(不管是移动设备浏览器，还是台式机浏览器)的特&nbsp; 征和功能。ASP.NET在安装路径下的Config\Browser文件夹中安装了大量.browser文件，这些文件供所有应用程序共享。我们只是把&nbsp; 当前应用程序特有的浏览器文件放在App_Browser文件夹下。.browser文件的内容即时动态地进行编译，以便向ASP.NET运行库提供最新&nbsp; 的浏览器信息。</FONT></P>
<P><FONT size=3>让我们简单谈谈拥有一个自定义的.browser文件可能有帮助的场景。设想应用程序使用了一个在某个浏览器下不能有效呈现的控件。在指定的浏览器中显示宿主页面时，可以编写一个.browser文件，迫使ASP.NET使用一个不同的适配器来生成该控件。</FONT></P>
<P><FONT size=3>&lt;browsers&gt;</FONT></P>
<P><FONT size=3>&lt;browser&nbsp; id="browserID"&gt;</FONT></P>
<P><FONT size=3>&lt;controlAdapters&gt;</FONT></P>
<P><FONT size=3>&lt;adapter&nbsp; controlType="Samples.CustomControl"</FONT></P>
<P><FONT size=3>adapterType="Samples.Adapters.CustomControlAdapter"&nbsp; /&gt;</FONT></P>
<P><FONT size=3>&lt;/controlAdapters&gt;</FONT></P>
<P><FONT size=3>&lt;/browser&gt;</FONT></P>
<P><FONT size=3>&lt;/browsers&gt;</FONT></P>
<P><FONT size=3>假设browserID与ASP.NET识别的标准浏览器之一相匹配，则上文所示的.browser文件指示在指定的浏览器下使用CustomControlAdapter呈现CustomControl。</FONT></P>
<P><FONT size=3></FONT></P><FONT size=3>
</FONT><HR>

<P></P>
<P><STRONG><FONT size=3>3.&nbsp; App_Co<WBR>de文件夹</FONT></STRONG></P>
<P><FONT size=3>App_Co<WBR>de文件夹正好在Web应用程序根目录下，其存储所有应当作为应用程序的一部分动态编译的类文件。这些类文件自&nbsp; 动链接到应用程序，而不需要在页面中添加任何显式指令或声明来创建依赖性。App_Co<WBR>de文件夹中放置的类文件可以包含任何可识别的ASP.NET组件&nbsp; ——自定义控件、辅助类、build提供程序、业务类、自定义提供程序、HTTP处理程序等。</FONT></P>
<P><FONT size=3>&nbsp;&nbsp;&nbsp; 注意&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在开发时，对App_Co<WBR>de文件夹的更改会导致整个应用程序重新编译。对于大型项目，这可能不受欢迎，而且很耗时。为此，鼓励大家将代码进行模块化处理&nbsp; 到不同的类库中，按逻辑上相关的类集合进行组织。应用程序专用的辅助类大多应当放置在App_Co<WBR>de文件夹中。</FONT></P>
<P><FONT size=3>App_Co<WBR>de文件夹中存放的所有类文件应当使用相同的语言。如果类文件使用两种或多种语言编写，则必须创建特定语言的子目录，以包含用每种语言编写的类。一旦根据语言组织这些类文件，就要在web.config文件中为每个子目录添加一个设置：</FONT></P>
<P><FONT size=3>&lt;compilation&gt;</FONT></P>
<P><FONT size=3>&lt;codeSubDirectories&gt;</FONT></P>
<P><FONT size=3>&lt;add&nbsp; directoryName="VBFolder"&nbsp; /&gt;</FONT></P>
<P><FONT size=3>&lt;/codeSubDirectories&gt;</FONT></P>
<P><FONT size=3>&lt;/compilation&gt;</FONT></P>
<P><FONT size=3>重要的是，特定语言的子目录应在web.config文件中注册，否则，不管它们属于哪个文件夹，App_Co<WBR>de文件夹下&nbsp; 的所有文件将被编译成一个单独的程序集。上述配置脚本描述了这么一种情况，即所有的C#文件都放在App_Co<WBR>de文件夹的根目录下，而把几个&nbsp; Visual&nbsp; Basic&nbsp; .NET类文件移入VBFolder目录中。如果&lt;codeSubDirectories&gt;节中提到的目录不存在，则会收到一个编译错误提&nbsp; 示。</FONT></P>
<P><FONT size=3>App_Co<WBR>de根文件夹中的文件被编译成App_Co<WBR>de_xxx.dll程序集，其中xxx是随机生成的字符序列。一个&nbsp; 给定子目录中的文件将被编译成一个名为App_SubCode_xxx_yyy.dll的动态创建的程序集，其中xxx指示子目录的名称，而yyy是一个&nbsp; 随机字符序列。只有在应用程序根目录中的web.config文件中进行了设置，&lt;codeSubDirectories&gt;节才有效。</FONT></P>
<P><FONT size=3>在App_Co<WBR>de目录或任何其他子目录中放置一个assemblyinfo.cs文件，可以创建一个强命名的程序集。显然，如果该文件夹包含Visual&nbsp; Basic&nbsp; .NET文件，那么将使用assemblyinfo.vb文件。程序集配置文件可以引用一个.snk文件来保存强名称的密钥。</FONT></P>
<P><FONT size=3>&nbsp; 注意&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 给一个程序集设置一个强名称，首先必须获得一个公开/私有密钥对。通过使用强名称(Strong&nbsp; Name)工具(sn.exe)，可以获得这样一个密钥对。强名称工具是我们可以在.NET&nbsp; Framework的安装路径中发现的SDK&nbsp; binary之一。密钥对文件通常有一个.snk扩展名。可以将该文件保存到一个应用程序文件夹中，并在assemblyinfo.cs文件中引用它，如下所示：</FONT></P>
<P><FONT size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [assembly:&nbsp; AssemblyKeyFileAttribute(@"yourKeyPair.snk")]</FONT></P>
<P><FONT size=3>注意，Visual&nbsp; Basic&nbsp; .NET是在包含Visual&nbsp; Studio&nbsp; Solution的目录中寻找密钥文件，而C#编译器则在包含该binary的目录中寻找密钥文件。据此可知，用此属性调整我们使用的路径，或者把密钥文件放在合适的文件夹中。</FONT></P>
<P><FONT size=3>在随后发生的任何重新生成中，程序集的名称将发生变化。同时，老的AppDomain请求一结束，就删除老的程序集。</FONT></P>
<P><FONT size=3>App_Co<WBR>de文件夹并非只能包含类文件。特别是，它可以包含并能自动地处理代表数据架构的XSD文件。把一个XSD文件&nbsp; 添加到该文件夹中时，编译器将把它解析成一个有类型的DataSet类，并将它添加到应用程序作用域中。在ASP.NET&nbsp; 1.x中，这一工作由Visual&nbsp; Studio&nbsp; .NET向导，使用一个命令行实用程序(xsd.exe)完成的。</FONT></P>
<P><FONT size=3>&nbsp;&nbsp;&nbsp; 注意&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 使用web.config文件注册一个组件(例如，一个自定义的服务器控件或一个自定义的HTTP处理程序)时，通常要求指定包含该代码的程序集名称。如&nbsp; 果该组件定义在App_Co<WBR>de文件夹中，则应该用什么名称来指示程序集？在这种情况下，只是忽略程序集信息，并规定完整的类名即可。如果没有规定任何程&nbsp; 序集，则ASP.NET运行库将试图从任何已装载的程序集中装入该类，包括为App_Co<WBR>de文件夹动态创建的程序集。</FONT></P>
<P><FONT size=3></FONT></P><FONT size=3>
</FONT><HR>

<P></P>
<P><STRONG><FONT size=3>4.&nbsp; App_Da<WBR>ta文件夹</FONT></STRONG></P>
<P><FONT size=3>App_Da<WBR>ta文件夹应该包含应用程序的本地数据存储。它通常以文件(诸如Microsoft&nbsp; Access或Microsoft&nbsp; SQL&nbsp; Server&nbsp; Express数据库、XML文件、文本文件以及应用程序支持的任何其他文件)形式包含数据存储。该文件夹内容不由ASP.NET处理。该文件夹是ASP.NET提供程序存储自身数据的默认位置。</FONT></P>
<P><FONT size=3>&nbsp; 注意&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 默认ASP.NET帐户被授予对文件夹的完全访问权限。如果碰巧要改变ASP.NET帐户，一定要确保新帐户被授予对该文件夹的读/写访问权。</FONT></P>
<P><FONT size=3></FONT></P><FONT size=3>
</FONT><HR>

<P></P>
<P><STRONG><FONT size=3>5.&nbsp; App_GlobalResources文件夹</FONT></STRONG></P>
<P><FONT size=3>正如其他应用程序一样，ASP.NET应用程序也可以使用资源，而且通常应该使用资源。资源是隔离应用程序用户界面的可局部&nbsp; 化部分的一种有效方法。一般而言，资源是与程序相关的不可执行的文本。典型的资源有图像、图标、文本和附属文件，但是任何可序列化的对象也可以被看作资&nbsp; 源。应用程序资源存储在应用程序的外部，这样就能在不影响和重新编译应用程序本身的情况下重新编译和替换它们。</FONT></P>
<P><FONT size=3>ASP.NET应用程序需要有一个主要程序集来保存应用程序默认的或中性的资源。此外，还要部署许多附属程序集，它们中各自&nbsp; 包含我们需要支持的某种文化的本地化资源。在ASP.NET&nbsp; 1.x中，编译一个程序集内的资源有点麻烦。需要手动地将基于XML的资源文件(那些带.res扩展名的资源)编译成.resources二进制文件。这&nbsp; 些文件既可以嵌入到一个.NET可执行文件中，也可以编译成附属程序集。使用资源文件生成器实用程序resgen.exe，将文本和基于XML的资源文件&nbsp; 转变为.resource文件。资源文件名称遵循baseName.cultureName.resource命名约定，其中baseName通常是应用&nbsp; 程序的名称：</FONT></P>
<P><FONT size=3>resgen.exe&nbsp; ProAspNet20.resx&nbsp; ProAspNet20.it.resources</FONT></P>
<P><FONT size=3>创建.resource文件以后，应当把它嵌入到一个程序集中，甚至可以作为一个资源容器来使用。要把一个资源文件嵌入到一个附属程序集中，可以使用程序集连接器工具(al.exe)。在命令行上，指出程序集所使用的文化(如下面示例中的it，它代表意大利)和名称。</FONT></P>
<P><FONT size=3>al&nbsp; /out:ProAspNet20.resources.dll&nbsp; /c:it&nbsp; /embed:ProAspNet20.it.resources</FONT></P>
<P><FONT size=3>在编译附属程序集之后，它们将有相同的名称。将它们部署到不同的子目录中，分别按文化命名。</FONT></P>
<P><FONT size=3>幸运的是，对于ASP.NET&nbsp; 2.0，附属程序集的时代已经一去不复返了。更准确地说，附属程序集仍然存在，但是由于App_GlobalResources保留文件夹，对开发人员来说它们已经成为过去的事情。</FONT></P>
<P><FONT size=3>该文件夹中的任何定位的.resx文件自动地被编译成附属程序&nbsp; 集。.resx文件的名称包含文化信息，以帮助ASP.NET运行库环境的程序集生成。如下文件，resources.resx,&nbsp; resources.it.resx,&nbsp; resources.fr.resx，生成中性程序集以及适合于意大利(Italian)和法国(French)文化的附属程序集。如果没有要求特定文&nbsp; 化，则中性程序集是默认的文化资源。</FONT></P>
<P><FONT size=3>App_GlobalResources文件夹中的资源文件是应用程序的全局资源，因而可以从任何页面中引用它。和ASP.NET&nbsp; 1.x相比资源读取结果也极大地简化了：</FONT></P>
<P><FONT size=3>&lt;asp:Label&nbsp; Runat="server"&nbsp; Text="&lt;%$&nbsp; Resources:ResxFile,&nbsp; MyResName&nbsp; %&gt;"&nbsp; /&gt;</FONT></P>
<P><FONT size=3>可以使用最新的称为Resources的$-表达式以声明的方式绑定全局资源(第5章将详细介绍$-表达式)。该表达式包括两个参数：.resx资源文件的名称(没有扩展名)，以及要检索的资源的名称。以编程的方式访问资源，请使用如下代码：</FONT></P>
<P><FONT size=3>HttpContext.GetGlobalResourceObject(resxFile,&nbsp; MyResName)</FONT></P>
<P><FONT size=3>这两个参数都是字符串，并且与$-表达式中的参数具有相同的作用。此外，$-表达式Resources的实现在内部使用GetGlobalResourceObject。</FONT></P>
<P><FONT size=3></FONT></P><FONT size=3>
</FONT><HR>

<P></P>
<P><STRONG><FONT size=3>6.&nbsp; App_LocalResources文件夹</FONT></STRONG></P>
<P><FONT size=3>App_LocalResources文件夹位于包含一些ASP.NET页面的文件夹下的一个子目录。该文件夹可以使用位于&nbsp; 目录结构中高一级目录中的页面命名的.resx文件进行填充。假定父文件夹包含test.aspx，则可以在App_LocalResources文件夹&nbsp; 中找到一些可用的资源文件如下：test.aspx.resx、test.aspx.it.resx和test.aspx.fr.resx。显然，上述文&nbsp; 件中存储的资源仅对test.aspx页面有影响，因而只能在链接的页面中看见它们(可以使用它们)。</FONT></P>
<P><FONT size=3>如何访问一个页面特有的资源呢？对于编程访问，可使用如下代码：</FONT></P>
<P><FONT size=3>HttpContext.GetLocalResourceObject("/ProAspNet20/ResPage.aspx",</FONT></P>
<P><FONT size=3>"PageResource1.Title")</FONT></P>
<P><FONT size=3>第1个参数指出页面虚拟路径；第2个参数是资源名称。对于声明式访问，使用meta:ResourceKey属性。例如，</FONT></P>
<P><FONT size=3>&lt;asp:Button&nbsp; Runat="server"&nbsp; meta:resourcekey="ButtonResource1"&nbsp; /&gt;</FONT></P>
<P><FONT size=3>该声明将一个惟一的资源键与特定按钮实例关联。局部文件.resx包含prefix.name形式的条目，其中prefix&nbsp; 是资源键，而name是绑定控件上的属性名。为了赋予按钮一个本地化标题(Text属性)，只要在资源文件中创建一个&nbsp; ButtonResource1.Text条目即可。</FONT></P>
<P><FONT size=3>局部和全局资源文件夹中存在的资源文件都被编译，以创建附属程序集的类。最后的结果是开发人员创建.resx文件，并测试该页面。而ASP.NET编译机制会完成其余工作。</FONT></P>
<P><FONT size=3></FONT></P><FONT size=3>
</FONT><HR>

<P></P>
<P><STRONG><FONT size=3>7.&nbsp; App_Themes文件夹</FONT></STRONG></P>
<P><FONT size=3>App_Themes文件夹为ASP.NET控件定义主题。主题包含在App_Themes文件夹下的一个文件夹。根据定义，一个主题是一组带有样式信息的文件。主题文件夹中的文件内容被编译，以生成一个类，而该类被页面调用以编程的方式设置主题化控件的样式。</FONT></P>
<P><FONT size=3>App_Themes文件夹列出应用程序的本地主题。&nbsp; 应用程序还可以继承如下文件夹中定义的全局主题：</FONT></P>
<P><FONT size=3>%WINDOWS%\Microsoft.NET\Framework\[version]\ASP.NETClientFiles\Themes</FONT></P>
<P><FONT size=3>从编译的角度看，全局主题和局部主题没有区别。如果一个给定名称的主题，既存在应用程序的本地主题，又存在服务器机器的全局主题，则本地主题优先适用。</FONT></P>
<P><FONT size=3></FONT></P><FONT size=3>
</FONT><HR>

<P></P>
<P><STRONG><FONT size=3>8.&nbsp; App_WebReferences文件夹</FONT></STRONG></P>
<P><FONT size=3>在Visual&nbsp; Studio&nbsp; .NET&nbsp; 2003中，一个需要访问Web服务的ASP.NET应用程序，将通过“添加Web引用”对话框获得相应的.wsdl文件。Web服务的WSDL(Web&nbsp; Service&nbsp; Description&nbsp; Language)文档，对于从页面使用Web服务是不够的。ASP.NET页面最终是一个托管类，并且需要与另一个托管类通信。因此，Web服务被一个&nbsp; 代理类所包装。该代理类是由Visual&nbsp; Studio使用命令行工具wsdl.exe的服务创建的。该代理类尽量包含与Web服务商的Web方法一样多的方法，并且它结合了Web服务的公共接口&nbsp; 定义的任何自定义的数据类型。</FONT></P>
<P><FONT size=3>这个操作不需要开发人员付出很大的代价。然而，开发人员显然要依赖于Visual&nbsp; Studio来生成代理类。如果能够直接把.wsdl文件放在应用程序的目录树的某个地方，并让ASP.NET处理其余的任务，这样不是更容易、更简单&nbsp; 吗？这正好是App_WebReferences文件夹要做的事情。</FONT></P>
<P><FONT size=3>它识别那些用来描述所绑定的Web服务的.wsdl文件，并生成运行时代理类，以便ASP.NET页面能够以类型安全的方式&nbsp; 放置对Web服务的调用。App_WebReferences文件夹可以包含子文件夹。子文件夹的名称驱动最后所得到的代理类的命名空间，而WSDL文件&nbsp; 定义类名。例如，samples.wsdl文件和ProsAspNet20子文件夹将创建一个称为ProAspNet20.Samples的代理类。该动&nbsp; 态创建的程序集称为App_WebReferences.xxx.dll，其中xxx是一个随机的字符序列。</FONT></P>
<P><FONT size=3></FONT></P></div>]]></description>
	    <author><![CDATA[高级菜鸟]]></author>
	    <comments>http://wuxiong8665.blog.163.com/blog/static/93512200991811400157</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://wuxiong8665.blog.163.com/blog/static/93512200991811400157</guid>
    <pubDate>Sun, 18 Oct 2009 11:40:00 +0800</pubDate>
    <dcterms:modified>2009-10-18T17:20:08+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[上传相片20张 ]]></title>	
    <link>http://blog.163.com/wuxiong8665/album</link>
    <description><![CDATA[<div>
				<a href="http://img.bimg.126.net/photo/bK2YwbI-B4ZwSTYRwskj5Q==/3417387692245152702.jpg" target="_blank">
			<img src="http://img.bimg.126.net/photo/bK2YwbI-B4ZwSTYRwskj5Q==/3417387692245152702.jpg" border="0" width="240" height="180" alt="DSC000621 (2)  一只菜鸟的菜园"/>
			</a><br/>使用了手机的照片修复<br/>
			<a href="http://img.bimg.126.net/photo/zbvknVGSD5HBBwbek-iuZg==/2289235985588378942.jpg" target="_blank">
			<img src="http://img.bimg.126.net/photo/zbvknVGSD5HBBwbek-iuZg==/2289235985588378942.jpg" border="0" width="240" height="180" alt="DSC000621 (1)  一只菜鸟的菜园"/>
			</a><br/><br/>
			<a href="http://img.bimg.126.net/photo/ONRYhMIutDIhuPTTYZXjXA==/1167839678373204451.jpg" target="_blank">
			<img src="http://img.bimg.126.net/photo/ONRYhMIutDIhuPTTYZXjXA==/1167839678373204451.jpg" border="0" width="240" height="180" alt="DSC00062  一只菜鸟的菜园"/>
			</a><br/><br/>
			<a href="http://img.bimg.126.net/photo/KITc_SISwePnTEUn_kIB1w==/2853311838917022722.jpg" target="_blank">
			<img src="http://img.bimg.126.net/photo/KITc_SISwePnTEUn_kIB1w==/2853311838917022722.jpg" border="0" width="240" height="180" alt="DSC00062(1)  一只菜鸟的菜园"/>
			</a><br/>使用照片修复后<br/>
			<a href="http://img.bimg.126.net/photo/CDkB53P7nRpZM67OypKxtw==/1128151706656937914.jpg" target="_blank">
			<img src="http://img.bimg.126.net/photo/CDkB53P7nRpZM67OypKxtw==/1128151706656937914.jpg" border="0" width="240" height="180" alt="DSC00060  一只菜鸟的菜园"/>
			</a><br/><br/>
			<a href="http://img.bimg.126.net/photo/cpt5PhGUPIzdLCLCc0adhg==/341147671773848659.jpg" target="_blank">
			<img src="http://img.bimg.126.net/photo/cpt5PhGUPIzdLCLCc0adhg==/341147671773848659.jpg" border="0" width="240" height="180" alt="DSC00059  一只菜鸟的菜园"/>
			</a><br/><br/>
			<a href="http://img.bimg.126.net/photo/dI8zW6R59fSwqKm5jk2gbA==/604889724951850959.jpg" target="_blank">
			<img src="http://img.bimg.126.net/photo/dI8zW6R59fSwqKm5jk2gbA==/604889724951850959.jpg" border="0" width="240" height="180" alt="DSC00058  一只菜鸟的菜园"/>
			</a><br/><br/>
			<a href="http://img.bimg.126.net/photo/yo-OsT3tbO-VrSRDyx82qQ==/5647795407700271792.jpg" target="_blank">
			<img src="http://img.bimg.126.net/photo/yo-OsT3tbO-VrSRDyx82qQ==/5647795407700271792.jpg" border="0" width="240" height="180" alt="DSC00057  一只菜鸟的菜园"/>
			</a><br/><br/>
			<a href="http://img.bimg.126.net/photo/PTRnBak60sri_nPCL3NcUQ==/1127307281726805952.jpg" target="_blank">
			<img src="http://img.bimg.126.net/photo/PTRnBak60sri_nPCL3NcUQ==/1127307281726805952.jpg" border="0" width="240" height="180" alt="DSC00055  一只菜鸟的菜园"/>
			</a><br/><br/>
			<a href="http://img.bimg.126.net/photo/haZhswpixMtQOicgivzepA==/3438779790474829726.jpg" target="_blank">
			<img src="http://img.bimg.126.net/photo/haZhswpixMtQOicgivzepA==/3438779790474829726.jpg" border="0" width="240" height="180" alt="DSC00054  一只菜鸟的菜园"/>
			</a><br/><br/>
			<a href="http://img.bimg.126.net/photo/xnLYLpgaeBiui2JXY7a7Kg==/4809562927056063186.jpg" target="_blank">
			<img src="http://img.bimg.126.net/photo/xnLYLpgaeBiui2JXY7a7Kg==/4809562927056063186.jpg" border="0" width="240" height="180" alt="DSC00053  一只菜鸟的菜园"/>
			</a><br/><br/>
			<a href="http://img.bimg.126.net/photo/zegSRXrSk5jVsgcdQZ8jqQ==/2569303587415387373.jpg" target="_blank">
			<img src="http://img.bimg.126.net/photo/zegSRXrSk5jVsgcdQZ8jqQ==/2569303587415387373.jpg" border="0" width="240" height="180" alt="DSC00052  一只菜鸟的菜园"/>
			</a><br/><br/>
			<a href="http://img.bimg.126.net/photo/vKfkzMggkaxkEMhK6W-pNA==/3411758192710595014.jpg" target="_blank">
			<img src="http://img.bimg.126.net/photo/vKfkzMggkaxkEMhK6W-pNA==/3411758192710595014.jpg" border="0" width="240" height="180" alt="DSC00051  一只菜鸟的菜园"/>
			</a><br/><br/>
			<a href="http://img.bimg.126.net/photo/er-WxfnGJnZymjI5LAKnMQ==/1699827384356285541.jpg" target="_blank">
			<img src="http://img.bimg.126.net/photo/er-WxfnGJnZymjI5LAKnMQ==/1699827384356285541.jpg" border="0" width="180" height="240" alt="DSC00050  一只菜鸟的菜园"/>
			</a><br/><br/>
			<a href="http://img.bimg.126.net/photo/7KTr7mxAQz7WeKsKS-HVDA==/1699827384356285562.jpg" target="_blank">
			<img src="http://img.bimg.126.net/photo/7KTr7mxAQz7WeKsKS-HVDA==/1699827384356285562.jpg" border="0" width="180" height="240" alt="DSC00049  一只菜鸟的菜园"/>
			</a><br/><br/>
			<a href="http://img.bimg.126.net/photo/2rR5a-QgqmI9OwybFK-PDw==/4255901647865848162.jpg" target="_blank">
			<img src="http://img.bimg.126.net/photo/2rR5a-QgqmI9OwybFK-PDw==/4255901647865848162.jpg" border="0" width="240" height="180" alt="DSC00048  一只菜鸟的菜园"/>
			</a><br/><br/>
			<a href="http://img.bimg.126.net/photo/fESTzT7Qsif6BvehrfWd0g==/2568177687508544744.jpg" target="_blank">
			<img src="http://img.bimg.126.net/photo/fESTzT7Qsif6BvehrfWd0g==/2568177687508544744.jpg" border="0" width="240" height="180" alt="DSC00047  一只菜鸟的菜园"/>
			</a><br/><br/>
			<a href="http://img.bimg.126.net/photo/K17T3xzxNvnRg0_sU3SrQg==/1185291126929110959.jpg" target="_blank">
			<img src="http://img.bimg.126.net/photo/K17T3xzxNvnRg0_sU3SrQg==/1185291126929110959.jpg" border="0" width="240" height="180" alt="DSC00046  一只菜鸟的菜园"/>
			</a><br/><br/>
			<a href="http://img.bimg.126.net/photo/i8Rqe6WO7SIWGAY8t50_bA==/1699827384356285577.jpg" target="_blank">
			<img src="http://img.bimg.126.net/photo/i8Rqe6WO7SIWGAY8t50_bA==/1699827384356285577.jpg" border="0" width="180" height="240" alt="DSC00044  一只菜鸟的菜园"/>
			</a><br/><br/>
			<a href="http://img.bimg.126.net/photo/mooqDh-dTKjUU3C0om5auQ==/564920278258918272.jpg" target="_blank">
			<img src="http://img.bimg.126.net/photo/mooqDh-dTKjUU3C0om5auQ==/564920278258918272.jpg" border="0" width="240" height="180" alt="DSC00039  一只菜鸟的菜园"/>
			</a><br/><br/>
</div>]]></description>
	    <author><![CDATA[wuxiong8665]]></author>
    <guid isPermaLink="false">http://img.bimg.126.net/photo/mooqDh-dTKjUU3C0om5auQ==/564920278258918272.jpg</guid>
    <pubDate>Sun, 26 Jul 2009 21:18:42 +0800</pubDate>
    <dcterms:modified>2009-07-26T21:27:01+08:00</dcterms:modified>
  </item>    
 </channel>
</rss>