﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-WINDONE！第三块石头，相信自己能行，那你就一定能行！-随笔分类-计算机相关</title><link>http://www.cnitblog.com/windone0109/category/6378.html</link><description>交流！共享！
既然选择了远方，便只管风雨兼程。
软件测试有所长进！自动化测试正在尝试！白盒测试希望介入！
                                    
欢迎各位朋友和我联系。 联系方式: QQ：70566744 Email：windone0109@yahoo.com.cn </description><language>zh-cn</language><lastBuildDate>Mon, 26 Sep 2011 17:20:47 GMT</lastBuildDate><pubDate>Mon, 26 Sep 2011 17:20:47 GMT</pubDate><ttl>60</ttl><item><title>解决"C:\WINDOWS\system32\aliedit\a"找不到文件的错误提示</title><link>http://www.cnitblog.com/windone0109/archive/2008/07/12/46625.html</link><dc:creator>windone</dc:creator><author>windone</author><pubDate>Sat, 12 Jul 2008 00:14:00 GMT</pubDate><guid>http://www.cnitblog.com/windone0109/archive/2008/07/12/46625.html</guid><wfw:comment>http://www.cnitblog.com/windone0109/comments/46625.html</wfw:comment><comments>http://www.cnitblog.com/windone0109/archive/2008/07/12/46625.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/windone0109/comments/commentRss/46625.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windone0109/services/trackbacks/46625.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:        这个问题多在部分淘宝用户在更新“支付宝安全控件/淘宝旺旺”出现，其症状通常是在开机时提示：“加载C:\WINDOWS\system32\aliedit\a失败，找不到指定的文件”&nbsp;&nbsp;<a href='http://www.cnitblog.com/windone0109/archive/2008/07/12/46625.html'>阅读全文</a><img src ="http://www.cnitblog.com/windone0109/aggbug/46625.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windone0109/" target="_blank">windone</a> 2008-07-12 08:14 <a href="http://www.cnitblog.com/windone0109/archive/2008/07/12/46625.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第7章 DOS编程高级技巧--结束篇</title><link>http://www.cnitblog.com/windone0109/archive/2008/06/30/46156.html</link><dc:creator>windone</dc:creator><author>windone</author><pubDate>Mon, 30 Jun 2008 03:30:00 GMT</pubDate><guid>http://www.cnitblog.com/windone0109/archive/2008/06/30/46156.html</guid><wfw:comment>http://www.cnitblog.com/windone0109/comments/46156.html</wfw:comment><comments>http://www.cnitblog.com/windone0109/archive/2008/06/30/46156.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnitblog.com/windone0109/comments/commentRss/46156.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windone0109/services/trackbacks/46156.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 没啥说的，看看高手设计的菜单界面吧：<br>@echo off<br>cls<br>title 终极多功能修复<br>:menu<br>cls<br>color 0A<br>echo.<br>echo                 ==============================<br>echo                 请选择要进行的操作，然后按回车<br>echo                 ==============================<br>echo.<br>echo              1.网络修复及上网相关设置,修复IE,自定义屏蔽网站<br>echo.<br>echo              2.病毒专杀工具，端口关闭工具,关闭自动播放<br>echo.<br>echo              3.清除所有多余的自启动项目，修复系统错误<br>echo.<br>echo              4.清理系统垃圾,提高启动速度<br>echo.<br>echo             &nbsp;&nbsp;<a href='http://www.cnitblog.com/windone0109/archive/2008/06/30/46156.html'>阅读全文</a><img src ="http://www.cnitblog.com/windone0109/aggbug/46156.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windone0109/" target="_blank">windone</a> 2008-06-30 11:30 <a href="http://www.cnitblog.com/windone0109/archive/2008/06/30/46156.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第6章 if命令讲解</title><link>http://www.cnitblog.com/windone0109/archive/2008/06/30/46155.html</link><dc:creator>windone</dc:creator><author>windone</author><pubDate>Mon, 30 Jun 2008 03:29:00 GMT</pubDate><guid>http://www.cnitblog.com/windone0109/archive/2008/06/30/46155.html</guid><wfw:comment>http://www.cnitblog.com/windone0109/comments/46155.html</wfw:comment><comments>http://www.cnitblog.com/windone0109/archive/2008/06/30/46155.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/windone0109/comments/commentRss/46155.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windone0109/services/trackbacks/46155.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在CMD使用IF /?打开IF的系统帮助(自己看我就不全部列出来了),我们会发现IF有3种基本的用法!<br>执行批处理程序中的条件处理。<br>IF [NOT] ERRORLEVEL number command<br>IF [NOT] string1==string2 command<br>IF [NOT] EXIST filename command<br>   NOT             指定只有条件为 false 的情况下， Windows XP 才<br>                   应该执行该命令。<br>   ERRORLEVEL number 如果最后运行的程序返回一个等于或大于<br>                   指定数字的退出编码，指定条件为 true。<br>   string1==string2   如果指定的文字字符串匹配，指定条件为 true。<br>   EXIST filename 如果指定的文件名存在，指定条件为 true。<br>   command           如果符合条件，指定要执行的命令。如果&nbsp;&nbsp;<a href='http://www.cnitblog.com/windone0109/archive/2008/06/30/46155.html'>阅读全文</a><img src ="http://www.cnitblog.com/windone0109/aggbug/46155.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windone0109/" target="_blank">windone</a> 2008-06-30 11:29 <a href="http://www.cnitblog.com/windone0109/archive/2008/06/30/46155.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第5章 set命令详解</title><link>http://www.cnitblog.com/windone0109/archive/2008/06/30/46154.html</link><dc:creator>windone</dc:creator><author>windone</author><pubDate>Mon, 30 Jun 2008 03:28:00 GMT</pubDate><guid>http://www.cnitblog.com/windone0109/archive/2008/06/30/46154.html</guid><wfw:comment>http://www.cnitblog.com/windone0109/comments/46154.html</wfw:comment><comments>http://www.cnitblog.com/windone0109/archive/2008/06/30/46154.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/windone0109/comments/commentRss/46154.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windone0109/services/trackbacks/46154.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 显示、设置或删除 cmd.exe 环境变量。<br>SET [variable=[string]]<br>   variable   指定环境变量名。<br>   string 指定要指派给变量的一系列字符串。<br>要显示当前环境变量，键入不带参数的 SET。<br>SET 命令不允许变量名含有等号。<br><br>例子:<br>@echo off<br>set var=我是值<br>echo %var%<br>pause<br><br>&nbsp;&nbsp;<a href='http://www.cnitblog.com/windone0109/archive/2008/06/30/46154.html'>阅读全文</a><img src ="http://www.cnitblog.com/windone0109/aggbug/46154.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windone0109/" target="_blank">windone</a> 2008-06-30 11:28 <a href="http://www.cnitblog.com/windone0109/archive/2008/06/30/46154.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第4章 批处理中的变量</title><link>http://www.cnitblog.com/windone0109/archive/2008/06/30/46153.html</link><dc:creator>windone</dc:creator><author>windone</author><pubDate>Mon, 30 Jun 2008 03:26:00 GMT</pubDate><guid>http://www.cnitblog.com/windone0109/archive/2008/06/30/46153.html</guid><wfw:comment>http://www.cnitblog.com/windone0109/comments/46153.html</wfw:comment><comments>http://www.cnitblog.com/windone0109/archive/2008/06/30/46153.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/windone0109/comments/commentRss/46153.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windone0109/services/trackbacks/46153.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 他们的值由系统将其根据事先定义的条件自动赋值,也就是这些变量系统已经给他们定义了值,<br>不需要我们来给他赋值,我们只需要调用而以!   我把他们全部列出来!<br><br>%ALLUSERSPROFILE% 本地 返回“所有用户”配置文件的位置。<br>%APPDATA% 本地 返回默认情况下应用程序存储数据的位置。<br>%CD% 本地 返回当前目录字符串。<br>%CMDCMDLINE% 本地 返回用来启动当前的 Cmd.exe 的准确命令行。<br>%CMDEXTVERSION% 系统 返回当前的“命令处理程序扩展”的版本号。<br>%COMPUTERNAME%   系统 返回计算机的名称。<br>%COMSPEC%   系统 返回命令行解释器可执行程序的准确路径。<br>%DATE%   系统 返回当前日期。使用与 date /t 命令相同的格式。由 Cmd.exe 生成。有关<br>date 命令的详细信息，请参阅 Date。<br>%ERRORLEVEL%   系统 返回上一条命令的错误代码。通常用非零值表示错误。<br>%HOMEDRIVE%&nbsp;&nbsp;<a href='http://www.cnitblog.com/windone0109/archive/2008/06/30/46153.html'>阅读全文</a><img src ="http://www.cnitblog.com/windone0109/aggbug/46153.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windone0109/" target="_blank">windone</a> 2008-06-30 11:26 <a href="http://www.cnitblog.com/windone0109/archive/2008/06/30/46153.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第3章 FOR命令中的变量</title><link>http://www.cnitblog.com/windone0109/archive/2008/06/30/46152.html</link><dc:creator>windone</dc:creator><author>windone</author><pubDate>Mon, 30 Jun 2008 03:25:00 GMT</pubDate><guid>http://www.cnitblog.com/windone0109/archive/2008/06/30/46152.html</guid><wfw:comment>http://www.cnitblog.com/windone0109/comments/46152.html</wfw:comment><comments>http://www.cnitblog.com/windone0109/archive/2008/06/30/46152.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/windone0109/comments/commentRss/46152.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windone0109/services/trackbacks/46152.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: FOR命令中有一些变量,他们的用法许多新手朋友还不太了解,今天给大家讲解他们的用法!<br><br>先把FOR的变量全部列出来:<br>    ~I       - 删除任何引号(")，扩展 %I<br>    %~fI        - 将 %I 扩展到一个完全合格的路径名<br>    %~dI        - 仅将 %I 扩展到一个驱动器号<br>    %~pI        - 仅将 %I 扩展到一个路径<br>    %~nI        - 仅将 %I 扩展到一个文件名<br>    %~xI        - 仅将 %I 扩展到一个文件扩展名<br>    %~sI        - 扩展的路径只含有短名<br>    %~aI        - 将 %I 扩展到文件的文件属性<br>    %~tI        - 将 %I 扩展到文件的日期/时间<br>    %~zI        - 将 %I 扩展到文件的大小<br>    %~$PATH:I - 查找列在路径环境变量的目录，并将 %I 扩展<br>              &nbsp;&nbsp;<a href='http://www.cnitblog.com/windone0109/archive/2008/06/30/46152.html'>阅读全文</a><img src ="http://www.cnitblog.com/windone0109/aggbug/46152.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windone0109/" target="_blank">windone</a> 2008-06-30 11:25 <a href="http://www.cnitblog.com/windone0109/archive/2008/06/30/46152.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第2章 DOS循环：for命令详解</title><link>http://www.cnitblog.com/windone0109/archive/2008/06/30/46150.html</link><dc:creator>windone</dc:creator><author>windone</author><pubDate>Mon, 30 Jun 2008 03:23:00 GMT</pubDate><guid>http://www.cnitblog.com/windone0109/archive/2008/06/30/46150.html</guid><wfw:comment>http://www.cnitblog.com/windone0109/comments/46150.html</wfw:comment><comments>http://www.cnitblog.com/windone0109/archive/2008/06/30/46150.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cnitblog.com/windone0109/comments/commentRss/46150.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windone0109/services/trackbacks/46150.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: FOR这条命令基本上都被用来处理文本,我们这次除了要说他处理文本的作用外还要讲他的其他一些好用的功能!<br>看看他的基本格式(这里我引用的是批处理中的格式,直接在命令行只需要一个%号)<br>FOR 参数 %%变量名 IN (相关文件或命令)   DO 执行的命令<br>&nbsp;&nbsp;<a href='http://www.cnitblog.com/windone0109/archive/2008/06/30/46150.html'>阅读全文</a><img src ="http://www.cnitblog.com/windone0109/aggbug/46150.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windone0109/" target="_blank">windone</a> 2008-06-30 11:23 <a href="http://www.cnitblog.com/windone0109/archive/2008/06/30/46150.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第1章 批处理基础A</title><link>http://www.cnitblog.com/windone0109/archive/2008/06/24/45965.html</link><dc:creator>windone</dc:creator><author>windone</author><pubDate>Tue, 24 Jun 2008 09:18:00 GMT</pubDate><guid>http://www.cnitblog.com/windone0109/archive/2008/06/24/45965.html</guid><wfw:comment>http://www.cnitblog.com/windone0109/comments/45965.html</wfw:comment><comments>http://www.cnitblog.com/windone0109/archive/2008/06/24/45965.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/windone0109/comments/commentRss/45965.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windone0109/services/trackbacks/45965.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 批处理定义：顾名思义，批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件，其扩展名为BAT或者CMD。这些命令统称批处理命令。<br>小知识：可以在键盘上按下Ctrl+C组合键来强行终止一个批处理的执行过程。<br>了解了大概意思后,我们正式开始学习.先看一个简单的例子!<br>@echo off<br>echo "欢迎来到非常BAT!"<br>pause<br>把上面的3条命令保存为文件test.bat或者test.cmd然后执行,<br>他就会在屏幕上显示以下二行话:<br>欢迎来到非常BAT!<br>请按任意键继续. . .&nbsp;&nbsp;<a href='http://www.cnitblog.com/windone0109/archive/2008/06/24/45965.html'>阅读全文</a><img src ="http://www.cnitblog.com/windone0109/aggbug/45965.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windone0109/" target="_blank">windone</a> 2008-06-24 17:18 <a href="http://www.cnitblog.com/windone0109/archive/2008/06/24/45965.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第1章 批处理基础B</title><link>http://www.cnitblog.com/windone0109/archive/2008/06/24/45966.html</link><dc:creator>windone</dc:creator><author>windone</author><pubDate>Tue, 24 Jun 2008 09:18:00 GMT</pubDate><guid>http://www.cnitblog.com/windone0109/archive/2008/06/24/45966.html</guid><wfw:comment>http://www.cnitblog.com/windone0109/comments/45966.html</wfw:comment><comments>http://www.cnitblog.com/windone0109/archive/2008/06/24/45966.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/windone0109/comments/commentRss/45966.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windone0109/services/trackbacks/45966.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 第二节 常用特殊符号<br>1、@   命令行回显屏蔽符<br>2、%   批处理变量引导符<br>3、> 重定向符<br>4、>>   重定向符<br>5、<、>&、<& 重定向符<br>6、|   命令管道符<br>7、^   转义字符<br>8、&   组合命令<br>9、&& 组合命令<br>10、||   组合命令<br>11、""   字符串界定符<br>12、, 逗号<br>13、; 分号<br>14、() 括号<br>15、! 感叹号<br>16、批处理中可能会见到的其它特殊标记符: （略）<br>&nbsp;&nbsp;<a href='http://www.cnitblog.com/windone0109/archive/2008/06/24/45966.html'>阅读全文</a><img src ="http://www.cnitblog.com/windone0109/aggbug/45966.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windone0109/" target="_blank">windone</a> 2008-06-24 17:18 <a href="http://www.cnitblog.com/windone0109/archive/2008/06/24/45966.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用批处理文件来操作注册表</title><link>http://www.cnitblog.com/windone0109/archive/2008/06/20/45898.html</link><dc:creator>windone</dc:creator><author>windone</author><pubDate>Fri, 20 Jun 2008 03:21:00 GMT</pubDate><guid>http://www.cnitblog.com/windone0109/archive/2008/06/20/45898.html</guid><wfw:comment>http://www.cnitblog.com/windone0109/comments/45898.html</wfw:comment><comments>http://www.cnitblog.com/windone0109/archive/2008/06/20/45898.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/windone0109/comments/commentRss/45898.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windone0109/services/trackbacks/45898.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在入侵过程中经常回操作注册表的特定的键值来实现一定的目的，例如:为了达到隐藏后门、木马程序而删除Run下残余的键值。或者创建一个服务用以加载后门。当然我们也会修改注册表来加固系统或者改变系统的某个属性，这些都需要我们对注册表操作有一定的了解。下面我们就先学习一下如何使用.REG文件来操作注册表.(我们可以用批处理来生成一个REG文件) <br>关于注册表的操作，常见的是创建、修改、删除。 &nbsp;&nbsp;<a href='http://www.cnitblog.com/windone0109/archive/2008/06/20/45898.html'>阅读全文</a><img src ="http://www.cnitblog.com/windone0109/aggbug/45898.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windone0109/" target="_blank">windone</a> 2008-06-20 11:21 <a href="http://www.cnitblog.com/windone0109/archive/2008/06/20/45898.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>批处理写的关机小程序--bat</title><link>http://www.cnitblog.com/windone0109/archive/2008/06/14/45749.html</link><dc:creator>windone</dc:creator><author>windone</author><pubDate>Sat, 14 Jun 2008 06:32:00 GMT</pubDate><guid>http://www.cnitblog.com/windone0109/archive/2008/06/14/45749.html</guid><wfw:comment>http://www.cnitblog.com/windone0109/comments/45749.html</wfw:comment><comments>http://www.cnitblog.com/windone0109/archive/2008/06/14/45749.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/windone0109/comments/commentRss/45749.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windone0109/services/trackbacks/45749.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: @echo off<br>color 17<br>title --by windone<br>:windone<br>cls<br>echo %date% %time%<br>echo.<br>echo <br><br>************************************************************<br>echo #        关机小程序                                         <br><br>     #<br>echo #                                                           <br><br>            # <br>echo # 1.关机 2.重启 3.设定时间关机             #<br>echo # 4.倒计时关机 5.中午关机 6.晚上关机          #<br>echo # 7.凌晨关机 8.锁定计算机 9.查看当前状态    #<br>echo # 10.删除任&nbsp;&nbsp;<a href='http://www.cnitblog.com/windone0109/archive/2008/06/14/45749.html'>阅读全文</a><img src ="http://www.cnitblog.com/windone0109/aggbug/45749.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windone0109/" target="_blank">windone</a> 2008-06-14 14:32 <a href="http://www.cnitblog.com/windone0109/archive/2008/06/14/45749.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IT界十年最重要10家公司排行榜</title><link>http://www.cnitblog.com/windone0109/archive/2008/05/13/43677.html</link><dc:creator>windone</dc:creator><author>windone</author><pubDate>Tue, 13 May 2008 11:08:00 GMT</pubDate><guid>http://www.cnitblog.com/windone0109/archive/2008/05/13/43677.html</guid><wfw:comment>http://www.cnitblog.com/windone0109/comments/43677.html</wfw:comment><comments>http://www.cnitblog.com/windone0109/archive/2008/05/13/43677.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/windone0109/comments/commentRss/43677.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windone0109/services/trackbacks/43677.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:   业界著名杂志《Network Computing》公布了本世纪最后十年中，IT界最重要的10个公司。 <br>　　该杂志说：“其中的一些公司的历史已经很悠久了，IBM成立时Yahoo创始人还没有出生呢！我们从中得到了这样的启示：每个行业都有老兵和新秀，每家公司都需要有向本行业的老大和对手挑战的勇气。同时我们相信，在从现在开始的未来十年中，这个名单中现有的一些名字仍将列在这个名单中，但也会有目前我们几乎没听说过的名字加入进来。在2010年来临的时候，谁将会成为新的微软和思科呢？如果我们知道的话，现在就不会还在做杂志业务了。 <br>　　回首过去的十年，我们曾经报道了这些公司经历的大小事件，要是我们有这些公司的股票那就更好了。”&nbsp;&nbsp;<a href='http://www.cnitblog.com/windone0109/archive/2008/05/13/43677.html'>阅读全文</a><img src ="http://www.cnitblog.com/windone0109/aggbug/43677.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windone0109/" target="_blank">windone</a> 2008-05-13 19:08 <a href="http://www.cnitblog.com/windone0109/archive/2008/05/13/43677.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>紧急警报：360浏览器与瑞星杀毒软件冲突 可导致电脑蓝屏</title><link>http://www.cnitblog.com/windone0109/archive/2008/05/12/43636.html</link><dc:creator>windone</dc:creator><author>windone</author><pubDate>Mon, 12 May 2008 08:44:00 GMT</pubDate><guid>http://www.cnitblog.com/windone0109/archive/2008/05/12/43636.html</guid><wfw:comment>http://www.cnitblog.com/windone0109/comments/43636.html</wfw:comment><comments>http://www.cnitblog.com/windone0109/archive/2008/05/12/43636.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/windone0109/comments/commentRss/43636.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windone0109/services/trackbacks/43636.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:        该问题是由于“360浏览器”中使用的第3方共享软件“SANDBOXIE”和“瑞星杀毒软件2008版”的安全防护功能发生强烈冲突所致。<br>&nbsp;&nbsp;<a href='http://www.cnitblog.com/windone0109/archive/2008/05/12/43636.html'>阅读全文</a><img src ="http://www.cnitblog.com/windone0109/aggbug/43636.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windone0109/" target="_blank">windone</a> 2008-05-12 16:44 <a href="http://www.cnitblog.com/windone0109/archive/2008/05/12/43636.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>云计算能给业界带来什么？</title><link>http://www.cnitblog.com/windone0109/archive/2008/05/11/43596.html</link><dc:creator>windone</dc:creator><author>windone</author><pubDate>Sun, 11 May 2008 02:05:00 GMT</pubDate><guid>http://www.cnitblog.com/windone0109/archive/2008/05/11/43596.html</guid><wfw:comment>http://www.cnitblog.com/windone0109/comments/43596.html</wfw:comment><comments>http://www.cnitblog.com/windone0109/archive/2008/05/11/43596.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/windone0109/comments/commentRss/43596.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windone0109/services/trackbacks/43596.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 　　不久前，IBM宣布推出“蓝云”计划，这是一种软件和硬件组合产品，让企业用户可以对“云”计算模式进行实验，“云”计算模式使计算不仅仅局限在本地机器或远程Server Farms，通过架构一个分布的、可全球访问的资源结构，使数据中心在类似互联网的环境下运行计算。&nbsp;&nbsp;<a href='http://www.cnitblog.com/windone0109/archive/2008/05/11/43596.html'>阅读全文</a><img src ="http://www.cnitblog.com/windone0109/aggbug/43596.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windone0109/" target="_blank">windone</a> 2008-05-11 10:05 <a href="http://www.cnitblog.com/windone0109/archive/2008/05/11/43596.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>清除Windows下的间谍软件威胁</title><link>http://www.cnitblog.com/windone0109/archive/2008/05/04/43303.html</link><dc:creator>windone</dc:creator><author>windone</author><pubDate>Sun, 04 May 2008 10:50:00 GMT</pubDate><guid>http://www.cnitblog.com/windone0109/archive/2008/05/04/43303.html</guid><wfw:comment>http://www.cnitblog.com/windone0109/comments/43303.html</wfw:comment><comments>http://www.cnitblog.com/windone0109/archive/2008/05/04/43303.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/windone0109/comments/commentRss/43303.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windone0109/services/trackbacks/43303.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 　　望闻问切：分析间谍软件<br>　　你如何知道自己的电脑存在着活动的间谍软件呢?“比正常情况慢”可能是多数人所报告的最常见的症状，不过这种系统性能的下降也可能是由于与间谍软件不相关的因素造成的，如在内存并不充裕的情况下运行太多的应用程序，或者运行了某些在关闭之后不能清理内存的不健全的程序等。&nbsp;&nbsp;<a href='http://www.cnitblog.com/windone0109/archive/2008/05/04/43303.html'>阅读全文</a><img src ="http://www.cnitblog.com/windone0109/aggbug/43303.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windone0109/" target="_blank">windone</a> 2008-05-04 18:50 <a href="http://www.cnitblog.com/windone0109/archive/2008/05/04/43303.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Windows系统服务优化终结者--一个终端服务管理的好工具(提供下载)</title><link>http://www.cnitblog.com/windone0109/archive/2008/04/26/42789.html</link><dc:creator>windone</dc:creator><author>windone</author><pubDate>Sat, 26 Apr 2008 09:10:00 GMT</pubDate><guid>http://www.cnitblog.com/windone0109/archive/2008/04/26/42789.html</guid><wfw:comment>http://www.cnitblog.com/windone0109/comments/42789.html</wfw:comment><comments>http://www.cnitblog.com/windone0109/archive/2008/04/26/42789.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/windone0109/comments/commentRss/42789.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windone0109/services/trackbacks/42789.html</trackback:ping><description><![CDATA[<br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;WindowsNT核心系统默认开启了许多系统服务，有些系统服务并不是必须的，但它却占用了相当一部分内存资源，对于内存资源紧张的用户来说这是不可容忍的。系统服务终结者提供了多种服务优化配置方案，并且可以根据自己的要求创建服务优化配置文件，打造符合自己的优化服务，让您的系统运行的更高效！ <script language=javascript src="/newhuagg/js_ad_show_8.js"></script><br><br><span style="COLOR: red"><strong><u><a href="http://power4.onlinedown.net/down/WSOT.exe"><span style="COLOR: red"><strong><u>Windows系统服务优化终结者下载链接</u></strong></span></a></u></strong><br></span><img src ="http://www.cnitblog.com/windone0109/aggbug/42789.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windone0109/" target="_blank">windone</a> 2008-04-26 17:10 <a href="http://www.cnitblog.com/windone0109/archive/2008/04/26/42789.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>windows系统服务列表功能及系统优化</title><link>http://www.cnitblog.com/windone0109/archive/2008/04/26/42788.html</link><dc:creator>windone</dc:creator><author>windone</author><pubDate>Sat, 26 Apr 2008 09:03:00 GMT</pubDate><guid>http://www.cnitblog.com/windone0109/archive/2008/04/26/42788.html</guid><wfw:comment>http://www.cnitblog.com/windone0109/comments/42788.html</wfw:comment><comments>http://www.cnitblog.com/windone0109/archive/2008/04/26/42788.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/windone0109/comments/commentRss/42788.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windone0109/services/trackbacks/42788.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;                                    显示名称                                    服务名称                                    功能简述                                    是否停用    ...&nbsp;&nbsp;<a href='http://www.cnitblog.com/windone0109/archive/2008/04/26/42788.html'>阅读全文</a><img src ="http://www.cnitblog.com/windone0109/aggbug/42788.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windone0109/" target="_blank">windone</a> 2008-04-26 17:03 <a href="http://www.cnitblog.com/windone0109/archive/2008/04/26/42788.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>完美测试TCP/IP协议简介</title><link>http://www.cnitblog.com/windone0109/archive/2008/04/24/42680.html</link><dc:creator>windone</dc:creator><author>windone</author><pubDate>Thu, 24 Apr 2008 02:14:00 GMT</pubDate><guid>http://www.cnitblog.com/windone0109/archive/2008/04/24/42680.html</guid><wfw:comment>http://www.cnitblog.com/windone0109/comments/42680.html</wfw:comment><comments>http://www.cnitblog.com/windone0109/archive/2008/04/24/42680.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/windone0109/comments/commentRss/42680.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windone0109/services/trackbacks/42680.html</trackback:ping><description><![CDATA[<br><br>安装网络硬件和网络协议之后，我们一般要进行TCP/IP协议的测试工作，那么怎样测试才算是比较全面的测试呢?我们认为，全面的测试应包括局域网和互联网两个方面，因此应从局域网和互联网两个方面测试，以下是我们在实际工作中利用命令行测试TCP/IP配置的步骤： <br>　　1、 单击&#8220;开始&#8221;/&#8220;运行&#8221;，输入CMD按回车，打开命令提示符窗口。<br><br>　　2、 首先检查IP地址、子网掩码、默认网关、DNS服务器地址是否正确，输入命令ipconfig /all,按回车。此时显示了你的网络配置，观查是否正确。<br><br>　　3、 输入ping 127.0.0.1，观查网卡是否能转发数据，如果出现&#8220;Request timed out&#8221;，表明配置差错或网络有问题。<br><br>　　4、 Ping一个互联网地址，如ping 202.102.128.68,看是否有数据包传回，以验证与互联网的连接性。<br><br>　　5、 Ping 一个局域网地址，观查与它的连通性。<br><br>　　6、 用nslookup测试DNS解析是否正确，输入如nslookup <a href="http://www.sina.com.cn/" target=_blank>www.sina.com.cn</a>，查看是否能解析。<br><br>　　如果你的计算机通过了全部测试，则说明网络正常，否则网络可能有不同程度的问题。在此不展开详述。不过，要注意，在使用 ping命令时，有些公司会在其主机设置丢弃ICMP数据包，造成你的ping命令无法正常返回数据包，不防换个网站试试。&nbsp;&nbsp;&nbsp;<br><img src ="http://www.cnitblog.com/windone0109/aggbug/42680.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windone0109/" target="_blank">windone</a> 2008-04-24 10:14 <a href="http://www.cnitblog.com/windone0109/archive/2008/04/24/42680.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>TCP/IP的通讯协议介绍</title><link>http://www.cnitblog.com/windone0109/archive/2008/04/24/42679.html</link><dc:creator>windone</dc:creator><author>windone</author><pubDate>Thu, 24 Apr 2008 02:13:00 GMT</pubDate><guid>http://www.cnitblog.com/windone0109/archive/2008/04/24/42679.html</guid><wfw:comment>http://www.cnitblog.com/windone0109/comments/42679.html</wfw:comment><comments>http://www.cnitblog.com/windone0109/archive/2008/04/24/42679.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/windone0109/comments/commentRss/42679.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windone0109/services/trackbacks/42679.html</trackback:ping><description><![CDATA[<br>这部分简要介绍一下TCP/IP的内部结构，为讨论与互联网有关的安全问题打下基础。TCP/IP协议组之所以流行，部分原因是因为它可以用在各种各样的信道和底层协议（例如T1和X.25、以太网以及RS-232串行接口）之上。确切地说，TCP/IP协议是一组包括TCP协议和IP协议，UDP（User Datagram Protocol）协议、ICMP（Internet Control Message Protocol）协议和其他一些协议的协议组。 <br><br>TCP/IP整体构架概述 <br><br>TCP/IP协议并不完全符合OSI的七层参考模型。传统的开放式系统互连参考模型，是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层、数据链路层、网路层、传输层、话路层、表示层和应用层。而TCP/IP通讯协议采用了4层的层级结构，每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为： <br><br>应用层：应用程序间沟通的层，如简单电子邮件传输（SMTP）、文件传输协议（FTP）、网络远程访问协议（Telnet）等。 <br><br>传输层：在此层中，它提供了节点间的数据传送服务，如传输控制协议（TCP）、用户数据报协议（UDP）等，TCP和UDP给数据包加入传输数据并把它传输到下一层中，这一层负责传送数据，并且确定数据已被送达并接收。 <br><br>互连网络层：负责提供基本的数据封包传送功能，让每一块数据包都能够到达目的主机（但不检查是否被正确接收），如网际协议（IP）。 <br><br>网络接口层：对实际的网络媒体的管理，定义如何使用实际网络（如Ethernet、Serial Line等）来传送数据。 <br><br>TCP/IP中的协议 <br><br>以下简单介绍TCP/IP中的协议都具备什么样的功能，都是如何工作的： <br><br>1． IP <br><br>网际协议IP是TCP/IP的心脏，也是网络层中最重要的协议。 <br><br>IP层接收由更低层（网络接口层例如以太网设备驱动程序）发来的数据包，并把该数据包发送到更高层---TCP或UDP层；相反，IP层也把从TCP或UDP层接收来的数据包传送到更低层。IP数据包是不可靠的，因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。IP数据包中含有发送它的主机的地址（源地址）和接收它的主机的地址（目的地址）。 <br><br>高层的TCP和UDP服务在接收数据包时，通常假设包中的源地址是有效的。也可以这样说，IP地址形成了许多服务的认证基础，这些服务相信数据包是从一个有效的主机发送来的。IP确认包含一个选项，叫作IP source routing，可以用来指定一条源地址和目的地址之间的直接路径。对于一些TCP和UDP的服务来说，使用了该选项的IP包好像是从路径上的最后一个系统传递过来的，而不是来自于它的真实地点。这个选项是为了测试而存在的，说明了它可以被用来欺骗系统来进行平常是被禁止的连接。那么，许多依靠IP源地址做确认的服务将产生问题并且会被非法入侵。 <br><br>2. TCP <br><br>如果IP数据包中有已经封好的TCP数据包，那么IP将把它们向&#8216;上&#8217;传送到TCP层。TCP将包排序并进行错误检查，同时实现虚电路间的连接。TCP数据包中包括序号和确认，所以未按照顺序收到的包可以被排序，而损坏的包可以被重传。 <br><br>TCP将它的信息送到更高层的应用程序，例如Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层，TCP层便将它们向下传送到IP层，设备驱动程序和物理介质，最后到接收方。 <br><br>面向连接的服务（例如Telnet、FTP、rlogin、X Windows和SMTP）需要高度的可靠性，所以它们使用了TCP。DNS在某些情况下使用TCP（发送和接收域名数据库），但使用UDP传送有关单个主机的信息。 <br><br>3.UDP <br><br>UDP与TCP位于同一层，但对于数据包的顺序错误或重发。因此，UDP不被应用于那些使用虚电路的面向连接的服务，UDP主要用于那些面向查询---应答的服务，例如NFS。相对于FTP或Telnet，这些服务需要交换的信息量较小。使用UDP的服务包括NTP（网络时间协议）和DNS（DNS也使用TCP）。 <br><br>欺骗UDP包比欺骗TCP包更容易，因为UDP没有建立初始化连接（也可以称为握手）（因为在两个系统间没有虚电路），也就是说，与UDP相关的服务面临着更大的危险。 <br><br>4.ICMP <br><br>ICMP与IP位于同一层，它被用来传送IP的的控制信息。它主要是用来提供有关通向目的地址的路径信息。ICMP的&#8216;Redirect&#8217;信息通知主机通向其他系统的更准确的路径，而&#8216;Unreachable&#8217;信息则指出路径有问题。另外，如果路径不可用了，ICMP可以使TCP连接&#8216;体面地&#8217;终止。PING是最常用的基于ICMP的服务。 <br><br>5. TCP和UDP的端口结构 <br><br>TCP和UDP服务通常有一个客户/服务器的关系，例如，一个Telnet服务进程开始在系统上处于空闲状态，等待着连接。用户使用Telnet客户程序与服务进程建立一个连接。客户程序向服务进程写入信息，服务进程读出信息并发出响应，客户程序读出响应并向用户报告。因而，这个连接是双工的，可以用来进行读写。 <br><br>两个系统间的多重Telnet连接是如何相互确认并协调一致呢？TCP或UDP连接唯一地使用每个信息中的如下四项进行确认： <br><br>源IP地址 发送包的IP地址。 <br><br>目的IP地址 接收包的IP地址。 <br><br>源端口 源系统上的连接的端口。 <br><br>目的端口 目的系统上的连接的端口。 <br><br>端口是一个软件结构，被客户程序或服务进程用来发送和接收信息。一个端口对应一个16比特的数。服务进程通常使用一个固定的端口，例如，SMTP使用25、Xwindows使用6000。这些端口号是&#8216;广为人知&#8217;的，因为在建立与特定的主机或服务的连接时，需要这些地址和目的地址进行通讯。<img src ="http://www.cnitblog.com/windone0109/aggbug/42679.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windone0109/" target="_blank">windone</a> 2008-04-24 10:13 <a href="http://www.cnitblog.com/windone0109/archive/2008/04/24/42679.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Windows蓝屏死机画面解读</title><link>http://www.cnitblog.com/windone0109/archive/2008/04/23/42652.html</link><dc:creator>windone</dc:creator><author>windone</author><pubDate>Wed, 23 Apr 2008 08:46:00 GMT</pubDate><guid>http://www.cnitblog.com/windone0109/archive/2008/04/23/42652.html</guid><wfw:comment>http://www.cnitblog.com/windone0109/comments/42652.html</wfw:comment><comments>http://www.cnitblog.com/windone0109/archive/2008/04/23/42652.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/windone0109/comments/commentRss/42652.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windone0109/services/trackbacks/42652.html</trackback:ping><description><![CDATA[<p>数 值 叙 述 <br>0 0x0000 作业完成。 <br>1 0x0001 不正确的函数。 <br>2 0x0002 系统找不到指定的档案。 <br>3 0x0003 系统找不到指定的路径。 <br>4 0x0004 系统无法开启档案。 <br>5 0x0005 拒绝存取。 <br>6 0x0006 无效的代码。 <br>7 0x0007 储存体控制区块已毁。 <br>8 0x0008 储存体空间不足，无法处理这个指令。 <br>9 0x0009 储存体控制区块位址无效。 <br>10 0x000A 环境不正确。 <br>11 0x000B 尝试载入一个格式错误的程式。 <br>12 0x000C 存取码错误。 <br>13 0x000D 资料错误。 <br>14 0x000E 储存体空间不够，无法完成这项作业。 <br>15 0x000F 系统找不到指定的磁碟机。 <br>16 0x0010 无法移除目录。 <br>17 0x0011 系统无法将档案移到 其他的磁碟机。 <br>18 0x0012 没有任何档案。 <br>19 0x0013 储存媒体为防写状态。 <br>20 0x0014 系统找不到指定的装置。 <br>21 0x0015 装置尚未就绪。 <br>22 0x0016 装置无法识别指令。 <br>23 0x0017 资料错误 (cyclic redundancy check) 24 0x0018 程式发出一个长 度错误的指令。 <br>25 0x0019 磁碟机在磁碟找不到 持定的磁区或磁轨。 <br>26 0x001A 指定的磁碟或磁片无法存取。 <br>27 0x001B 磁碟机找不到要求的磁区。 <br>28 0x001C 印表机没有纸。 <br>29 0x001D 系统无法将资料写入指定的磁碟机。 <br>30 0x001E 系统无法读取指定的装置。 <br>31 0x001F 连接到系统的某个装置没有作用。 <br>32 0x0020 The process cannot access the file because it is being used by <br>another process. <br>33 0x0021 档案的一部份被锁定， 现在无法存取。 <br>34 0x0022 磁碟机的磁片不正确。 请将 %2 (Volume Serial Number: %3) 插入磁碟 <br>机%1。 <br>36 0x0024 开启的分享档案数量太多。 <br>38 0x0026 到达档案结尾。 <br>39 0x0027 磁碟已满。 <br>50 0x0032 不支援这种网路要求。 <br>51 0x0033 远端电脑无法使用。 <br>52 0x0034 网路名称重复。 <br>53 0x0035 网路路径找不到。 <br>54 0x0036 网路忙碌中。 <br>55 0x0037 The specified network resource or device is no longer available. <br>56 0x0038 The network BIOS command limit has been reached. 57 0x0039 网路配接卡发生问题。 <br>58 0x003A 指定的伺服器无法执行要求的作业。 <br>59 0x003B 网路发生意外错误。 <br>60 0x003C 远端配接卡不相容。 <br>61 0x003D 印表机伫列已满。 <br>62 0x003E 伺服器的空间无法储存等候列印的档案。 <br>63 0x003F 等候列印的档案已经删除。 <br>64 0x0040 指定的网路名称无法使用。 <br>65 0x0041 拒绝存取网路。 <br>66 0x0042 网路资源类型错误。 <br>67 0x0043 网路名称找不到。 <br>68 0x0044 超过区域电脑网路配接卡的名称限制。 <br>69 0x0045 超过网路 BIOS 作业阶段的限制。 <br>70 0x0046 远端伺服器已经暂停或者正在起始中。 <br>71 0x0047 由於连线数目已达上限，此时无法再连线到这台远端电脑。 <br>72 0x0048 指定的印表机或磁碟装置已经暂停作用。 <br>80 0x0050 档案已经存在。 <br>82 0x0052 无法建立目录或档案。 <br>83 0x0053 INT 24失败 <br>84 0x0054 处理这项要求的储存体无法使用。 <br>85 0x0055 近端装置名称已经在使用中。 <br>86 0x0056 指定的网路密码错误。 <br>87 0x0057 参数错误。 <br>88 0x0058 网路发生资料写入错误。 <br>89 0x0059 此时系统无法执行其他行程。 <br>100 0x0064 无法建立其他的系统 semaphore。 101 0x0065 属於其他行程专用的 semaphore 。 <br>102 0x0066 semaphore 已经设定，而且无法关闭。 <br>103 0x0067 无法指定 semaphore 。 <br>104 0x0068 在岔断时间无法要求专用的 semaphore 。 <br>105 0x0069 此 semaphore 先前的拥有权已经结束。 <br>106 0x006A 请将磁片插入 %1。 <br>107 0x006B 因为代用的磁片尚未插入，所以程式已经停止。 <br>108 0x006C 磁碟正在使用中或被锁定。 <br>109 0x006D Pipe 已经中止。 <br>110 0x006E 系统无法开启指定的 装置或档案。 <br>111 0x006F 档名太长。 <br>112 0x0070 磁碟空间不足。 <br>113 0x0071 没有可用的内部档案识别字。 <br>114 0x0072 目标内部档案识别字不正确。 <br>117 0x0075 由应用程式所执行的 IOCTL 呼叫 不正确。 <br>118 0x0076 写入验证参数值不正确。 <br>119 0x0077 系统不支援所要求的指令。 <br>120 0x0078 此项功能仅在 Win32 模式有效。 <br>121 0x0079 semaphore 超过逾时期间。 <br>122 0x007A 传到系统呼叫的资料区域 太小。 <br>123 0x007B 档名、目录名称或储存体标签语法错误。 <br>124 0x007C 系统呼叫层次不正确。 <br>125 0x007D 磁碟没有设定标签。 <br>126 0x007E 找不到指定的模组。 <br>127 0x007F 找不到指定的程序。 <br>128 0x0080 没有子行程可供等待。 <br>129 0x0081 %1 这个应用程式无法在 Win32 模式下执行。 <br>130 0x0082 Attempt to use a file handle to an open disk partition for an <br>operation other than raw disk I/O. <br>131 0x0083 尝试将档案指标移至档案开头之前。 <br>132 0x0084 无法在指定的装置或档案，设定档案指标。 <br>133 0x0085 JOIN 或 SUBST 指令 无法用於 内含事先结合过的磁碟机。 <br>134 0x0086 尝试在已经结合的磁碟机，使用 JOIN 或 SUBST 指令。 <br>135 0x0087 尝试在已经替换的磁碟机，使 用 JOIN 或 SUBST 指令。 <br>136 0x0088 系统尝试删除 未连结过的磁碟机的连结关系。 <br>137 0x0089 系统尝试删除 未替换过的磁碟机的替换关系。 <br>138 0x008A 系统尝试将磁碟机结合到已经结合过之磁碟机的目录。 <br>139 0x008B 系统尝试将磁碟机替换成已经替换过之磁碟机的目录。 <br>140 0x008C 系统尝试将磁碟机替换成已经替换过之磁碟机的目录。 <br>141 0x008d系统尝试将磁碟机 SUBST 成已结合的磁碟机 目录。 <br>142 0x008E 系统此刻无法执行 JOIN 或 SUBST。 <br>143 0x008F 系统无法将磁碟机结合或替换同一磁碟机下目录。 <br>144 0x0090 这个目录不是根目录的子目录。 <br>145 0x0091 目录仍有资料。 <br>146 0x0092 指定的路径已经被替换过。 <br>147 0x0093 资源不足，无法处理这项 指令。 <br>148 0x0094 指定的路径这时候无法使用。 <br>149 0x0095 尝试要结合或替换的磁碟机目录，是已经替换过的的目标。 <br>150 0x0096 CONFIG.SYS 档未指定系统追踪资讯，或是追踪功能被取消。 <br>151 0x0097 指定的 semaphore事件 DosMuxSemWait 数目不正确。 <br>152 0x0098 DosMuxSemWait 没有执行；设定太多的 semaphore。 153 0x0099 DosMuxSemWait 清单不正确。 <br>154 0x009A 您所输入的储存媒体标 元长度限制。 <br>155 0x009B 无法建立其他的执行绪。 <br>156 0x009C 接收行程拒绝接受信号。 <br>157 0x009D 区段已经被舍弃，无法被锁定。 <br>158 0x009E 区段已经解除锁定。 <br>159 0x009F 执行绪识别码的位址不正确。 <br>160 0x00A0 传到 DosExecPgm 的引数字串不正确。 <br>161 0x00A1 指定的路径不正确。 <br>162 0x00A2 信号等候处理。 <br>164 0x00A4 系统无法建立执行绪。 <br>167 0x00A7 无法锁定档案的部份范围。 <br>170 0x00AA 所要求的资源正在使用中。 <br>173 0x00AD 取消范围的锁定要求不明显。 <br>174 0x00AE 档案系统不支援自动变更锁定类型。 <br>180 0x00B4 系统发现不正确的区段号码。 <br>182 0x00B6 作业系统无法执行 %1。 <br>183 0x00B7 档案已存在，无法建立同一档案。 <br>186 0x00BA 传送的旗号错误。 <br>187 0x00BB 指定的系统旗号找不到。 <br>188 0x00BC 作业系统无法执行 %1。 <br>189 0x00BD 作业系统无法执行 %1。 <br>190 0x00BE 作业系统无法执行 %1。 <br>191 0x00BF 无法在 Win32 模式下执行 %1。 <br>192 0x00C0 作业系统无法执行 %1。 <br>193 0x00C1 %1 不是正确的 Win32 应用程式。 <br>194 0x00C2 作业系统无法执行 %1。 <br>195 0x00C3 作业系统无法执行 %1。 <br>196 0x00C4 作业系统无法执行 这个应用程式。 <br>197 0x00C5 作业系统目前无法执行 这个应用程式。 <br>198 0x00C6 作业系统无法执行 %1。 <br>199 0x00C7 作业系统无法执行 这个应用程式。 <br>200 0x00C8 程式码的区段不可以大於或等於 64KB。 <br>201 0x00C9 作业系统无法执行 %1。 <br>202 0x00CA 作业系统无法执行 %1。 <br>203 0x00CB 系统找不到输入的环境选项。 \r <br>205 0x00CD 在指令子目录下，没有任何行程有信号副处理程式。 <br>206 0x00CE 档案名称或副档名太长。 <br>207 0x00CF ring 2 堆叠使用中。 <br>208 0x00D0 输入的通用档名字元 * 或 ? 不正确， 或指定太多的通用档名字元。 <br>209 0x00D1 所传送的信号不正确。 <br>210 0x00D2 无法设定信号处理程式。 <br>212 0x00D4 区段被锁定，而且无法重新配置。 <br>214 0x00D6 附加到此程式或动态连结模组的动态连结模组太多。 <br>215 0x00D7 Can`t nest calls to LoadModule. <br>230 0x00E6 The pipe state is invalid. <br>231 0x00E7 所有的 pipe instances 都在忙碌中。 <br>232 0x00E8 The pipe is being closed. <br>233 0x00E9 No process is on the other end of the pipe. <br>234 0x00EA 有更多可用的资料。 <br>240 0x00F0 作业阶段被取消。 <br>254 0x00FE 指定的延伸属性名称无效。 <br>255 0x00FF 延伸的属性不一致。 <br>259 0x0103 没有可用的资料。 <br>266 0x010A 无法使用 Copy API。 <br>267 0x010B 目录名称错误。 <br>275 0x0113 延伸属性不适用於缓冲区。 <br>276 0x0114 在外挂的档案系统上的延伸属性档案已经毁损。 <br>277 0x0115 延伸属性表格档满。 <br>278 0x0116 指定的延伸属性代码无效。 <br>282 0x011A 外挂的这个档案系统不支援延伸属性。 <br>288 0x0120 意图释放不属於叫用者的 mutex。 <br>298 0x012A semaphore 传送次数过多。 <br>299 0x012B 只完成 Read/WriteProcessMemory 的部份要求。 <br>317 0x013D 系统找不到位於讯息档 %2 中编号为 0x%1 的讯息。 <br>487 0x01E7 尝试存取无效的位址。 <br>534 0x0216 运算结果超过 32 位元。 <br>535 0x0217 通道的另一端有一个行程在接送资料。 <br>536 0x0218 等候行程来开启通道的另一端。 <br>994 0x03E2 存取延伸的属性被拒。 <br>995 0x03E3 由於执行绪结束或应用程式要求，而异常终止 I/O 作业。 <br>996 0x03E4 重叠的 I/O 事件不是设定成通知状态。 <br>997 0x03E5 正在处理重叠的 I/O 作业。 <br>998 0x03E6 对记忆体位置的无效存取。 <br>999 0x03E7 执行 inpage 作业发生错误。 <br>1001 0x03E9 递回太深，堆叠满溢。 <br>1002 0x03EA 视窗无法用来传送讯息。 <br>1003 0x03EB 无法完成这项功能。 <br>1004 0x03EC 旗号无效。 <br>1005 0x03ED 储存媒体未含任何可辨识的档案系统。 请确定以载入所需的系统驱动 <br>程式，而且该储存媒体并未毁损。 <br>1006 0x03EE 储存该档案的外部媒体发出警告， 表示该已开启档案已经无效。 <br>1007 0x03EF 所要求的作业无法在全萤幕模式下执行。 <br>1008 0x03F0 An attempt was made to reference a token that does not exist. <br>1009 0x03F1 组态系统登录资料库毁损。 <br>1010 0x03F2 组态系统登录机码无效。 <br>1011 0x03F3 无法开启组态系统登录机码。 <br>1012 0x03F4 无法读取组态系统登录机码。 <br>1013 0x03F5 无法写入组态系统登录机码。 <br>1014 0x03F6 系统登录资料库中的一个档案必须使用记录或其他备份还原。 已经还 <br>原成功。 <br>1015 0x03F7 系统登录毁损。其中某个档案毁损、或者该档案的 系统映对记忆体 内 <br>容毁损、会是档案无法复原。 <br>1016 0x03F8 系统登录起始的 I/O 作业发生无法复原的错误。 系统登录无法读入、 <br>写出或更新，其中的一个档案 内含系统登录在记忆体中的内容。 <br>1017 0x03F9 系统尝试将档案载入系统登录或将档案还原到系统登录中， 但是，指 <br>定档案的格式不是系统登录档的格式。 <br>1018 0x03FA 尝试在标示为删除的系统登录机码，执行不合法的操作。 <br>1019 0x03FB 系统无法配置系统登录记录所需的空间。 <br>1020 0x03FC 无法在已经有子机码或数值的系统登录机码建立符号连结。 <br>1021 0x03FD 无法在临时机码下建立永久的子机码。 <br>1022 0x03FE 变更要求的通知完成，但资讯 并未透过呼叫者的缓冲区传回。呼叫者 <br>现在 需要自行列举档案，找出变更的地方。 <br>1051 0x041B 停止控制已经传送给其他服务 所依峙的一个服务。 <br>1052 0x041C 要求的控制对此服务无效 <br>1053 0x041D The service did not respond to the start or control request in <br>a timely fashion. 1054 0x041E 无法建立服务的执行绪。 <br>1055 0x041F 服务资料库被锁定。 <br>1056 0x0420 这种服务已经在执行。 <br>1057 0x0421 帐户名称错误或者不存在。 <br>1058 0x0422 指定的服务暂停作用，无法启动。 <br>1059 0x0423 指定循环服务从属关系。 <br>1060 0x0424 指定的服务不是安装进来的服务。 <br>1061 0x0425 该服务项目此时无法接收控制讯息。 <br>1062 0x0426 服务尚未启动。 <br>1063 0x0427 无法连线到服务控制程式。 <br>1064 0x0428 处理控制要求时，发生意外状况。 <br>1065 0x0429 指定的资料库不存在。 <br>1066 0x042A 服务传回专属於服务的错误码。 <br>1067 0x042B The process terminated unexpectedly. <br>1068 0x042C 从属服务或群组无法启动。 <br>1069 0x042D 因为登入失败，所以没有启动服务。 <br>1070 0x042E 在启动之後，服务在启动状态时当机。 <br>1071 0x042F 指定服务资料库锁定无效。 <br>1072 0x0430 指定的服务已经标示为删除。 <br>1073 0x0431 指定的服务已经存在。 <br>1074 0x0432 系统目前正以上一次执行成功的组态执行。 <br>1075 0x0433 从属服务不存在，或已经标示为删除。 <br>1076 0x0434 目前的启动已经接受上一次执行成功的 控制设定。 <br>1077 0x0435 上一次启动之後，就没有再启动服务。 <br>1078 0x0436 指定的名称已经用於服务名称或服务显示 名称。 <br>1100 0x044C 已经到了磁带的最後。 <br>1101 0x044D 到了档案标示。 <br>1102 0x044E 遇到磁带的开头或分割区。 <br>1103 0x044F 到了档案组的结尾。 <br>1104 0x0450 磁带没有任何资料。 <br>1105 0x0451 磁带无法制作分割区。 <br>1106 0x0452 存取多重容体的新磁带时，发现目前 区块大小错误。 <br>1107 0x0453 载入磁带时，找不到磁带分割区资讯。 <br>1108 0x0454 无法锁住储存媒体退带功能。 <br>1109 0x0455 无法解除载入储存媒体。 <br>1110 0x0456 磁碟机中的储存媒体已经变更。 <br>1111 0x0457 已经重设 I/O 汇流排。 <br>1112 0x0458 磁碟机没有任何储存媒体。 <br>1113 0x0459 目标 multi-byte code page，没有对应 Unicode 字元。 <br>1114 0x045A 动态连结程式库 (DLL) 起始常式失败。 <br>1115 0x045B 系统正在关机。 <br>1116 0x045C 无法中止系统关机，因为没有关机的动作在进行中。 <br>1117 0x045D 因为 I/O 装置发生错误，所以无法执行要求。 <br>1118 0x045E 序列装置起始失败，会取消载入序列驱动程式。 <br>1119 0x045F 无法开启装置。这个装置与其他装置共用岔断要求 (IRQ)。 至少已经 <br>有一个使用同一IRQ 的其他装置已经开启。 <br>1120 0x0460 A serial I/O operation was completed by another write to the serial port. (The IOCTL_SERIAL_XOFF_COUNTER reached zero.) <br>1121 0x0461 因为已经过了逾时时间，所以序列 I/O 作业完成。 <br>(IOCTL_SERIAL_XOFF_COUNTER 不是零。) <br>1122 0x0462 在磁片找不到任何的 ID 位址标示。 <br>1123 0x0463 磁片磁区 ID 栏位与磁片控制卡追踪位址 不符。 <br>1124 0x0464 软式磁碟机控制卡回报了一个软式磁碟机驱动程式无法识别 的错误。 <br>1125 0x0465 软式磁碟机控制卡传回与暂存器中不一致的结果。 <br>1126 0x0466 存取硬碟失败，重试後也无法作业。 <br>1127 0x0467 存取硬碟失败，重试後也无法作业。 <br>1128 0x0468 存取硬碟时，必须重设磁碟控制卡，但是 连重设的动作也失败。 <br>1129 0x0469 到了磁带的最後。 <br>1130 0x046A 可用伺服器储存空间不足，无法处理这项指令。 <br>1131 0x046B 发现潜在的锁死条件。 <br>1132 0x046C 指定的基本位址或档案位移没有适当 对齐。 <br>1140 0x0474 尝试变更系统电源状态，但其他的应用程式或驱动程式拒绝。 <br>1141 0x0475 系统 BIOS 无法变更系统电源状态。 <br>1150 0x047E 指定的程式需要新的 Windows 版本。 <br>1151 0x047F 指定的程式不是 Windows 或 MS-DOS 程式。 <br>1152 0x0480 指定的程式已经启动，无法再启动一次。 <br>1153 0x0481 指定的程式是为旧版的 Windows 所写的。 <br>1154 0x0482 执行此应用程式所需的程式库档案之一毁损。 <br>1155 0x0483 没有应用程式与此项作业的指定档案建立关联。 <br>1156 0x0484 传送指令到应用程式发生错误。 <br>1157 0x0485 找不到执行此应用程式所需的程式库档案。 <br>1200 0x04B0 指定的装置名称无效。 <br>1201 0x04B1 装置现在虽然未连线，但是它是一个记忆连线。 <br>1202 0x04B2 尝试记忆已经记住的装置。 <br>1203 0x04B3 提供的网路路径找不到任何网路提供程式。 <br>1204 0x04B4 指定的网路提供程式名称错误。 <br>1205 0x04B5 无法开启网路连线设定档。 <br>1206 0x04B6 网路连线设定档坏掉。 <br>1207 0x04B7 无法列举非容器。 <br>1208 0x04B8 发生延伸的错误。 <br>1209 0x04B9 指定的群组名称错误。 <br>1210 0x04BA 指定的电脑名称错误。 <br>1211 0x04BB 指定的事件名称错误。 <br>1212 0x04BC 指定的网路名称错误。 <br>1213 0x04BD 指定的服务名称错误。 <br>1214 0x04BE 指定的网路名称错误。 <br>1215 0x04BF 指定的资源分享名称错误。 <br>1216 0x04C0 指定的密码错误。 <br>1217 0x04C1 指定的讯息名称错误。 <br>1218 0x04C2 指定的讯息目的地错误。 <br>1219 0x04C3 所提供的条件与现有的条件组发生冲突。 <br>1220 0x04C4 尝试与网路伺服器连线，但是 与该伺服器的连线已经太多。 <br>1221 0x04C5 其他网路电脑已经在使用这个工作群组或网域名称。 <br>1222 0x04C6 网路没有显示出来或者没有启动。 <br>1223 0x04C7 使用者已经取消作业。 <br>1224 0x04C8 要求的作业无法在已经开启使用者对应区段的档案执行。 <br>1225 0x04C9 远端系统拒绝网路连线。 <br>1226 0x04CA 关闭网路连线。 <br>1227 0x04CB 网路传输端点已经有相关连的位址。 <br>1228 0x04CC 位址尚未有相关的网路端点。 <br>1229 0x04CD 尝试在不存在的网路连线作业。 <br>1230 0x04CE 在作用中的网路连线上执行无效的作业。 <br>1231 0x04CF 无法传输到远端网路。 <br>1232 0x04D0 无法连线到远端系统。 <br>1233 0x04D1 远端系统不支援传输通讯协定。 <br>1234 0x04D2 远端系统的目的地网路端点没有作何执行中的服务。 <br>1235 0x04D3 要求已经中止。 <br>1236 0x04D4 进端系统已经中断网路连线。 <br>1237 0x04D5 无法完成作业，请重试。 <br>1238 0x04D6 无法与伺服器连线，原因是这个帐户已经到达同时连线数目 的上限。 <br>1239 0x04D7 尝试在这个帐户未授权的时间登入网路。 <br>1240 0x04D8 这个帐户无法从这个地方登入网路。 <br>1241 0x04D9 网路位址无法用於这个要求的作业。 <br>1242 0x04DA 服务已经登记。 <br>1243 0x04DB 指定的服务不存在。 <br>1244 0x04DC 作业无法执行，原因是使用者尚未授权使用。 <br>1245 0x04DD 要求的作业无法执行，原因是使用者尚未登入网路。 指定的服务不存 <br>在。 <br>1246 0x04DE 传回要求呼叫者继续工作的讯息。 <br>1247 0x04DF 在完成起始作业之後，尝试再执行起始作业。 <br>1248 0x04E0 没有其他的近端装置。 <br>1300 0x0514 并未指定所有的参照权限给呼叫者。 <br>1301 0x0515 帐户名称与安全识别码之间尚有未执行完成的连线。 <br>1302 0x0516 此帐户并未设定特别的系统配额限制。 <br>1303 0x0517 没有可用的加密机码。传回一个已知的加密机码。 <br>1304 0x0518 NT 密码太复杂，无法转换成 LAN Manager 密码。传回的LAN Manager <br>密码是一个空字串。 <br>1305 0x0519 修正层次不详。 <br>1306 0x051A 表示两个修订阶层不相容。 <br>1307 0x051B 此安全识别码无法指定为这个物件的拥有者。 <br>1308 0x051C 此安全识别码无法指定为主要的物件群组。 <br>1309 0x051D An attempt has been made to operate on an impersonation token <br>by a thread that is not currently impersonating a client. <br>1310 0x051E 不可以关闭群组。 <br>1311 0x051F 目前没有可登入的伺服器，所以无法处理登入要求。 <br>1312 0x0520 指定登入作业阶段不存在。该作业阶段可能已经 结束。 <br>1313 0x0521 指定的权限不存在。 <br>1314 0x0522 用户端未列出要求的权限。 <br>1315 0x0523 所提供的名称格式与帐户名称不符。 <br>1316 0x0524 指定的使用者已经存在。 <br>1317 0x0525 指定的使用者不存在。 <br>1318 0x0526 指定的群组已经存在。 <br>1319 0x0527 指定的群组不存存。 <br>1320 0x0528 指定的使用者帐户已经是指定群组的成员，或 指定的群组因为内含成 <br>员而无法删除。 <br>1321 0x0529 指定的使用者帐户不是指定的群组帐户成员。 <br>1322 0x052A 上一次留下来的管理帐户无法关闭或 删除。 <br>1323 0x052B 无法更新密码。所输入的密码不正确。 <br>1324 0x052C 无法更新密码。所输入的新密码内含不符合 密码规定。 <br>1325 0x052D 因为违反密码更新规则，所以无法更新密码。 <br>1326 0x052E 登入失败: 无法辨识的使用者名称或密码错误。 <br>1327 0x052F 登入失败: 使用者帐户限制。 <br>1328 0x0530 登入失败: 违反帐户登入时间限制。 <br>1329 0x0531 登入失败: 使用者不可登入这部电脑。 <br>1330 0x0532 登入失败: 指定的帐户密码过期。 <br>1331 0x0533 登入失败: 帐户目前无效。 <br>1332 0x0534 帐户名称与帐户识别码不符。 <br>1333 0x0535 一次要求太多的近端使用者识别码 (local user identifiers， LUIDs)。 1334 0x0536 没有可用的近端使用者识别码 (local user identifiers ，LUIDs)。 <br>1335 0x0537 安全识别码的转授权部份对这个特殊用法无效。 <br>1336 0x0538 无效的存取控制清单结构。 <br>1337 0x0539 安全识别码结构无效。 <br>1338 0x053A 安全叙述子结构无效。 <br>1340 0x053C 无法建立继承的存取控制清单或存取控制项目。 <br>1341 0x053D 伺服器目前无效。 <br>1342 0x053E 伺服器目前可以使用。 <br>1343 0x053F 所提供的值是无效的识别码授权值。 <br>1344 0x0540 没有可供安全资讯更新使用的记忆体。 <br>1345 0x0541 指定的属性无效，或指定的属性与整个群组的 属性不相容。 <br>1346 0x0542 Either a required impersonation level was not provided, or the provided impersonation level is invalid. <br>1347 0x0543 Cannot open an anonymous level security token. <br>1348 0x0544 所要求的认可资讯类别无效。 <br>1349 0x0545 The type of the token is inappropriate for its attempted use. <br>1350 0x0546 无法在没有相关连安全性的物件执行 安全 <br>1351 0x0547 指示无法连到 Windows NT 伺服器，或网域中的物件 受到保护，所以 <br>无法撷取所需的物件。 <br>1352 0x0548 安全帐户管理程式或区域安全授权伺服器状态 不正确，所以无法执行 <br>安全作业。 <br>1353 0x0549 网域状态错误，所以无法执行安全作业。 <br>1354 0x054A 只有网域的主网域控制器才能使用这项作业。 <br>1355 0x054B 指定的网域不存在。 <br>1356 0x054C 指定的网域已经存在。 <br>1357 0x054D 尝试超过每个伺服器的网域数目限制。 <br>1358 0x054E 因为磁碟上发生严重的储存媒体错误或是资料结构毁损， 所以无法完 <br>成所要求的作业。 <br>1359 0x054F 安全帐户资料库内有内部不一致的状况。 <br>1360 0x0550 通用的存取类型包含在某一存取遮罩中， 这个遮罩已经对应到非通用 <br>的类型。 <br>1361 0x0551 安全叙述子的格式不正确 (absolute or self-relative)。 1362 0x0552 所要求的动作只能给登入使用。 而目前呼叫该动作的处理并未登录为 <br>登入。 <br>1363 0x0553 无法利用已经在使用的识别码来启动新的作业阶段。 <br>1364 0x0554 无法识别指定的确认包装。 <br>1365 0x0555 登入作业阶段不是在与要求的作业一致的 状态。 <br>1366 0x0556 登入作业阶段识别码已经在使用中。 <br>1367 0x0557 登入要求包含无效的登入类型值。 <br>1368 0x0558 Unable to impersonate via a named pipe until data has been <br>read from that pipe. <br>1369 0x0559 The transaction state of a Registry subtree is incompatible <br>with the requested operation. <br>1370 0x055A 内部安全资料库毁损。 <br>1371 0x055B 无法在内建帐户执行这项作业。 <br>1372 0x055C 无法在这个内建的特殊群组执行这项操作。 <br>1373 0x055D 无法在这个内建的特殊使用者执行这项作业。 <br>1374 0x055E 因为群组目前是使用者的主要群组，所以不能 从群组移除使用者。 <br>1375 0x055F The token is already in use as a primary token. <br>1376 0x0560 指定的区域群组不存在。 <br>1377 0x0561 指定的帐户名称不是区域群组的成员。 <br>1378 0x0562 指定的帐户名称已经是区域群组的成员。 <br>1379 0x0563 指定的区域群组已经存在。 <br>1380 0x0564 登入失败: 使用者无权在这部电脑以要求的 登入类型登入。 <br>1381 0x0565 The maximum number of secrets that may be stored in a single <br>system has been exceeded. <br>1382 0x0566 The length of a secret exceeds the maximum length allowed. <br>1383 0x0567 本区安全性授权资料库内含的资料不一致。 <br>1384 0x0568 在登入时，使用者的安全内容累积太多的 安全识别码。 <br>1385 0x0569 登入失败: 使用者尚未被许可在这个台脑使用要求的登入类型。 <br>1386 0x056A 交叉加密的密码需要变更使用者的密码。 <br>1387 0x056B 因为成员不存在，所以无法将新的成员新增到 区域群组。 <br>1388 0x056C 因为成员的帐号类型不正确，所以无法新增到区域群组。 <br>1389 0x056D 指定的安全 ID 太多。 <br>1390 0x056E 需要用到交互加密的密码才能变更这个使用者的密码。 <br>1391 0x056F 表示存取控制清单没有可继承的元件 <br>1392 0x0570 档案或目录已毁，无法读取资料。 <br>1393 0x0571 磁碟结构已毁无法读取。 <br>1394 0x0572 没有指定之登入作业阶段的使用者作业阶段机码。 <br>1395 0x0573 正在存取的服务仅授权特定数目的连线。 而目前连线数目已达上限， <br>所以无法再建立服务连线。 <br>1400 0x0578 视窗代码无效。 <br>1401 0x0579 功能表识别码无效。 <br>1402 0x057A 游标控制码无效。 <br>1403 0x057B 加速键表格控制码无效。 <br>1404 0x057C Invalid hook handle. 1405 0x057D 无效的多重视窗位置结构控制。 <br>1406 0x057E 无法建立最上层的子视窗。 <br>1407 0x057F 找不到 window class。 <br>1408 0x0580 无效的视窗，属於其他的执行绪。 <br>1409 0x0581 快速键已经登记。 <br>1410 0x0582 Class 已经存在。 <br>1411 0x0583 Class 不存在。 <br>1412 0x0584 Class 仍然有开启的视窗。 <br>1413 0x0585 无效的索引。 <br>1414 0x0586 图示控制码无效。 <br>1415 0x0587 使用专用的 DIALOG 视窗文字。 <br>1416 0x0588 清单方块识别码找不到。 <br>1417 0x0589 找不到任何通配字元。 <br>1418 0x058A 执行绪 (thread) 没有开启剪贴簿。 <br>1419 0x058B 快速键没有登记。 <br>1420 0x058C 不是有效的对话视窗。 <br>1421 0x058d Control ID 找不到。 <br>1422 0x058E 清单方块的讯息无效，因为没有任何的编辑控制码。 <br>1423 0x058F 视窗不是一个清单方块。 <br>1424 0x0590 高度必须小於 256。 <br>1425 0x0591 装置范围 (DC) 控制码无效。 <br>1426 0x0592 锁定程序类型无效。 <br>1427 0x0593 锁定程序无效。 <br>1428 0x0594 没有模组控制码就不能设定非本区的锁定。 <br>1429 0x0595 This hook procedure can only be set globally. <br>1430 0x0596 The journal hook procedure is already installed. <br>1431 0x0597 The hook procedure is not installed. <br>1432 0x0598 无效的单一选择清单方块讯息。 <br>1433 0x0599 LB_SETCOUNT 传送到 non-lazy 清单方块。 <br>1434 0x059A 这个清单方块不支援跳格停驻。 <br>1435 0x059B 不可毁损由其他执行绪所建立的物件。 <br>1436 0x059C 子视窗不能有功能表。 <br>1437 0x059D 视窗没有系统功能表。 <br>1438 0x059E 无效的讯息方块样式。 <br>1439 0x059F 无效的 system-wide (SPI_*) 参数。 <br>1440 0x05A0 萤幕已经锁定。 <br>1441 0x05A1 All handles to windows in a multiple-window position structure <br>must have the same parent. <br>1442 0x05A2 视窗不是子视窗。 <br>1443 0x05A3 GW_* 指令无效。 <br>1444 0x05A4 执行绪识别码无效。 <br>1445 0x05A5 无法处理多重文件介面视窗的讯息。 <br>1446 0x05A6 即现式功能表已在作用中。 <br>1447 0x05A7 视窗没有卷轴。 <br>1448 0x05A8 卷轴范围不可以大於 0x7FFF。 1449 0x05A9 无法以指定的方式显示或移除视窗。 <br>1450 0x05AA 系统资源不足，无法完成所要求的服务。 <br>1451 0x05AB 系统资源不足，无法完成所要求的服务。 <br>1452 0x05AC 系统资源不足，无法完成所要求的服务。 <br>1453 0x05AD 配额不足，无法完成所要求的服务。 <br>1454 0x05AE 配额不足，无法完成所要求的服务。 <br>1455 0x05AF 这项作业的 paging 档太小，无法完成作业。 <br>1456 0x05B0 找不到功能表项目。 <br>1500 0x05DC 事件记录档坏掉。 <br>1501 0x05DD 无法开启事件记录档，因此事件记录服务没有启动。 <br>1502 0x05DE 事件记录档已满。 <br>1503 0x05DF 事件记录档已经变更。 <br>1700 0x06A4 字串连结错误。 <br>1701 0x06A5 连结控制码 (binding handle) 的类型错误。 <br>1702 0x06A6 连结控制码 (binding handle) 无效。 <br>1703 0x06A7 不支援 RPC 通讯协定顺序。 <br>1704 0x06A8 RPC 通讯协定顺序无效。 <br>1705 0x06A9 字串 universal unique identifier (UUID) 无效。 <br>1706 0x06AA 端点格式错误。 <br>1707 0x06AB 网路位址无效。 <br>1708 0x06AC 找不到端点。 <br>1709 0x06AD 逾时数值无效。 <br>1710 0x06AE 找不到物件的 universal unique identifier (UUID)。 <br>1711 0x06AF 物件的 universal unique identifier (UUID) 已经登记。 <br>1712 0x06B0 类型的 universal unique identifier (UUID) 已经登记。 <br>1713 0x06B1 RPC 伺服器已经在听候。 <br>1714 0x06B2 没有登记通讯协定顺序。 <br>1715 0x06B3 RPC 伺服器没有听候指令。 <br>1716 0x06B4 管理员类型不详。 <br>1717 0x06B5 介面不详。 <br>1718 0x06B6 没有连线。 <br>1719 0x06B7 没有通讯协定顺序。 <br>1720 0x06B8 无法建立端点。 <br>1721 0x06B9 资源不足，无法完成作业。 <br>1722 0x06BA RPC 伺服器无法使用。 <br>1723 0x06BB RPC 伺服器太忙，无法完成这项作业。 <br>1724 0x06BC 网路选项无效。 <br>1725 0x06BD 这个执行绪 (thread) 没有任何执行的远端程序呼叫。 <br>1726 0x06BE 远端程序呼叫失败。 <br>1727 0x06BF 远端程序呼叫失败，所以没有执行。 <br>1728 0x06C0 远端程序呼叫 (remote procedure call，RPC) 通讯协定发生错误。 <br>1730 0x06C2 RPC 伺服器不支援转送语法。 <br>1732 0x06C4 不支援 universal unique identifier (UUID) 的类型。 <br>1733 0x06C5 封签 (tag) 无效。 <br>1734 0x06C6 阵列无效。 <br>1735 0x06C7 连结中没有项目名称。 <br>1736 0x06C8 名称语法无效。 <br>1737 0x06C9 名称语法不被支援。 <br>1739 0x06CB 没有任何网路位址可以用来建立全球唯一的识别码 (UUID)。 <br>1740 0x06CC 端点重复。 <br>1741 0x06CD 授权类型不详。 <br>1742 0x06CE 呼叫次数的上限太小。 <br>1743 0x06CF 字串太长。 <br>1744 0x06D0 找不到 RPC 通讯协定顺序。 <br>1745 0x06D1 程序号码超出范围。 <br>1746 0x06D2 连结中没有包含任何确认资讯。 <br>1747 0x06D3 确认服务不详。 <br>1748 0x06D4 确认层次不详。 <br>1749 0x06D5 安全内容无效。 <br>1750 0x06D6 确认服务不详。 <br>1751 0x06D7 项目无效。 <br>1752 0x06D8 伺服器端点无法执行这个作业。 <br>1753 0x06D9 端点对应程式没有其他的端点。 <br>1754 0x06DA 没有汇出任何的介面。 <br>1755 0x06DB 项目名称不完整。 <br>1756 0x06DC 版本选项无效。 <br>1757 0x06DD 没有其他的成员。 <br>1758 0x06DE 没有任何资料可以取消汇出。 <br>1759 0x06DF 介面找不到。 <br>1760 0x06E0 项目已经存在。 <br>1761 0x06E1 项目找不到。 <br>1762 0x06E2 名称服务无法使用。 <br>1763 0x06E3 网路位址系列无效。 <br>1764 0x06E4 要求的作业不受支援。 <br>1765 0x06E5 没有可用来模拟的安全内容。 <br>1766 0x06E6 远端程序呼叫 (RPC) 发生内部错误。 <br>1767 0x06E7 RPC 伺服器尝试用整数除以 0。 <br>1768 0x06E8 RPC 伺服器发生位址设定错误。 <br>1769 0x06E9 RPC 伺服器的浮点作业导致除以 0 的运算。 <br>1770 0x06EA RPC 伺服器发生浮点 underflow。 1771 0x06EB RPC 伺服器发生浮点 overflow。 1772 0x06EC 清单中可供连结自动代码 的 RPC 伺服器已经用完。 <br>1773 0x06ED 无法开启字元转换表档案。 <br>1774 0x06EE 包含字元转换表的档案少於 512 位元组。 <br>1775 0x06EF 在远端程序呼叫时，将空的 context 代码从 用户端传送到主电脑。 <br>1777 0x06F1 在远端程序呼叫时内容处理改变。 <br>1778 0x06F2 传送给远端程序呼叫的连结代码不符。 <br>1779 0x06F3 The stub is unable to get the remote procedure call handle. 1780 0x06F4 A null reference pointer was passed to the stub. <br>1781 0x06F5 The enumeration value is out of range. <br>1782 0x06F6 位元组计数太小。 <br>1783 0x06F7 The stub received bad data. <br>1784 0x06F8 所提供的使用者缓冲区对要求的作业无效。 <br>1785 0x06F9 无法辨识磁碟储存媒体。磁碟储存媒体可能还没有制作格式。 <br>1786 0x06FA The workstation does not have a trust secret. <br>1787 0x06FB The SAM database on the Windows NT Server does not have a <br>computer account for this workstation trust relationship. 1788 0x06FC The trust relationship between the primary domain and the trusted domain failed. 1789 0x06FD The trust relationship between this workstation and the primary domain failed. 1790 0x06FE 网路登入失败。 <br>1791 0x06FF 远端程序呼叫已经在这个执行绪进行中。 <br>1792 0x0700 尝试登入，但网路登入服务尚未启动。 <br>1793 0x0701 使用者的帐户已经过期。 <br>1794 0x0702 The redirector is in use and cannot be unloaded. <br>1795 0x0703 指定的印表机驱动程式已经安装。 <br>1796 0x0704 指定的连接埠无法识别。 <br>1797 0x0705 印表机驱动程式无法识别。 <br>1798 0x0706 列印处理器不详。 <br>1799 0x0707 指定的分隔档无效。 <br>1800 0x0708 指定的优先顺序无效。 <br>1801 0x0709 印表机名称无效。 <br>1802 0x070A 印表机已经存在。 <br>1803 0x070B 印表机指令无效。 <br>1804 0x070C 指定的资料类型无效。 <br>1805 0x070D 指定的 Environment 无效。 <br>1806 0x070E 没有其他的连结。 <br>1807 0x070F 这是一个跨网域的信任帐户。请用您的全域性使用者帐户或区域性使用 <br>者帐户来存取伺服器。 <br>1808 0x0710 这是一个电脑帐户。请使用您的全域性使用者帐户或区域性使用者帐户 <br>来存取这个伺服器。 <br>1809 0x0711 这是一个伺服端信任帐户。请用您的全域性使用者帐户或区域性使用者 <br>帐户来存取伺服器。 <br>1810 0x0712 指定的网域名称或安全识别码与网域信用资讯 不符。 <br>1811 0x0713 伺服器正在使用中，无法卸载。 <br>1812 0x0714 指定的影像档案没有有包含资源区段。 <br>1813 0x0715 在影像档找不到指定的资源类型。 <br>1814 0x0716 在影像档找不到指定的资源名称。 <br>1815 0x0717 在影像档找不到指定的资源语系识别码。 <br>1816 0x0718 可用的配额不足，无法处理这项指令。 <br>1817 0x0719 登录任何介面。 <br>1818 0x071A 处理这项呼叫的时候，伺服器发生变更。 <br>1819 0x071B 连结代码没有包含所有必须的资讯。 <br>1820 0x071C 通讯失败。 <br>1821 0x071D 要求的认证层次不被支援。 <br>1822 0x071E 没有登记任何主要的名称。 <br>1823 0x071F 指定的错误不是有效的 Windows RPC 错误码。 <br>1824 0x0720 A UUID that is valid only on this computer has been allocated. <br>1825 0x0721 发生安全包装指定错误。 <br>1826 0x0722 没有取消执行绪 (THREAD) 1827 0x0723 针对编码/解码的代码进行无效的作业。 <br>1828 0x0724 Incompatible version of the serializing package. <br>1829 0x0725 不相容的 RPC stub 版本。 <br>1898 0x076A 找不到群组成员。 <br>1899 0x076B 无法建立 endpoint mapper 资料库。 <br>1900 0x076C The object universal unique identifier (UUID) is the nil UUID. <br>1901 0x076D 指定的项目无效。 <br>1902 0x076E 指定表单名称错误。 <br>1903 0x076F 指定的表单大小错误。 <br>1904 0x0770 指定的印表机控制码已经在等候。 <br>1905 0x0771 指定的印表机已经删除 <br>1906 0x0772 印表机的状态错误。 <br>1907 0x0773 使用者在第一次登入之前，必须先变更它的密码。 <br>1908 0x0774 找不到这个网域的网域控制器。 <br>1909 0x0775 参照的帐户目前被锁定，无法登入。 <br>2000 0x07D0 像素格式无效。 <br>2001 0x07D1 指定的驱动程式无效。 <br>2002 0x07D2 视窗样式或 class 属性对这项作业无效。 <br>2003 0x07D3 不支援所要求的中继档作业。 <br>2004 0x07D4 不支援要求的传输作业。 <br>2005 0x07D5 不支援要求的剪辑作业。 <br>2202 0x089A 指定的使用者名称无效。 <br>2250 0x08CA 网路连线不存在。 <br>2401 0x0961 这个网路连线已经开启档案或者要求暂停。 <br>2402 0x0962 现行的连线仍然存在。 <br>2404 0x0964 装置正在使用中，无法中断连线。 <br>3000 0x0BB8 指定的印表机监视器不详。 <br>3001 0x0BB9 指定的印表机驱动程式正在使用中。 <br>3002 0x0BBA 找不到排存档。 <br>3003 0x0BBB 没有发出 StartDocPrinter 呼叫。 <br>3004 0x0BBC 没有发出 AddJob 呼叫。 <br>3005 0x0BBD 指定的列印处理器已经安装。 <br>3006 0x0BBE 指定列印监控程式已经安装。 <br>4000 0x0FA0 在处理指令时，WINS 发生错误。 <br>4001 0x0FA1 无法删除区域的 WINS。 <br>4002 0x0FA2 The importation from the file failed. 4003 0x0FA3 制作备份失败。以前执行过完整的备份吗 ? <br>4004 0x0FA4 无法制作备份，请检查目录。 <br>4005 0x0FA5 名称不在 WINS 资料库中。 <br>4006 0x0FA6 不可用未设定的印表机来取代。 <br>6118 0x17E6 这个工作群组的服务清单目前无法使用。</p><img src ="http://www.cnitblog.com/windone0109/aggbug/42652.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windone0109/" target="_blank">windone</a> 2008-04-23 16:46 <a href="http://www.cnitblog.com/windone0109/archive/2008/04/23/42652.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>自动化测试的作用</title><link>http://www.cnitblog.com/windone0109/archive/2008/03/11/40794.html</link><dc:creator>windone</dc:creator><author>windone</author><pubDate>Tue, 11 Mar 2008 09:07:00 GMT</pubDate><guid>http://www.cnitblog.com/windone0109/archive/2008/03/11/40794.html</guid><wfw:comment>http://www.cnitblog.com/windone0109/comments/40794.html</wfw:comment><comments>http://www.cnitblog.com/windone0109/archive/2008/03/11/40794.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/windone0109/comments/commentRss/40794.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windone0109/services/trackbacks/40794.html</trackback:ping><description><![CDATA[自动化测试的理解误区澄清：<br>1. 是不是所有测试用例都可以自动化。<br>— — 不是所有的测试用例和测试步骤都可以转化为自动化测试。<br>在自动化测试投入较多的行业领先企业其自动化测试率有的能达到<br>80％ 左右， 但仍有20％ 左右的测试用例需要手工来进行测试。在国<br>外通常从开发第一版测试用例时， 就同步进行自动化测试脚本的开<br>发， 所以自动化测试率普遍比中国的企业高。<br>2. 自动化测试找不到bug。<br>— — 自动化测试不直接找bug， 而是通过解放有经验的测试工程<br>师的生产力， 让其从重复的回归测试中解放出来。从事新测试方法<br>和测试手段的研究， 通过自动化测试解放出的生产力来间接找到更<br>多更深层次的新bug， 将产品质量再提高一个档次。<br>3. 自动化测试一定会马上大量减少测试人员数量。<br>— — 自动化测试不会大量减少测试人员数量。因为开展自动化测<br>试初期需要投入一定的人力进行自动化测试脚本开发， 并逐渐将自<br>动化测试脚本用于日常的测试中， 逐步减少手工测试人员从事重复<br>劳动的时间和人数。为了缩短自动化测试脚本的开发时间， 可考虑<br>将自动化测试脚本的开发工作借助外包的力量来早日实现大规模的<br>自动化测试。<br>4. 自动化测试能代替手工测试。<br>— — 自动化测试不适合新功能测试，适合对软件质量稳定且经常<br>需要被测试的模块进行投入开发。<br>5. 只有性能测试才需要自动化。<br>— — 自动化测试不光进行性能测试，更被大量应用于功能测试验<br>证， 在国外超过半数的自动化测试脚本都是用于功能验证测试。<br><br><br>通常自动化回归测试较手工回归测试有如下优势：<br>1. 大大缩短回归测试项目的时间， 在减少了人力投入的同时，<br>更能保证研发 项目能按时市场发布。甚至能缩短研发周期， 提前<br>发布产品。<br>2. 在同样的产品研发时间内，能对产品进行更全面的多次测试，<br>将新引入的问题尽可能的在产品发布前挖掘出来。<br>3. 能保障回归测试的质量。因为每次自动化回归测试都是保持<br>同一个标准的步骤， 环境和测试方法。所以测试结果具有一致性。<br>4. 让更有经验的测试工程师从回归测试中解放出来， 专注于新<br>的测试方法的研究， 来发现更多产品深层次的问题。<br>5. 减少测试工程师人数， 降低研发成本。因为实施自动化回归<br>测试后， 厂商就不用像以前一样保留一定的人力来专职进行回归测<br>试。<br>6. 能避免测试人力和时间的紧张， 而降低了回归测试的质量要<br>求， 导致引入了新问题而未被发现。<br>7. 没有在手工回归测试中因为测试工作的重复性和测试工程师<br>对已测过功能的过于自信， 而导致测试覆盖面不全， 新引入问题没<br>被发现的人为隐患。<br>8. 避免了部分工程师非主观的疏忽大意， 没有发现新引入的问<br>题。<img src ="http://www.cnitblog.com/windone0109/aggbug/40794.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windone0109/" target="_blank">windone</a> 2008-03-11 17:07 <a href="http://www.cnitblog.com/windone0109/archive/2008/03/11/40794.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>最近打算学习LoadRunner8.1和编程语言了</title><link>http://www.cnitblog.com/windone0109/archive/2008/01/02/38396.html</link><dc:creator>windone</dc:creator><author>windone</author><pubDate>Wed, 02 Jan 2008 13:51:00 GMT</pubDate><guid>http://www.cnitblog.com/windone0109/archive/2008/01/02/38396.html</guid><wfw:comment>http://www.cnitblog.com/windone0109/comments/38396.html</wfw:comment><comments>http://www.cnitblog.com/windone0109/archive/2008/01/02/38396.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/windone0109/comments/commentRss/38396.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windone0109/services/trackbacks/38396.html</trackback:ping><description><![CDATA[最近打算学习LoadRunner8.1和编程语言了，现在留个脚印！<img src ="http://www.cnitblog.com/windone0109/aggbug/38396.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windone0109/" target="_blank">windone</a> 2008-01-02 21:51 <a href="http://www.cnitblog.com/windone0109/archive/2008/01/02/38396.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>个人时间管理</title><link>http://www.cnitblog.com/windone0109/archive/2007/12/05/37366.html</link><dc:creator>windone</dc:creator><author>windone</author><pubDate>Wed, 05 Dec 2007 09:49:00 GMT</pubDate><guid>http://www.cnitblog.com/windone0109/archive/2007/12/05/37366.html</guid><wfw:comment>http://www.cnitblog.com/windone0109/comments/37366.html</wfw:comment><comments>http://www.cnitblog.com/windone0109/archive/2007/12/05/37366.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/windone0109/comments/commentRss/37366.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windone0109/services/trackbacks/37366.html</trackback:ping><description><![CDATA[<p>以年为单位的时间管理，以天为单位的时间管理和以小时为单位的时间管理三个层次。</p>
<p>以年为单位的时间管理</p>
<p>每年一月份，都会制定新的一年的行动计划，以及审视去年的实施情况（参见：2002 - 2003 - 2004）。这个计划的逻辑是：1）职业/生活目标，2）我的强项/弱项，3）具体的支持活动。只有制定了一年的计划，我才知道有朋友叫我去唱歌的时候是不是该拒绝，我才知道晚上是不是放弃看《康熙来了》而研读逻辑，我才知道要定期在当当上买书、做卓越的终生VIP。以年为单位的&#8220;有目标的&#8221;时间管理，帮我省下来的是若干月的时间。</p>
<p>以天为单位的时间管理</p>
<p>上帝给了每个人公平的每天三个八小时。第一个八小时大家都在工作，第二个八小时大家都在睡觉。人与人的区别都是第三个八小时创造出来的。如果你每天花3个小时上下班，2个小时吃早中晚饭，1个小时看电视，那你自由支配的时间就只剩2个小时了。你可能会非常节省的用它来陪女朋友看电影，健身或者唱歌，打打游戏。但是如果你从交通、睡觉、吃饭里分别省出一些时间花在学习上，你的学习进步将是惊人的。如果你把这些时间花在拓展交际、锻炼身体、参加公益，你的人脉增长将是同样惊人的。</p>
<p>以小时为单位的时间管理</p>
<p>我们和CPU一样都是分时系统，只不过芯片每秒分成上亿份，人类一小时分成四、五份。每一个时刻我们只能做一件事情，如果被打断再转回来的时候会有一定的时间浪费在回忆刚刚在做什么、做到哪里。我们需要锻炼在不同事务之间迅速切换的本领，这样就会更加有效的利用每一个小时的时间，在每一个时间片里100%的专注。这要借助工具，所以我一直在非常大的依赖于微软的Outlook和我的智能手机来管理我的每一个小时。把事情分为&#8220;轻重缓急&#8221;，按照规律去顺序处理。<br><br>如果你不能以年的方式来管理时间，那么这样白白浪费掉的时间让以小时为单位的时间管理显得毫无意义。如果不能在每一个小时上有所节省，那么每年的时间也无法真正管理。这三种层次是缺一不可的。<br><br>举个小例子用来结尾：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;曾经有人看我在手忙脚乱地办事的时候，告诉我一件他小时候经常做的一件事情，烧开水。说他小时候天天要自己起床做饭、洗漱后上学。每次他都会在向水壶防水的时候把煤气的火给打开，然后水也放得差不多了，再把水壶放煤气灶上。就这么个简单的过程，虽然可能浪费了一点煤气，但是节省了10秒的时间。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;我小时候的情况也类似，穿着睡衣起床烧早饭，然后去换衣服，等衣服换完后回来饭已经烧好了，然后再把饭盛在一个金属的盘子里，在一个脸盆里放适量的水，把盘子飘在水上去刷牙，等刷完牙，把盘子取出来，用脸盆的水洗脸，而这个时候盘子里的饭也不烫了，正好以比较快的速度吃完。当时从起床到最后整装出门的时间是15分钟。<br><br>最近总是很忙很忙，既然事情多了，有些时候就要计划下，看下优先级，和做事的步骤。需要有序有重点地处理事情。<br><br>只做不想和只想不做之间我需要寻找一个平衡点。给自己合理安排时间，善莫大耶！<br></p><img src ="http://www.cnitblog.com/windone0109/aggbug/37366.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windone0109/" target="_blank">windone</a> 2007-12-05 17:49 <a href="http://www.cnitblog.com/windone0109/archive/2007/12/05/37366.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>最新版 URTracker license验证原理剖析（2.11版）</title><link>http://www.cnitblog.com/windone0109/archive/2007/12/03/37289.html</link><dc:creator>windone</dc:creator><author>windone</author><pubDate>Mon, 03 Dec 2007 11:57:00 GMT</pubDate><guid>http://www.cnitblog.com/windone0109/archive/2007/12/03/37289.html</guid><wfw:comment>http://www.cnitblog.com/windone0109/comments/37289.html</wfw:comment><comments>http://www.cnitblog.com/windone0109/archive/2007/12/03/37289.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/windone0109/comments/commentRss/37289.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windone0109/services/trackbacks/37289.html</trackback:ping><description><![CDATA[<p>&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;URTracker事务跟踪系统是一款功能强大而且易于使用的Web方式的协同工作软件 。它用于帮助公司和团队跟踪工作中的问题，管理和记录这些问题的处理过程。 URTracker向您的团队提供了一个全功能的，高度可定制的软件工具用于报告和跟踪问题、需求、缺陷（BUG）或者任务等事务。它拥有丰富的自定义字段、基于项目和角色的权限控制、简化的工作流、友好的用户界面，以及更多的其他特性。我们非常确信您将会喜欢上URTracker，因为我们相信她正是您所需要的。&nbsp;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&#215;&nbsp;工具介绍：&nbsp; &nbsp;&nbsp; 要研究.NET当然离不开Reflector for .NET 。（Reflector is a class browser for .NET components. It supports assembly and namespace views, type and member search, XML documentation, call and callee graphs, IL, Visual Basic, Delphi and C# decompiler, dependency trees, base type and derived type hierarchies and resource viewers. ）&nbsp;&nbsp; 如果想把代码保存下来，那就需要Reflector的插件Reflector.FileDisassembler了。（The Reflector.FileDisassembler is a little add-in for the new version of Lutz Roeder''''''''s .NET Reflector that you can use to dump the decompiler output to files of any Reflector supported language (C#, VB.NET, Delphi). This is extremely useful if you are searching for a specific line of code as you can use VS.NET''''''''s "Find in Files" or want to convert a class from one language to another.）&nbsp; 下载地址：Reflector for .NET&nbsp;&nbsp; <a href="http://www.aisto.com/roeder/dotnet/"><u><font color=#0000ff>http://www.aisto.com/roeder/dotnet/</font></u></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Reflector.FileDisassembler&nbsp;&nbsp;&nbsp; <a href="http://www.denisbauer.com/NETTools/FileDisassembler.aspx"><u><font color=#0000ff>http://www.denisbauer.com/NETTools/FileDisassembler.aspx</font></u></a>&nbsp; &nbsp;正文：</p>
<p>严重声明：本文只作科研和学习用途。如果由本文产生的法律纠纷，一概与本人无关。</p>
<p>好了，了解了Reflector咱们就可以动手研究URTracker了。</p>
<p>当然首先用Reflector分析bin文件夹下的文件，一共有12个DLL文件，从他们的名称你也可以猜出个八八九九，反正你不怕麻烦你就挨个用Reflector试好了...^_^最后找到了WebTracker.dll 可疑，因为在Reflector按F3，你可以搜索到很多关于license的东东。哈哈，探究之路开始了。首先看看Lealsoft.URTracker.BLL下有个ServerLicenseProvider类。</p>
<p>public class ServerLicenseProvider : LicenseProvider{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Methods&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; static ServerLicenseProvider();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public ServerLicenseProvider();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protected virtual ServerLicense CreateEmptyLicense(Type type);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protected virtual ServerLicense CreateLicense(Type type, string key);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public override License GetLicense(LicenseContext context, Type type, object instance, bool allowExceptions);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protected virtual string GetLicenseData(Type type);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protected virtual Stream GetLicenseDataStream(Type type);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protected virtual bool ValidateLicense(ServerLicense license, out string errorMessage);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protected virtual bool ValidateLicenseData(Type type, string licenseData);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Fields&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private static readonly ServerLicenseCollector LicenseCollector;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Nested Types&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private sealed class ServerLicenseCollector&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Methods&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public ServerLicenseCollector();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void AddLicense(Type objectType, ServerLicense license);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public ServerLicense GetLicense(Type objectType);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void RemoveLicense(Type objectType);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Fields&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private IDictionary _collectedLicenses;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }}&nbsp;看到没，有几个CreateLicense，GetLicense，ValidateLicense ，ValidateLicenseData，GetLicenseDataStream这几个方法。好，打开看看都是什么东东。</p>
<p>protected virtual ServerLicense CreateLicense(Type type, string key){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char[] chArray1 = new char[1] { '''''''':'''''''' } ;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string[] textArray1 = key.Split(chArray1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return new URTrackerLicense(type, key, long.Parse(textArray1[1], CultureInfo.InvariantCulture), long.Parse(textArray1[2], CultureInfo.InvariantCulture), textArray1[3], long.Parse(textArray1[4], CultureInfo.InvariantCulture), long.Parse(textArray1[5], CultureInfo.InvariantCulture), textArray1[6]);}&nbsp;哇！就是新建license，URTrackerLicense后面有几个参数，什么也看不出，感觉是要用":"split开一个字符串。来，打开URTrackerLicense构造函数看看。public URTrackerLicense(Type type, string key, long startTicks, long ticks, string username, long userIndex, long clientCount, string mac) : base(type, key){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this._foundMac = false;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this._ticks = ticks;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this._startTicks = startTicks;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this._username = username;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this._userIndex = userIndex;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this._clientCount = clientCount;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this._mac = mac;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this._macArray = URTrackerLicense.GetMacArray();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this._foundMac = this._macArray.IndexOf(this._mac) &gt; -1;}&nbsp;哦，看到ticks，startTicks，username，userIndex，clientCount，mac难道这些就是所需参数"到期时间，使用开始时间，用户名，用户名索引，用户数，本机网卡地址"有点意思了。呵呵。找到了 URTrackerLicense 类，你就会知道我们猜测的没有错了。public class URTrackerLicense : ServerLicense{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Methods&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public URTrackerLicense(Type type, string key, long startTicks, long ticks, string username, long userIndex, long clientCount, string mac);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static ArrayList GetMacArray();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Properties&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public long ClientCount { get; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public bool IsExpired { get; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public string Mac { get; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public long StartTicks { get; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public long Ticks { get; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public long UserIndex { get; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public string Username { get; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Fields&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private long _clientCount;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private bool _foundMac;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private string _mac;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private ArrayList _macArray;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private long _startTicks;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private long _ticks;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private long _userIndex;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private string _username;}&nbsp;继续，刚才找了CreateLicense，现在开始找ValidateLicenseData。protected virtual bool ValidateLicenseData(Type type, string licenseData){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bool flag1 = false;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char[] chArray1 = new char[1] { '''''''':'''''''' } ;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string[] textArray1 = licenseData.Split(chArray1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (textArray1.Length == 7)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return (string.Compare("URTracker1Licensed", textArray1[0], true, CultureInfo.InvariantCulture) == 0);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return flag1;}&nbsp;哈哈，就是说刚才分析那个数组中textArray1[0]，必须是URTracker1Licensed！哈哈，这也进一步证实了我们要把注册信息字符串用":"分开的设想。Come on!离成功越来越近了！接着分析ValidateLicense。protected virtual bool ValidateLicense(ServerLicense license, out string errorMessage){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; errorMessage = null;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; URTrackerLicense license1 = (URTrackerLicense) license;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (license1.IsExpired)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; errorMessage = "The License has expired.";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true;}&nbsp;哦，知道了！原来是判断URTrackerLicense的属性IsExpired的真假！好，咱们看看属性IsExpired。public bool IsExpired{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((DateTime.Today.Ticks &lt;= this._ticks) &amp;&amp; (DateTime.Now.Ticks &gt;= this._startTicks))&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; return !this._foundMac;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }}&nbsp;&nbsp;知道了吧！就是判断当前时间要在ticks和startTicks之间！然后再判断Mac的值。&nbsp;现在查找Mac的相关类或者方法。找到了GetMacArray&nbsp;public static ArrayList GetMacArray(){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ManagementClass class1 = new ManagementClass("Win32_NetworkAdapterConfiguration");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ManagementObjectCollection collection1 = class1.GetInstances();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ArrayList list1 = new ArrayList();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; using (ManagementObjectCollection.ManagementObjectEnumerator enumerator1 = collection1.GetEnumerator())&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (enumerator1.MoveNext())&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; ManagementObject obj1 = enumerator1.get_Current();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((bool) obj1.get_Item("IPEnabled"))&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;&nbsp; list1.Add(obj1.get_Item("MacAddress").ToString().Replace(":", "").ToUpper());&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; obj1.Dispose();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return list1;}&nbsp;咱们从这里可以猜测的出，获得的Mac应该是去掉":" 如：01:AB:9E:6T:AB:9E:6T （注意了，是要大写的！）</p>
<p>对照URTrackerLicense的构造函数，我们就明白各字段的含义了。也可以构造出一个伪license。我随便构造一个，string data = "URTracker1Licensed:632598806976562500:735608407859509835:CaoxiCao:0:1000:0:AB9E6TAB9E6T";注意一下那两个ticks字段，需要把当前的ticks时间包含起来才行，否则IsExpired会判断为true的</p>
<p>回到刚才的思路 分析完 CreateLicense，GetLicense，ValidateLicense ，ValidateLicenseData。现在开始分析GetLicenseDataStream</p>
<p>protected virtual Stream GetLicenseDataStream(Type type){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string text3 = type.Assembly.GetName().Name;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type.Assembly.GetName().Version.ToString();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string text1 = "~/licenses/URTRACKER.aspx";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string text2 = null;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; text2 = HttpContext.Current.Server.MapPath(text1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!File.Exists(text2))&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; text2 = null;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (text2 != null)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return new FileStream(text2, FileMode.Open, FileAccess.Read, FileShare.Read);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return null;}&nbsp;知道了，这次知道了licenses生成的地方以及名称就是URTRACKER.aspx！！！</p>
<p>现在只是找到了licese格式，名称和位置，但是具体算法还是没有找到。继续在Lealsoft.URTracker.BLL命名空间找。呵呵！发现个叫EncryptedLicenseProvider的类，看看</p>
<p>居然有个东东！眼睛一亮！protected override Stream GetLicenseDataStream(Type type){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Stream stream1 = base.GetLicenseDataStream(type);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (stream1 == null)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return null;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DESCryptoServiceProvider provider1 = new DESCryptoServiceProvider();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; provider1.Key = EncryptedLicenseProvider.encryptionKeyBytes;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; provider1.IV = EncryptedLicenseProvider.encryptionKeyBytes;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ICryptoTransform transform1 = provider1.CreateDecryptor();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return new CryptoStream(stream1, transform1, CryptoStreamMode.Read);}&nbsp;因为我们看到了DES!哈哈，知道了，是DES加密！看到调用base.GetLicenseDataStream了吗？就是取得license的内容！！而它的基类就是我们刚刚分析过的ServerLicenseProvider。好，我们下一步搞清楚Key和IV的值。当找到这个静态构造函数时，心一下子揪了起来，成功了吗？快了！static EncryptedLicenseProvider(){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EncryptedLicenseProvider.encryptionKeyBytes = new byte[8] { 0x35, 0x37, 0x42, 50, 0x42, 0x31, 70, 0x36 } ;}&nbsp;^_^，终于哭了，搞清楚了DES加密啊！可以写代码生成伪licese文家了！本来俺做了个 注册机出来的，怕太对不起作者了，暂不公布了！</p>
<p>把源代码公布吧！</p>
<p>－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－using System;using System.Collections.Generic;using System.Text;using System.Security.Cryptography;using System.IO;</p>
<p>namespace ConsoleApplication2{&nbsp;class Program&nbsp;{&nbsp;&nbsp;static void Main(string[] args)&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;byte[] encryptionBytes = new byte[8] { 0x35, 0x37, 0x42, 50, 0x42, 0x31, 70, 0x36 };&nbsp;&nbsp;&nbsp;DESCryptoServiceProvider provider = new DESCryptoServiceProvider();&nbsp;&nbsp;&nbsp;provider.Key = encryptionBytes;&nbsp;&nbsp;&nbsp;provider.IV = encryptionBytes;&nbsp;&nbsp;&nbsp;ICryptoTransform transform1 = provider.CreateEncryptor();</p>
<p>&nbsp;&nbsp;&nbsp;string data = "URTracker1Licensed:632572024003281250:735608407859509835:CaoxiCao:0:10000:0111A7C7D865";&nbsp;&nbsp;&nbsp;Console.WriteLine(System.DateTime.Now.Ticks);&nbsp; //当前的ticks&nbsp;&nbsp;&nbsp;byte[] message = Encoding.UTF8.GetBytes(data);&nbsp;&nbsp;&nbsp;FileStream fs = new FileStream("c:\\URTRACKER.aspx", FileMode.Create,&nbsp;&nbsp;&nbsp;&nbsp; FileAccess.Write, FileShare.Write);&nbsp;&nbsp;&nbsp;CryptoStream cs = new CryptoStream(fs, transform1, CryptoStreamMode.Write);&nbsp;&nbsp;&nbsp;cs.Write(message, 0, message.Length);&nbsp;&nbsp;&nbsp;cs.Flush();&nbsp;&nbsp;&nbsp;cs.Close();&nbsp;&nbsp;&nbsp;fs.Close();</p>
<p>&nbsp;&nbsp;}&nbsp;}}<br><br><br>转自:http://www.24doings.com/circs_800.do，详情请浏览这个地址。</p><img src ="http://www.cnitblog.com/windone0109/aggbug/37289.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windone0109/" target="_blank">windone</a> 2007-12-03 19:57 <a href="http://www.cnitblog.com/windone0109/archive/2007/12/03/37289.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>事务跟踪/管理系统</title><link>http://www.cnitblog.com/windone0109/archive/2007/12/03/37288.html</link><dc:creator>windone</dc:creator><author>windone</author><pubDate>Mon, 03 Dec 2007 11:48:00 GMT</pubDate><guid>http://www.cnitblog.com/windone0109/archive/2007/12/03/37288.html</guid><wfw:comment>http://www.cnitblog.com/windone0109/comments/37288.html</wfw:comment><comments>http://www.cnitblog.com/windone0109/archive/2007/12/03/37288.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/windone0109/comments/commentRss/37288.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windone0109/services/trackbacks/37288.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;最近在思考着怎么能将公司的开发、测试等技术部门和现场的销售、实施人员能有效地连成一个整体。使现场的问题和需求能快速及时地反馈回公司，能让技术部门及时有效地处理并给现场以支持。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;所以打算弄个事务跟踪系统什么的，来对现场反馈的整个生命周期进行跟踪处理。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;起始打算直接找个免费的或破解的工具直接拿来使用，在网络上搜了半天，没有找到比较合适的。找了个URtracker事务跟踪管理系统，这个东东之前我曾经使用过两个月的，不过当时是用来管理BUG的，但毕竟那个是事务跟踪系统，和BUG的过程的流转是有所出入的。所以后来我使用TD后就被我舍弃了。没想到今天寻寻觅觅了一天后，最终需要的还是这个东西。这个东西是一个比较N的人的个人作品，蛮好使用的，不过鉴于他的防破解能力还比较不错，所以到现在还没有现成的傻瓜式的方法可以直接使用。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果需要用它又不打算花钱的话，它也许不是个很好的选择，尽管它现在可以有5个用户永久免费，毕竟还是嫌少。虽然我在一定程度上是抵制外国货的也是因为老外的东西贼贵，买不起(注：绿色版或免费版除外)，因此，在一定程度上我是爱国的。但是，我还不怎么打算花这个钱去购买key，社会主义社会不是讲要共同富裕么？我可不愿意眼睁睁地看着他拿我的钱去吃肉，所以，我打算用别人说的方式把它给破解了。如果愿意使用5个免费用户的可以到<a href="http://www.lealsoft.com/urtracker/download.htm">http://www.lealsoft.com/urtracker/download.htm</a>去下载使用。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;现在打算要不就自己折腾个内部使用的类似BBS的事务系统，要不就争取把URTracker给破解了，然后犒劳自己一顿&#8220;肉&#8221;吃。哈哈！<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果谁能给我提供一个合适的软件，小生在此感激不尽！<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p><img src ="http://www.cnitblog.com/windone0109/aggbug/37288.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windone0109/" target="_blank">windone</a> 2007-12-03 19:48 <a href="http://www.cnitblog.com/windone0109/archive/2007/12/03/37288.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>有关内存泄漏的知识</title><link>http://www.cnitblog.com/windone0109/archive/2007/11/23/36782.html</link><dc:creator>windone</dc:creator><author>windone</author><pubDate>Fri, 23 Nov 2007 03:51:00 GMT</pubDate><guid>http://www.cnitblog.com/windone0109/archive/2007/11/23/36782.html</guid><wfw:comment>http://www.cnitblog.com/windone0109/comments/36782.html</wfw:comment><comments>http://www.cnitblog.com/windone0109/archive/2007/11/23/36782.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/windone0109/comments/commentRss/36782.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windone0109/services/trackbacks/36782.html</trackback:ping><description><![CDATA[<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">有关内存泄漏的知识<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最近在看LR，对于内存泄漏的知识有点模糊，查找的有关资料，介绍了内存泄漏的概念，例子，分类，表现，和检测方法。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">1.概念<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 简单的说就是你申请了一块内存空间，使用完毕后没有释放掉。它的一般表现方式是程序运行时间越长，占用内存越多，最终用尽全部内存，整个系统崩溃。由程序申请的一块内存，且没有任何一个指针指向它，那么这块内存就泄露了。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">2.泄漏的例子<br>&nbsp;&nbsp;&nbsp; 举几个例子&nbsp;&nbsp; <br>&nbsp; void&nbsp;&nbsp; fun0()&nbsp;&nbsp; <br>&nbsp; {&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char&nbsp;&nbsp; *p=new&nbsp;&nbsp; char[100];&nbsp;&nbsp; <br>&nbsp; }&nbsp;&nbsp; <br>&nbsp; 执行完上面的函数就发生了泄露&nbsp;&nbsp; <br>&nbsp; 指针p是局部变量，函数执行完后，指针p被销毁，造成&nbsp;&nbsp; new&nbsp;&nbsp; char[100]的内存没有指针指向它&nbsp;&nbsp; <br>&nbsp; ，也就无法再使用，造成内存泄漏。&nbsp; <br>&nbsp; void&nbsp;&nbsp; fun1()&nbsp;&nbsp; <br>&nbsp; {&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char&nbsp;&nbsp; *p=new&nbsp;&nbsp; char[100];&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p=new&nbsp;&nbsp; char[100];&nbsp;&nbsp; <br>&nbsp; }&nbsp;&nbsp; <br>&nbsp; 这也泄露了&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; <br>&nbsp; void&nbsp;&nbsp; fun2()&nbsp;&nbsp; <br>&nbsp; {&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new&nbsp;&nbsp; char[100];&nbsp;&nbsp; <br>&nbsp; }&nbsp;&nbsp; <br>&nbsp; 这东西肯定泄露完了&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; <br>&nbsp; void&nbsp;&nbsp; fun3(char&nbsp;&nbsp; *a)&nbsp;&nbsp; <br>&nbsp; {&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char&nbsp;&nbsp; *p=new&nbsp;&nbsp; char[100];&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char&nbsp;&nbsp; *b=p;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p=a;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a=b;&nbsp;&nbsp; <br>&nbsp; }&nbsp;&nbsp; <br>&nbsp; 可能有泄露，赶紧去加内存条。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">3.泄漏的分类<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 以发生的方式来分类，内存泄漏可以分为4类： <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (1). 常发性内存泄漏。发生内存泄漏的代码会被多次执行到，每次被执行的时候都会导致一块内存泄漏。 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (2). 偶发性内存泄漏。发生内存泄漏的代码只有在某些特定环境或操作过程下才会发生。常发性和偶发性是相对的。对于特定的环境，偶发性的也许就变成了常发性的。所以测试环境和测试方法对检测内存泄漏至关重要。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (3). 一次性内存泄漏。发生内存泄漏的代码只会被执行一次，或者由于算法上的缺陷，导致总会有一块仅且一块内存发生泄漏。比如，在类的构造函数中分配内存，在析构函数中却没有释放该内存，所以内存泄漏只会发生一次。 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (4). 隐式内存泄漏。程序在运行过程中不停的分配内存，但是直到结束的时候才释放内存。严格的说这里并没有发生内存泄漏，因为最终程序释放了所有申请的内存。但是对于一个服务器程序，需要运行几天，几周甚至几个月，不及时释放内存也可能导致最终耗尽系统的所有内存。所以，我们称这类内存泄漏为隐式内存泄漏。 <br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 从用户使用程序的角度来看，内存泄漏本身不会产生什么危害，作为一般的用户，根本感觉不到内存泄漏的存在。真正有危害的是内存泄漏的堆积，这会最终消耗尽系统所有的内存。从这个角度来说，一次性内存泄漏并没有什么危害，因为它不会堆积，而隐式内存泄漏危害性则非常大，因为较之于常发性和偶发性内存泄漏它更难被检测到。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">4.内存泄漏的表现<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 内存泄漏或者是说，资源耗尽后，系统会表现出什么现象哪？<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cpu资源耗尽：估计是机器没有反应了，键盘，鼠标，以及网络等等。这个在windows上经常看见，特别是中了毒。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 进程id耗尽：没法创建新的进程了，串口或者telnet都没法创建了。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 硬盘耗尽： 机器要死了，交换内存没法用，日志也没法用了，死是很正常的。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 内存泄漏或者内存耗尽：新的连接无法创建，free的内存比较少。发生内存泄漏的程序很多，但是要想产生一定的后果，就需要这个进程是无限循环的，是个服务进程。当然，内核也是无限循环的，所以，如果内核发生了内存泄漏，情况就更加不妙。内存泄漏是一种很难定位和跟踪的错误，目前还没看到有什么好用的工具（当然，用户空间有一些工具，有静态分析的，也会动态分析的，但是找内核的内存泄漏，没有好的开源工具）<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 内存泄漏和对象的引用计数有很大的关系，再加上c/c++都没有自动的垃圾回收机制，如果没有手动释放内存，问题就会出现。如果要避免这个问题，还是要从代码上入手，良好的编码习惯和规范，是避免错误的不二法门。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">5.内存泄漏的检测<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 内存泄漏检测工具介绍： <a href="http://bbs.51testing.com/thread-87138-1-1.html">http://bbs.51testing.com/thread-87138-1-1.html</a>，只是列出了各个工具，具体实践没有。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 另外网上还有很多针对java和c＋＋等的内存泄漏的文章<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Java内存泄漏：<a href="http://www.blogjava.net/galaxyp/archive/2006/04/28/43724.html">http://www.blogjava.net/galaxyp/archive/2006/04/28/43724.html</a><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VC6.0内存泄漏检测：<a href="http://leoman95.spaces.live.com/blog/cns!87f442ce8fa434b1!131.entry">http://leoman95.spaces.live.com/blog/cns!87f442ce8fa434b1!131.entry</a><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LR中：如果Process\Private Bytes计数器和Process\Working Set计数器的值持续升高，同时Memory\Available bytes计数器的值却持续降低的话，说明很有可能是存在内存泄漏。<br></p><img src ="http://www.cnitblog.com/windone0109/aggbug/36782.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windone0109/" target="_blank">windone</a> 2007-11-23 11:51 <a href="http://www.cnitblog.com/windone0109/archive/2007/11/23/36782.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>冒烟测试与随机测试的联系与区别</title><link>http://www.cnitblog.com/windone0109/archive/2007/11/23/36779.html</link><dc:creator>windone</dc:creator><author>windone</author><pubDate>Fri, 23 Nov 2007 03:23:00 GMT</pubDate><guid>http://www.cnitblog.com/windone0109/archive/2007/11/23/36779.html</guid><wfw:comment>http://www.cnitblog.com/windone0109/comments/36779.html</wfw:comment><comments>http://www.cnitblog.com/windone0109/archive/2007/11/23/36779.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/windone0109/comments/commentRss/36779.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windone0109/services/trackbacks/36779.html</trackback:ping><description><![CDATA[<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">介绍两种不太普遍的测试类型-冒烟测试与随机测试。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">冒烟测试</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">冒烟测试（smoke testing）,据说是微软起的名字。在《微软项目求生法则》一书第14章&#8220;构建过程&#8221;关于冒烟测试，就是开发人员在个人版本的软件上执行目前的冒烟测试项目，确定新的程序代码不出故障。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">冒烟测试的名称可以理解为该种测试耗时短，仅用一袋烟功夫足够了。也有人认为是形象地类比新电路板功基本功能检查。任何新电路板焊好后，先通电检查，如果存在设计缺陷，电路板可能会短路，板子冒烟了。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">冒烟测试的对象是每一个新编译的需要正式测试的软件版本，目的是确认软件基本功能正常，可以进行后续的正式测试工作。冒烟测试的执行者是版本编译人员。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">在一般软件公司，软件在编写过程中，内部需要编译多个版本(Builds)，但是只有有限的几个版本需要执行正式测试（根据项目开发计划），这些需要执行的中间测试版本，在刚刚编译出来后，软件编译人员需要进行基本性能确认测试，例如是否可以正确安装/卸载，主要功能是否实现，是否存在严重死机或数据严重丢失等Bug。如果通过了该测试，则可以根据正式测试文档进行正式测试。否则，就需要重新编译版本，再次执行版本可接收确认测试，直到成功。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">新版本的基本功能确认检查的测试，有的公司成为版本健康检查(Build Sanity Check)。对于编译的本地化软件新版本，除了进行上面提到的各种测试检查，还要检查是否在新的本地化版本中正确包含了全部应该本地化的文件。可以通过采用文件和目录结构比较工具，首先比较源语言版本和本地化版本的文件和目录中的文件数目、文件名称和文件日期等，这个过程称为版本镜像检查(Build Image Check)。其次，分别安装源语言版本和本地化版本，比较安装后的文件和目录结构中的文件数目、文件名称和文件日期等，这个过程称为版本安装检查(Build Installing Check)。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">随机测试</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">在软件测试中除了根据测试样例和测试说明书进行测试外，还需要进行随机测试(Ad-hoc testing)，主要是根据测试者的经验对软件进行功能和性能抽查。随机测试是根据测试说明书执行样例测试的重要补充手段，是保证测试覆盖完整性的有效方式和过程。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">随机测试主要是对被测软件的一些重要功能进行复测，也包括测试那些当前的测试样例(TestCase)没有覆盖到的部分。另外，对于软件更新和新增加的功能要重点测试。重点对一些特殊点情况点、特殊的使用环境、并发性、进行检查。尤其对以前测试发现的重大Bug，进行再次测试，可以结合回归测试(Regressive testing)一起进行。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">理论上，每一个被测软件版本都需要执行随机测试，尤其对于最后的将要发布的版本更要重视随机测试。随机测试最好由具有丰富测试经验的熟悉被测软件的测试人员进行测试。对于被测试的软件越熟悉，执行随机测试越容易。只有不断的积累测试经验，包括具体的测试执行和对缺陷跟踪记录的分析，不断总结，才能提高。</p>
<img src ="http://www.cnitblog.com/windone0109/aggbug/36779.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windone0109/" target="_blank">windone</a> 2007-11-23 11:23 <a href="http://www.cnitblog.com/windone0109/archive/2007/11/23/36779.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于测试计划的制定的几点感触</title><link>http://www.cnitblog.com/windone0109/archive/2007/11/23/36770.html</link><dc:creator>windone</dc:creator><author>windone</author><pubDate>Fri, 23 Nov 2007 03:03:00 GMT</pubDate><guid>http://www.cnitblog.com/windone0109/archive/2007/11/23/36770.html</guid><wfw:comment>http://www.cnitblog.com/windone0109/comments/36770.html</wfw:comment><comments>http://www.cnitblog.com/windone0109/archive/2007/11/23/36770.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/windone0109/comments/commentRss/36770.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windone0109/services/trackbacks/36770.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1、计划的粒度。可能每<a onclick="javascript:tagshow(event, '%B8%F6%C8%CB');" href="javascript:;" target=_self><font style="COLOR: #000000" color=#0000ff>个人</font></a>制定计划时，都希望对项目有预见性，可以制定出非常详细的计划，以后按照此计划执行、跟踪，就可以了。其实不然，在项目初期，<a onclick="javascript:tagshow(event, '%B9%A4%D7%F7');" href="javascript:;" target=_self><font style="COLOR: #000000" color=#0000ff>工作</font></a>任务没有分解的足够细，没有历史数据参考，对项目的范围、工作量、资源都还处于估计状态，是很难制定出一个非常细致的计划的。所以在项目初始，其实可以制定一个粗略的计划的，然后随着项目范围越来越明确、工作越来越细分，计划可以不断细化，使之有效地指导下一步的工作。
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2、何时开始做计划。可能在项目管理/软件工程中有提出，如开发计划在什么时候做？<a onclick="javascript:tagshow(event, '%B2%E2%CA%D4');" href="javascript:;" target=_self><font style="COLOR: #000000" color=#0000ff>测试</font></a>计划在什么时候做？ 其实计划从我们一开始（立项）就在做了，只不过可能你初期的计划是非常粗略的，甚至不是文档化的，但这都是计划。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3、历史数据及经验。 经验对计划是有用的，但个人积累的经验可能不是相关项目的，即使是类似项目的，也可能因为不同的项目背景有所不同；所以积累历史数据是非常重要的，项目历史数据可参考性更强，有助于更加准确地制定计划。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4、计划的执行。&nbsp; 制定了计划就是要指导执行的，如果不按照计划执行，不如不花那个时间写文档。但有时候计划就是不如变化大。 那应该如何处理呢？可以从几点进行考虑：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1）计划是不是制定的不合理；如，没有加入松动时间，对资源限制考虑不够，如果项目组成员工作16*6都做不完，那你的计划应该修改了：）</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2）计划有没有定期跟踪并修订；计划与实际肯定是有偏差的，所以计划也要定期修订，如果计划与实际相差太多，可就没有指导意义了。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3）计划没有经过评审和项目组的认可。比如你订计划，一个人应该一天完成某个任务，实际上也许任务太难、也许他能力不够等等，他10天都做不完。你订这样的计划，也就没有什么意义了。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5、那计划应该何时修订？曾经一个项目组，走<a onclick="javascript:tagshow(event, 'CMM');" href="javascript:;" target=_self><font style="COLOR: #000000" color=#0000ff>CMM</font></a>过程，每一点点不符合都要形成不符合报告，然后修订，其实不必要的。不是连CMM都建议计划偏差到一定程度才做书面修订的吗？不过，如何定义这个程度那应该坐下讨论一下吧，毕竟拿来的不一定都适用。</p>
<img src ="http://www.cnitblog.com/windone0109/aggbug/36770.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windone0109/" target="_blank">windone</a> 2007-11-23 11:03 <a href="http://www.cnitblog.com/windone0109/archive/2007/11/23/36770.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> 产品开发初期测试人员应该做什么？</title><link>http://www.cnitblog.com/windone0109/archive/2007/10/16/34963.html</link><dc:creator>windone</dc:creator><author>windone</author><pubDate>Tue, 16 Oct 2007 11:34:00 GMT</pubDate><guid>http://www.cnitblog.com/windone0109/archive/2007/10/16/34963.html</guid><wfw:comment>http://www.cnitblog.com/windone0109/comments/34963.html</wfw:comment><comments>http://www.cnitblog.com/windone0109/archive/2007/10/16/34963.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/windone0109/comments/commentRss/34963.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windone0109/services/trackbacks/34963.html</trackback:ping><description><![CDATA[<span style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp; 产品开发初期需要测试人员吗？如果需要，他们要作哪些工作？这些问题曾经被很多朋友问起。据我个人了解，很多国内中小型公司是不注重产品开发初期乃至整个开发过程中的测试工作的。例证一：有些公司认为在设计初期投入测试人员是代价高昂且无意义的，所以他们会要求产品开发的第一个周期结束后，开始设计测试用例。例证二：认为测试工程师不需要参与到制定需求中，他们只要接受就可以了。于是乎，就出现了市场部门和开发部门直接沟通项目需求，测试经理直接参考需求设计文档的状况。例证三：测试经理确实在产品开发初期参与项目需求的制定，并写出测试计划。但产品质量却是现场部署的工程师说了算。到了现场，发现这里不合用户的意，那里运行不过。为了赶时间，只好坐在用户现场直接调试。改代码的改代码，调试的调试，哪里还管着产品是否需要全面的测试，只要能运行起来，用户能用，就是胜利&#8230;&#8230; <br><br>&nbsp;&nbsp;&nbsp; 权且不说这些管理行为是否更加浪费工钱，我们应该很容易得到关于&#8220;产品开发初期测试人员该做些什么&#8221;的一致答复：测试计划在开发初期能写挺好，不写也没什么问题。测试一定要做的。但把怎样的产品交给用户是不确定的。目标就有一个，让用户用上再说——无论是对一个已经经营多年的产品，还是一个刚起步的公司&#8230;&#8230;<br><br>&nbsp;&nbsp;&nbsp; 其实，对测试的理解不是点头说，测试很重要就够了； 对测试的理解不是去声称，我们有一柜子完整的测试文档；对测试的理解也不是只关心&#8220;做与不做&#8221;，而全然不理测试的有效性。<br><br>&nbsp;&nbsp;&nbsp; 软件测试该如何理解如何执行，是一个很大的题目。在这里，我更关心的是在项目设计初期，我们该不该忽略测试人员，而测试人员又该做些什么样的工作。<br><br>&nbsp;&nbsp;&nbsp; 微软最新的软件开发周期（product life cycle）分为产品定义（Product Definition），产品开发（Product Development），产品服务（Product Servicing）三个阶段。为了使资源得到最有效的使用，测试人员主要参与产品开发和后期服务这两个阶段。而在产品的定义阶段，则会有选择的要求一些资深测试工程师和测试经理一起参与。他们主要负责：通过验证产品核心功能或用户使用场景，确定产品各功能的优先级；参加产品使用场景定义的评审；参加用户体验文档的评审等。<br><br>&nbsp;&nbsp;&nbsp; 当然每个公司应该定义适合自己的开发模式。但是是否让测试工程师参与这些工作的主要目标应该是没有区别的：首先是熟悉客户需求；再来测试工程师应凭借自身经验，从测试和维护的角度来判断被细分的客户需求中，哪些是合理的，哪些是不合理的，并反馈给项目经理或市场部门，以供他们参考；最后，则要根据这些项目需求以及软件架构的文档，给出测试计划。<br><br>&nbsp;&nbsp;&nbsp; 上面这番描述是不是看上去并不很复杂，也不重要呢？非要在项目初期做吗？最终不都是根据需求文档来写测试计划嘛&#8230;&#8230;<br><br>&nbsp;&nbsp;&nbsp; 这当然是很重要的环节。理由如下：<br><br>&nbsp;&nbsp;&nbsp; 1． 产品的可测性严重影响了后期测试团队的工作效率以及测试的有效性。越早提出此类相关问题，越可能进入开发工程师设计范围。同时，该项指标可为项目经理提供一个与&#8220;开发难度&#8221;并列的&#8220;测试难度&#8221;——这将会影响到项目负责人对开发周期的设计。<br><br>&nbsp;&nbsp;&nbsp; 2． 除项目经理外，测试工程师是最需要了解用户需求以及用户使用体验的角色。参与这些由产品经理，项目经理编写的文档评审，会让测试工程师们得到除了列在文档上的核心需求外更多的信息——我们必须承认，因为人的因素，文档是不可能涵盖所有信息——这将会帮助工程师们以更快的速度对产品需求有更深层次的理解。<br><br>&nbsp;&nbsp;&nbsp; 3． 使得测试经理能够更早做出&#8220;是否需要提前编写测试工具或搭建测试平台&#8221;的决定。而这是很重要的一点。测试在开发流程中，因其所处位置，很容易因为开发团队中的突发事件导致周期被压缩。而自动化测试工具虽然可以节省人力，但相比于手工测试，开发周期较长，见效较晚。通常一个工具从开发到可以用于测试需要一周到数月不等——完全取决于工具的规模。因此，尽快确定&#8220;是否需要编写测试工具&#8221;是必要的。它可以帮助测试团队&#8220;抢回&#8221;更多的时间用于设计和调试测试工具，从而达到更好的测试效果。甚至可以避免掉因为时间不够，而拒绝采用自动化工具转为手工测试的被动局面。<br><br>&nbsp;&nbsp;&nbsp; 理由其实还可以列出很多。但是，我觉得这几点应是最为主要的。它们能足够说明为什么测试人员需要参与产品开发初期的工作以及他们需要做些什么的问题。这里再重复一下，在开发初期测试工程师需要：确定产品的可测性，了解用户需求，确定需要引入何种测试工具或平台。<br><br>&nbsp;&nbsp;&nbsp; 所以，在开发初期做好测试计划并不是可有可无的；用户需求不是只要工程师&#8220;买单&#8221;就可以的；不理会测试团队而埋头开发的产品，将会是一场&#8220;噩梦&#8221;，特别是当产品发布/部署的时候。<br><br>&nbsp;&nbsp;&nbsp; 但每个公司每个项目组不需要套用一样的模式。针对不同的需求，我们应该量体裁衣，做不同的剪裁。只是核心不该有变化，目标不该有变化。就如同国内一些公司对CMM的追宠——光有形，没有神，是实在不可取的。<br></span>
<img src ="http://www.cnitblog.com/windone0109/aggbug/34963.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windone0109/" target="_blank">windone</a> 2007-10-16 19:34 <a href="http://www.cnitblog.com/windone0109/archive/2007/10/16/34963.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>有时候，优秀的开发人员是被优秀的测试人员调教出来的</title><link>http://www.cnitblog.com/windone0109/archive/2007/10/16/34962.html</link><dc:creator>windone</dc:creator><author>windone</author><pubDate>Tue, 16 Oct 2007 11:26:00 GMT</pubDate><guid>http://www.cnitblog.com/windone0109/archive/2007/10/16/34962.html</guid><wfw:comment>http://www.cnitblog.com/windone0109/comments/34962.html</wfw:comment><comments>http://www.cnitblog.com/windone0109/archive/2007/10/16/34962.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/windone0109/comments/commentRss/34962.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windone0109/services/trackbacks/34962.html</trackback:ping><description><![CDATA[<p style="FONT-SIZE: 10pt">这则故事和老大对我的目前的最高要求不谋而合，这个是我今后努力的方向，向着这个目标，好好努力。A ZA !&nbsp;A ZA ! FIGHTING&nbsp;!<br><br><br><br><br>&nbsp;&nbsp;&nbsp; 7月，北京的天气非常的闷热。就在这个闷热的天气，公司走了两个优秀的开发人员，高兴的是，公司把我现在所跟的这个<a href="http://g5a44.mail.163.com/a/java_script:;" target=_blank>测试</a>项目的开发人员给留住了。经过这么长时间的测试<a href="http://g5a44.mail.163.com/a/java_script:;" target=_blank>工作</a>，让我体会到：有时候，优秀的开发人员是被优秀的测试人员调教出来的。<o:p></o:p></p>
<p style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;记得刚到我现在的这个公司，试用期过后，我就开始测试A软件，这个软件的开发人员编写程序很细心，也很有责任感，心态态度也很好。因为，我在测试他的程序的时候，他设计的界面都很好，考虑到了用户使用起来怎么样会方便，当我发现他的程序的问题的时候，我告诉他，他第一反应是看我怎么操作出现这样的问题的，然后他回去分析程序，用程序进行跟踪，我也帮他分析，我俩配合沟通都非常的好。每次我发现的问题，他认同的会很快的改过来，他不认同的问题会向我讲解他的理由，理由非常的充分，让我很服他不修正问题的原因。我们的关系处的非常好，不像其它同行所说的测试人员是开发人员的敌人。这样一直配合到我们把A软件正式发布了。<o:p></o:p></p>
<p style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;在这期间他还帮我写些小工具，方便我测试的时候好建造数据。一年半过去了，前不久，他在做其它用户的个性化程序，他都习惯性的先给我看看，看我能否给他找出问题，让我很高兴的发现，他的程序我无法在发现问题了，我只能提一些他有时忘记的用户操作的友好性问题。嘿嘿，他现在写程序的时候已经习惯注意到我测试时经常会发现他那些问题，他经常容易忽略那些问题。因此当他提交给我测试的时候，同样是在一段时间内，同样是个小功能的程序，但是我想尽我浑身招数我都找不到程序的一个bug了，当时，心里既是开心也是心酸，原因是：我不能在测试他的程序了，因为他对我太熟悉了，已经把我测试他程序中发现的问题在他写程序的时候就解决了。他已经在我这里顺利毕业了。以后有机会做白盒测试，兴许可以发现问题。^_^ 写到这里我还在回味着我曾经发现他的那些bug我们一起分析解决的场景。<o:p></o:p></p>
<p style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;然而，测试职业的工作不可能总是碰上这么好沟通和上进的开发人员，在工作的过程中，还是会碰上不是这一类的开发人员，那是2004年的7月底，我出差去现场测试B软件了，当时见到项目组新成员，彼此都不了解，第一次见面时，其中一个开发人员见我个子很矮，比较显小，就问我：你是从北京来的？，我说：是的。接着问：你来公司多长时间了？我说：快一年了。在接着问：你来这里是测试B软件的那个功能模块啊？我说：测试B软件的所有功能。他无语。当时给我感觉很是不好。在后来的工作中，我发现他工作很不负责任，自己写的程序不自测，问题很多；写程序不按照用户的需求写、不考虑用户使用怎么方便。所以那段时间，我让他改bug简直是要和他吵架，我可不喜欢和人吵架了，因为我从来没有赢过。嘿嘿，现在想想，当时是平生第一次碰上这样的人，这样的事情。没有经验，没有很好的做好调教这种类型的开发人员的工作，主要还是没有找到很好的方法。后来这个开发人员由于工作不负责任、不好好的干活，公司就让他离开了。当时我心里在偷偷的乐啊，以后不用测试他的程序了。那时候，测试他程序的日子里有时候好怀念测试A软件的日子。<o:p></o:p></p>
<p style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;现在测试的这个C软件有两个开发人员，嘿嘿，C1开发人员非常的优秀，沟通非常的好，和A软件的那个开发人员他俩不分上下。只不过他们的性格还是有些不太一样。然而C2开发人员心态就不太好、也没有很好的责任心。当我发现他负责领域的程序出现问题的时候，我告诉他，他第一反应就是没有问题啊，然后我复现给他，然后他分析是不是他的，而不是去找程序是怎么出错的，甚至让我在写bug的时候帮他定位问题出现在那里。在测试人员紧缺和时间有限的情况下，在我看不到原代码的情况下，我怎么去定位问题出现在那个地方。我们之间沟通的时间都花费在了谈论这个bug是谁的问题，这个bug要不要改，就这样花费在了这些没有价值的地方。还好，有了上一次的教训，这次面对C2的开发人员，我心态好好多，已经能平静和正常的对待这样的现象。<o:p></o:p></p>
<p style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;现在经过请教有经验的人，思考采用的方法是：<o:p></o:p></p>
<p style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;1、把这种情况反馈给项目经理，尤其在出现争论是否是bug的时候，如果出现分歧可以让项目经理来做判断，或者找他们部长之间进行讨论，不要和他直接产生冲突，因为我们是直接面对的，冲突对日常工作不好。<o:p></o:p></p>
<p style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;2、关于他的态度我可以和他说，我们的目的是修改程序，并不是确定谁有责任的事情，告诉他，是不是他的责任，我并不关心，我只关心程序是否好用。让他感觉我们之间并没有什么利益性质的冲突。<o:p></o:p></p>
<p style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;如果有那个同行看了这篇文章后有更好的方法，可以给我回信咯。嘿嘿，小女子在这里先谢谢了。<o:p></o:p></p>
<p style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;休息一下，现在来谈谈最后关于上面这些事情我发出的感慨吧：<o:p></o:p></p>
<p style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;优秀的开发人员，当他在发现问题的时候，他会和测试人员一起探讨问题是怎么发生的，甚至测试人员也会问开发人员为什么会出现，这样可以积累双方的经验。下次当他们在进行新产品的研发和测试的时候，开发人员就会知道测试人员会发现怎样的bug，他提交程序前就会给提前改了。那样测试人员可以用更多的时间去考虑那些没有被发现的bug。这样给公司节约不少成本和风险，对开发和测试本身来说都留下了更多的时间去探索更深层的东西。<o:p></o:p></p>
<p style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;碰到不开窍的开发人员，测试就要花费很多成本在沟通上和重复验证老bug是否解决上。测试的价值就不能更进一步发挥，时间长了，测试会处于一种疲惫状态，发现的效率会降低，这样对开发和测试都不好。解决方法：只能从人力资源下手了，招人的时候要严格的考核这<a href="http://g5a44.mail.163.com/a/java_script:;" target=_blank>个人</a>是否真正的符合这个岗位，不然的话，给公司和个人的成本损失太严重了。然而在实际工作中，对于一个开发人员的责任心往往很难一下子就了解，只有在项目中工作中逐渐的发现。<o:p></o:p></p>
<p style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;最后我告诉自己：有度量去容忍那些不能改变的事，有勇气去改变那些可能改变的事，用智慧去区别上述两类事情。<o:p></o:p></p>
<img src ="http://www.cnitblog.com/windone0109/aggbug/34962.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windone0109/" target="_blank">windone</a> 2007-10-16 19:26 <a href="http://www.cnitblog.com/windone0109/archive/2007/10/16/34962.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>