淡伯以明志

名利就好像浮云一样嘛
  • 2006-08-30

    Windows环境下Unicode编程总结 (ZZ)

     

    Windows环境下Unicode编程总结

    选择自 bigeye_leo 的 Blog

    UNICODE环境设置

    在安装Visual Studio时,在选择VC++时需要加入unicode选项,保证相关的库文件可以拷贝到system32下。



    UNICODE编译设置:

    C/C++, Preprocessor difinitions 去除_MBCS,加_UNICODE,UNICODE

    在ProjectSetting/link/output 中设置Entry为wWinMainCRTStartup

    反之为MBCS(ANSI)编译。



    Unicode :宽字节字符集



    1. 如何取得一个既包含单字节字符又包含双字节字符的字符串的字符个数?

    可以调用Microsoft Visual C++的运行期库包含函数_mbslen来操作多字节(既包括单字节也包括双字节)字符串。

    调用strlen函数,无法真正了解字符串中究竟有多少字符,它只能告诉你到达结尾的0之前有多少个字节。



    2. 如何对DBCS(双字节字符集)字符串进行操作?

    函数 描述

    PTSTR CharNext ( LPCTSTR ); 返回字符串中下一个字符的地址

    PTSTR CharPrev ( LPCTSTR, LPCTSTR ); 返回字符串中上一个字符的地址

    BOOL IsDBCSLeadByte( BYTE ); 如果该字节是DBCS字符的第一个字节,则返回非0值



    3. 为什幺要使用Unicode?

    (1) 可以很容易地在不同语言之间进行数据交换。

    (2) 使你能够分配支持所有语言的单个二进制.exe文件或DLL文件。

    (3) 提高应用程序的运行效率。

    Windows 2000是使用Unicode从头进行开发的,如果调用任何一个Windows函数并给它传递一个ANSI字符串,那幺系统首先要将字符串转换成Unicode,然后将Unicode字符串传递给操作系统。如果希望函数返回ANSI字符串,系统就会首先将Unicode字符串转换成ANSI字符串,然后将结果返回给你的应用程序。进行这些字符串的转换需要占用系统的时间和内存。通过从头开始用Unicode来开发应用程序,就能够使你的应用程序更加有效地运行。

    Windows CE 本身就是使用Unicode的一种操作系统,完全不支持ANSI Windows函数

    Windows 98 只支持ANSI,只能为ANSI开发应用程序。

    Microsoft公司将COM从16位Windows转换成Win32时,公司决定需要字符串的所有COM接口方法都只能接受Unicode字符串。



    4. 如何编写Unicode源代码?

    Microsoft公司为Unicode设计了WindowsAPI,这样,可以尽量减少代码的影响。实际上,可以编写单个源代码文件,以便使用或者不使用Unicode来对它进行编译。只需要定义两个宏(UNICODE和_UNICODE),就可以修改然后重新编译该源文件。

    _UNICODE宏用于C运行期头文件,而UNICODE宏则用于Windows头文件。当编译源代码模块时,通常必须同时定义这两个宏。



    5. Windows定义的Unicode数据类型有哪些?

    数据类型 说明

    WCHAR Unicode字符

    PWSTR 指向Unicode字符串的指针

    PCWSTR 指向一个恒定的Unicode字符串的指针

    对应的ANSI数据类型为CHAR,LPSTR和LPCSTR。

    ANSI/Unicode通用数据类型为TCHAR,PTSTR,LPCTSTR。



    6. 如何对Unicode进行操作?

    字符集 特性 实例

    ANSI 操作函数以str开头 strcpy

    Unicode 操作函数以wcs开头 wcscpy

    MBCS 操作函数以_mbs开头 _mbscpy

    ANSI/Unicode 操作函数以_tcs开头 _tcscpy(C运行期库)

    ANSI/Unicode 操作函数以lstr开头 lstrcpy(Windows函数)

    所有新的和未过时的函数在Windows2000中都同时拥有ANSI和Unicode两个版本。ANSI版本函数结尾以A表示;Unicode版本函数结尾以W表示。Windows会如下定义:

    #ifdef UNICODE

    #define CreateWindowEx CreateWindowExW

    #else

    #define CreateWindowEx CreateWindowExA

    #endif // !UNICODE



    7. 如何表示Unicode字符串常量?

    字符集 实例

    ANSI “string”

    Unicode L“string”

    ANSI/Unicode T(“string”)或_TEXT(“string”)if( szError[0] == _TEXT(‘J’) ){ }



    8. 为什幺应当尽量使用操作系统函数?

    这将有助于稍稍提高应用程序的运行性能,因为操作系统字符串函数常常被大型应用程序比如操作系统的外壳进程Explorer.exe所使用。由于这些函数使用得很多,因此,在应用程序运行时,它们可能已经被装入RAM。

    如:StrCat,StrChr,StrCmp和StrCpy等。



    9. 如何编写符合ANSI和Unicode的应用程序?

    (1) 将文本串视为字符数组,而不是chars数组或字节数组。

    (2) 将通用数据类型(如TCHAR和PTSTR)用于文本字符和字符串。

    (3) 将显式数据类型(如BYTE和PBYTE)用于字节、字节指针和数据缓存。

    (4) 将TEXT宏用于原义字符和字符串。

    (5) 执行全局性替换(例如用PTSTR替换PSTR)。

    (6) 修改字符串运算问题。例如函数通常希望在字符中传递一个缓存的大小,而不是字节。这意味着不应该传递sizeof(szBuffer),而应该传递(sizeof(szBuffer)/sizeof(TCHAR)。另外,如果需要为字符串分配一个内存块,并且拥有该字符串中的字符数目,那幺请记住要按字节来分配内存。这就是说,应该调用

    malloc(nCharacters *sizeof(TCHAR)),而不是调用malloc(nCharacters)。



    10. 如何对字符串进行有选择的比较?

    通过调用CompareString来实现。

    标志 含义

    NORM_IGNORECASE 忽略字母的大小写

    NORM_IGNOREKANATYPE 不区分平假名与片假名字符

    NORM_IGNORENONSPACE 忽略无间隔字符

    NORM_IGNORESYMBOLS 忽略符号

    NORM_IGNOREWIDTH 不区分单字节字符与作为双字节字符的同一个字符

    SORT_STRINGSORT 将标点符号作为普通符号来处理



    11. 如何判断一个文本文件是ANSI还是Unicode?

    判断如果文本文件的开头两个字节是0xFF和0xFE,那幺就是Unicode,否则是ANSI。



    12. 如何判断一段字符串是ANSI还是Unicode?

    用IsTextUnicode进行判断。IsTextUnicode使用一系列统计方法和定性方法,以便猜测缓存的内容。由于这不是一种确切的科学方法,因此 IsTextUnicode有可能返回不正确的结果。



    13. 如何在Unicode与ANSI之间转换字符串?

    Windows函数MultiByteToWideChar用于将多字节字符串转换成宽字符串;函数WideCharToMultiByte将宽字符串转换成等价的多字节字符串。



    14. Unicode和DBCS之间的区别

    Unicode使用(特别在C程序设计语言环境里)“宽字符集”。「Unicode中的每个字符都是16位宽而不是8位宽。」在Unicode中,没有单单使用8位数值的意义存在。相比之下,在“双位组字符集”中我们仍然处理8位数值。有些位组自身定义字符,而某些位组则显示需要和另一个位组共同定义一个字符。

    处理DBCS字符串非常杂乱,但是处理Unicode文字则像处理有秩序的文字。您也许会高兴地知道前128个Unicode字符(16位代码从0x0000到0x007F)就是ASCII字符,而接下来的128个Unicode字符(代码从0x0080到0x00FF)是ISO 8859-1对ASCII的扩展。Unicode中不同部分的字符都同样基于现有的标准。这是为了便于转换。希腊字母表使用从0x0370到0x03FF的代码,斯拉夫语使用从0x0400到0x04FF的代码,美国使用从0x0530到0x058F的代码,希伯来语使用从0x0590到0x05FF的代码。中国、日本和韩国的象形文字(总称为CJK)占用了从0x3000到0x9FFF的代码。Unicode的最大好处是这里只有一个字符集,没有一点含糊。



    15.衍生标准

    Unicode是一个标准。UTF-8是其概念上的子集,UTF-8是具体的编码标准。而UNICODE是所有想达到世界统一编码标准的标准。UTF-8标准就是Unicode(ISO10646)标准的一种变形方式,

    UTF的全称是:Unicode/UCS Transformation Format,其实有两种UTF,一种是UTF-8,一种是UTF-16,

    不过UTF-16使用较少,其对应关系如下:

    在Unicode中编码为 0000 - 007F 的 UTF-8 中编码形式为: 0xxxxxxx

    在Unicode中编码为 0080 - 07FF 的 UTF-8 中编码形式为: 110xxxxx 10xxxxxx

    在Unicode中编码为 0000 - 007F 的 UTF-8 中编码形式为: 1110xxxx 10xxxxxx 10xxxxxx



    utf-8是unicode的一个新的编码标准,其实unicode有过好几个标准.我们知道一直以来使用的unicode字符内码都是16位,它实际上还不能把全世界的所有字符编在一个平面系统,比如中国的藏文等小语种,所以utf-8扩展到了32位,也就是说理论在utf-8中可容纳二的三十二次方个字符. UNICODE的思想就是想把所有的字符统一编码,实现一个统一的标准.big5、gb都是独立的字符集,这也叫做远东字符集,把它拿到德文版的WINDOWS上可能将会引起字符编码的冲突....早期的WINDOWS默认的字符集是ANSI.notepad中输入的汉字是本地编码,但在NT/2000内部是可以直接支持UNICODE的。notepad.exe在WIN95和98中都是ANSI字符,在NT中则是UNICODE.ANSI和UNICODE可以方便的实现对应映射,也就是转换 ASCII是8位范围内的字符集,对于范围之外的字符如汉字它是无法表达的。unicode是16位范围内的字符集,对于不同地区的字符分区分配,unicode是多个IT巨头共同制定的字符编码标准。如果在unicode环境下比如WINDOWS NT上,一个字符占两字节16位,而在ANSI环境下如WINDOWS98下一个字符占一个字节8位.Unicode字符是16位宽,最多允许65,535字符,数据类型被称为WCHAR。

    对于已有的ANSI字符,unicode简单的将其扩展为16位:比如ANSI"A"=0x43,则对应的UNICODE为

    "A"= 0x0043

    而ASCII用七存放128个字符,ASCII是一个真正的美国标准,所以它不能满足其他国家的需要,例如斯拉夫语的字母和汉字于是出现了Windows ANSI字符集,是一种扩展的ASCII码,用8位存放字符,低128位仍然存放原来的ASCII码,

    而高128位加入了希腊字母等

    if def UNICODE

    TCHAR = wchar

    else

    TCHAR = char

    你需要在Project\Settings\C/C++\Preprocesser definitions中添加UNICODE和_UNICODE

    UINCODE,_UNICODE都要定义。不定义_UNICODE的话,用SetText(HWND,LPCTSTR),将被解释为SetTextA(HWND,LPTSTR),这时API将把你给的Unicode字符串看作ANSI字符串,显示乱码。因为windows API是已经编译好存在于dll中的,由于不管UNICODE还是ANSI字符串,都被看作一段buffer,如"0B A3 00 35 24 3C 00 00"如果按ANSI读,因为ANSI字串是以'\0'结束的,所以只能读到两字节"0B A3 \0",如果按UNICODE读,将完整的读到'\0\0'结束。

    由于UNICODE没有额外的指示位,所以系统必须知道你提供的字串是哪种格式。此外,UNICODE好象是ANSI C++规定的,_UNICODE是windows SDK提供的。如果不编写windows程序,可以只定义UNICODE。



    开发过程:

    围绕着文件读写、字符串处理展开。文件主要有两种:.txt和.ini文件

    1. 在unicode和非unicode环境下字符串做不同处理的,那么需要参考以上9,10两条,以适应不同环境得字符串处理要求。

    对文件读写也一样。只要调用相关接口函数时,参数中的字符串前都加上_TEXT等相关宏。如果写成的那个文件需要是unicode格式保存的,那么在创建文件时需要加入一个字节头。

    CFile file;

    WCHAR szwBuffer[128];

    WCHAR *pszUnicode = L"Unicode string\n"; // unicode string

    CHAR *pszAnsi = "Ansi string\n"; // ansi string

    WORD wSignature = 0xFEFF;

    file.Open(TEXT("Test.txt"), CFile::modeCreate|CFile::modeWrite);

    file.Write(&wSignature, 2);

    file.Write(pszUnicode, lstrlenW(pszUnicode) * sizeof(WCHAR));

    // explicitly use lstrlenW function

    MultiByteToWideChar(CP_ACP, 0, pszAnsi, -1, szwBuffer, 128);

    file.Write(szwBuffer, lstrlenW(szwBuffer) * sizeof(WCHAR));

    file.Close();

    //以上这段代码在unicode和非unicode环境下都有效。这里显式的指明用Unicode来进行操作。

    2. 在非unicode环境下,缺省调用的都是ANSI格式的字符串,此时TCHAR转换为CHAR类型的,除非显式定义WCHAR。所以在这个环境下,如果读取unicode文件,那么首先需要移动2个字节,然后读取得字符串需要用MultiByteToWideChar来转换,转换后字符串信息才代表unicode数据。

    3. 在unicode环境下,缺省调用得都是unicode格式得字符串,也就是宽字符,此时TCHAR转换为WCHAR,相关得API函数也都调用宽字符类型的函数。此时读取unicode文件也和上面一样,但是读取得数据是WCHAR的,如果要转换成ANSI格式,需要调用WideCharToMultiByte。如果读取ANSI的,则不用移动两个字节,直接读取然后视需要转换即可。



    某些语言(如韩语)必须在unicode环境下才能显示,这种情况下,在非unicode环境下开发,就算用字符串函数转换也不能达到显示文字的目的,因为此时调用得API函数是用ANSI的(虽然底层都是用UNICODE处理但是处理结果是按照程序员调用的API来显示的)。所以必须用unicode来开发。

    Tag:Windows windows技巧 C unicode
    lostdays 发表于22:29:34 | 阅读全文 | 评论 1 | 编辑 | 分享 0
  • 2006-08-07

    sysinternal 专业的典范

    一年前就开始使用process explorer, 却从来没有认真地看看作者(作者愤怒中....)。今天认真找找竟然发现一大堆好东西,原来最美好的东西常常就在我们身边。废话少说,开始介绍,blablabla.

    SysInternals 的创始人之一Mark是大名顶顶的Windows Internal(深入windows内核)的作者,而且Windows IT Pro Magazine的专栏作者。他一直坚定的在computer engineering 领域从本科一直读到博士,在IBM也工作过两年。后来和Cogswell 一起创建了Winternal 公司和Sysinternal, 到现在已经有10年了。前者致力于企业级别的系统安全,系统恢复等其他强大的工作。后者提供的都是free工具(我们热烈欢迎这样的工具)。Process explorer 就是free工具中的一个啦。他们的网站上提供了很多非常cool的小工具和源代码,好好挖掘吧。

    最近,也就是7月底两位都被Microsoft给收编了,Mark是作为fellow到Platform and Services Division,主要是作操作系统性能分析。以前在没有源代码的时候,他就能够inside windows了,现在的他一定是自由的在windows的世界了驰骋了吧。

    他的blog严谨而认真,记录着他的工作,他对技术的追求,他的探索。而且在文章中总是透射出他对他的fans的交代:Sysinternal继续存在,继续提供强大的系统工具。当然后面的支持已经变成了可爱的盖茨大树了。

    ) Mark的照片~~

     

     

    Tag:C 工作 windows技巧 信息收集
    lostdays 发表于20:14:41 | 阅读全文 | 评论 5 | 编辑 | 分享 0
  • 2005-10-30

    孙鑫VC++讲座笔记-(1)Windows程序内部运行机制 - -

     

    Tag:windows技巧
    lostdays 发表于16:50:00 | 阅读全文 | 评论 0 | 编辑 | 分享 0
  • 2005-10-16

    计算机启动过程详解


     

    七。★★★计算机启动过程详解

    打开电源启动机器几乎是电脑爱好者每天必做的事情,面对屏幕上出现的一幅幅启动画面,我们一点儿也不会感到陌生,但是,计算机在显示这些启动画面时都做了些什么工作呢?相信有的朋友还不是很清楚,本文就来介绍一下从打开电源到出现Windows的蓝天白云时,计算机到底都干了些什么事情。
      首先让我们来了解一些基本概念。第一个是大家非常熟悉的BIOS(基本输入输出系统),BIOS是直接与硬件打交道的底层代码,它为*作系统提供了控制硬件设备的基本功能。BIOS包括有系统BIOS(即常说的主板BIOS)、显卡BIOS和其它设备(例如IDE控制器、SCSI卡或网卡等)的BIOS,其中系统BIOS是本文要讨论的主角,因为计算机的启动过程正是在它的控制下进行的。BIOS一般被存放在ROM(只读存储芯片)之中,即使在关机或掉电以后,这些代码也不会消失。

      第二个基本概念是内存的地址,我们的机器中一般安装有32MB、64MB或128MB内存,这些内存的每一个字节都被赋予了一个地址,以便CPU访问内存。32MB的地址范围用十六进制数表示就是0~1FFFFFFH,其中0~FFFFFH的低端1MB内存非常特殊,因为最初的8086处理器能够访问的内存最大只有1MB,这1MB的低端640KB被称为基本内存,而A0000H~BFFFFH要保留给显示卡的显存使用,C0000H~FFFFFH则被保留给BIOS使用,其中系统BIOS一般占用了最后的64KB或更多一点的空间,显卡BIOS一般在C0000H~C7FFFH处,IDE控制器的BIOS在C8000H~CBFFFH处。

      好了,下面我们就来仔细看看计算机的启动过程吧。

      第一步: 当我们按下电源开关时,电源就开始向主板和其它设备供电,此时电压还不太稳定,主板上的控制芯片组会向CPU发出并保持一个RESET(重置)信号,让CPU内部自动恢复到初始状态,但CPU在此刻不会马上执行指令。当芯片组检测到电源已经开始稳定供电了(当然从不稳定到稳定的过程只是一瞬间的事情),它便撤去RESET信号(如果是手工按下计算机面板上的Reset按钮来重启机器,那么松开该按钮时芯片组就会撤去RESET信号),CPU马上就从地址FFFF0H处开始执行指令,从前面的介绍可知,这个地址实际上在系统BIOS的地址范围内,无论是Award BIOS还是AMI BIOS,放在这里的只是一条跳转指令,跳到系统BIOS中真正的启动代码处。

      第二步: 系统BIOS的启动代码首先要做的事情就是进行POST(Power-On Self Test,加电后自检),POST的主要任务是检测系统中一些关键设备是否存在和能否正常工作,例如内存和显卡等设备。由于POST是最早进行的检测过程,此时显卡还没有初始化,如果系统BIOS在进行POST的过程中发现了一些致命错误,例如没有找到内存或者内存有问题(此时只会检查640K常规内存),那么系统BIOS就会直接控制喇叭发声来报告错误,声音的长短和次数代表了错误的类型。在正常情况下,POST过程进行得非常快,我们几乎无法感觉到它的存在,POST结束之后就会调用其它代码来进行更完整的硬件检测。

      第三步: 接下来系统BIOS将查找显卡的BIOS,前面说过,存放显卡BIOS的ROM芯片的起始地址通常设在C0000H处,系统BIOS在这个地方找到显卡BIOS之后就调用它的初始化代码,由显卡BIOS来初始化显卡,此时多数显卡都会在屏幕上显示出一些初始化信息,介绍生产厂商、图形芯片类型等内容,不过这个画面几乎是一闪而过。系统BIOS接着会查找其它设备的BIOS程序,找到之后同样要调用这些BIOS内部的初始化代码来初始化相关的设备。

      第四步: 查找完所有其它设备的BIOS之后,系统BIOS将显示出它自己的启动画面,其中包括有系统BIOS的类型、序列号和版本号等内容。

      第五步: 接着系统BIOS将检测和显示CPU的类型和工作频率,然后开始测试所有的RAM,并同时在屏幕上显示内存测试的进度,我们可以在CMOS设置中自行决定使用简单耗时少或者详细耗时多的测试方式。

      第六步: 内存测试通过之后,系统BIOS将开始检测系统中安装的一些标准硬件设备,包括硬盘、CD-ROM、串口、并口、软驱等设备,另外绝大多数较新版本的系统BIOS在这一过程中还要自动检测和设置内存的定时参数、硬盘参数和访问模式等。

      第七步: 标准设备检测完毕后,系统BIOS内部的支持即插即用的代码将开始检测和配置系统中安装的即插即用设备,每找到一个设备之后,系统BIOS都会在屏幕上显示出设备的名称和型号等信息,同时为该设备分配中断、DMA通道和I/O端口等资源。

      第八步: 到这一步为止,所有硬件都已经检测配置完毕了,多数系统BIOS会重新清屏并在屏幕上方显示出一个表格,其中概略地列出了系统中安装的各种标准硬件设备,以及它们使用的资源和一些相关工作参数。

      第九步: 接下来系统BIOS将更新ESCD(Extended System Configuration Data,扩展系统配置数据)。ESCD是系统BIOS用来与*作系统交换硬件配置信息的一种手段,这些数据被存放在CMOS(一小块特殊的RAM,由主板上的电池来供电)之中。通常ESCD数据只在系统硬件配置发生改变后才会更新,所以不是每次启动机器时我们都能够看到“Update ESCD… Success”这样的信息,不过,某些主板的系统BIOS在保存ESCD数据时使用了与Windows 9x不相同的数据格式,于是Windows 9x在它自己的启动过程中会把ESCD数据修改成自己的格式,但在下一次启动机器时,即使硬件配置没有发生改变,系统BIOS也会把ESCD的数据格式改回来,如此循环,将会导致在每次启动机器时,系统BIOS都要更新一遍ESCD,这就是为什么有些机器在每次启动时都会显示出相关信息的原因。

      第十步: ESCD更新完毕后,系统BIOS的启动代码将进行它的最后一项工作,即根据用户指定的启动顺序从软盘、硬盘或光驱启动。以从C盘启动为例,系统BIOS将读取并执行硬盘上的主引导记录,主引导记录接着从分区表中找到第一个活动分区,然后读取并执行这个活动分区的分区引导记录,而分区引导记录将负责读取并执行IO.SYS,这是DOS和Windows 9x最基本的系统文件。Windows 9x的IO.SYS首先要初始化一些重要的系统数据,然后就显示出我们熟悉的蓝天白云,在这幅画面之下,Windows将继续进行DOS部分和GUI(图形用户界面)部分的引导和初始化工作。

      如果系统之中安装有引导多种*作系统的工具软件,通常主引导记录将被替换成该软件的引导代码,这些代码将允许用户选择一种*作系统,然后读取并执行该*作系统的基本引导代码(DOS和Windows的基本引导代码就是分区引导记录)。   上面介绍的便是计算机在打开电源开关(或按Reset键)进行冷启动时所要完成的各种初始化工作,如果我们在DOS下按Ctrl+Alt+Del组合键(或从Windows中选择重新启动计算机)来进行热启动,那么POST过程将被跳过去,直接从第三步开始,另外第五步的检测CPU和内存测试也不会再进行。我们可以看到,无论是冷启动还是热启动,系统BIOS都一次又一次地重复进行着这些我们平时并不太注意的事情,然而正是这些单调的硬件检测步骤为我们能够正常使用电脑提供了基础。

    现在市场上主流的品牌机随机安装的*作系统一般为Windows XP,但是,部分用户可能仍然对Windows 98、Windows ME或Windows 2000等*作系统情有独钟,希望能在不破坏原*作系统的前提下,再安装一下以上*作系统。按常规来说,如不使用第三方的软件,我们在安装微软的Windows系列*作系统时,应该按照从低版本到高版本的顺序来依次安装;如果使用第三方的软件,又会涉及到所使用的软件的版权及用法问题,对一般用户来说显然是不太合适的。其实,按我们在本文提供的方法,不使用第三方的任何软件也能实现*作系统反着装,而且十分简单!

    例如我的联想品牌机,硬盘的C区安装Windows XP家庭版,C区的文件格式为FAT 32,其它分区的文件系统也是FAT 32。使用本文的办法来安装Windows 98,C区和安装Windows 98的分区的文件系统均需要转化为FAT 32,否则需要第三方的启动软件。当然,如果文件格式为NTFS,我们可以使用“Partition Magic”这款软件来将它无损转换为FAT 32。

    准备:支持光驱启动的Windows 98/ME启动软盘;DEBUG.EXE文件(可从Windows\Command文件夹中拷贝到启动软盘,或从EBD.CAB中解压缩出来)。

    步骤:

    第一部分:
    安装Windows 98/ME*作系统

    1.将Windows 98/ME的安装光盘放入光驱; 2.使用制作好的启动盘来启动电脑;

    3.按照正常的安装Windows 98/ME的方法来安装*作系统;只是不要将Windows 98/ME安装在Windows XP所在的分区;

    4.安装好之后,将电脑启动到Windows 98/ME*作系统。

    第二部分:
    修改“BOOTSECT.DOS”文件
    按照以上方法安装Windows 98/ME*作系统之后,会修改Windows XP所必需的启动文件,我们需要对“BOOTSECT.DOS”文件进行修改以修复它的启动文件。

    1.打开“记事本”或其它的文本编辑软件来制作“READ.SCR”(文件名可以更改),内容如下:
    L 100 2 0 1
    N C:\BOOTSECT.DOS
    R BX
    0
    R CX
    200
    W
    Q

    2.将以上制作好的文件拷贝到启动盘中;

    3.用启动盘启动电脑到DOS方式;

    4.修改“BOOTSECT.DOS”的文件属性,使用以下命令:
    ATTRIB C:\BOOTSECT.DOS -S -H -R

    5.在命令提示符下输入:DEBUG
      
    第三部分:
    修复Windows XP

    1.修改BIOS中的启动选项,使电脑能从光驱启动;也可以使用刚才制作好的启动盘来启动电脑,再在命令提示下输入f:\i386\winnnt.exe(f为光驱的盘符)来运行安装指令;

    2.在安装Windows XP时,我们要选择“修复”项,以修复硬盘中已安装的*作系统;

    3.选择需要登录的*作系统,通常为“1”,键入“1”,并输入管理员口令(安装时所设定的,安装Windows XP家庭版的联想品牌机的用户只需要按回车键即可);

    4.在命令提示符下键入“FIXBOOT”,以修复Windows XP的启动文件;

    5.拿出光驱中的Windows XP安装光盘,重新启动电脑,并在BIOS修改启动选项,将它设置为从硬盘启动。

    现在,你就可以看到Windows XP的启动菜单了,并能选择所需要进入的*作系统。重新启动电脑之后,我们就可以选择需要启动的*作系统了。是不是很简单?

    第四部分:
    WinXP下安装Win2000

    在安装好Windows XP之后,再安装Windows 2000比安装98或ME要简单得多。本文所说的方法也不用第三方的软件,而且可以在FAT32 或NTFS的文件格式上进行*作。

    1.首先,打开“控制面板”,选择“文件夹选项”并双击,在“文件夹选项”窗口中选择“查看”,在“高级设置”中将“隐藏受保护的*作系统文件”前的“√”去掉,以显示我们所需要的两个系统文件:“NTLDR”和“NTDETECT.COM”;

    2.将以上两个文件拷贝到一张软盘中;

    3.修改BIOS中的启动选项以从光盘启动电脑,并运行Windows 2000的安装*作程序;

    4.按正常方法安装Windows 2000;

    5.安装完成后,将电脑启动到Windows 2000;

    6.将我们拷贝到软盘中的以上两个文件拷贝到C区根目录;如果系统提示不能拷贝,用户需要修改以上两个文件的属性,去掉它们的“只读”和“隐藏”等属性。

    说明:我们这儿所以这样做是因为Win XP版本的“NTLDR”和“NTDETECT.COM”支持启动Windows 2000,但是后者并不支持启动到前者,所以我们需要进行以上*作。

    Tag:windows技巧
    lostdays 发表于21:28:00 | 阅读全文 | 评论 0 | 编辑 | 分享 0
  • 2005-10-16

    网络最经典命令行-网络安全工作者的必杀技

    转自 火狐技术联盟

    网络最经典命令行-网络安全工作者的必杀技
    作者:未知     来源:未知


      1.最基本,最常用的,测试物理网络的

      ping 192.168.0.8 -t ,参数-t是等待用户去中断测试

      2.查看DNS、IP、Mac等

      A.Win98:winipcfg

      B.Win2000以上:Ipconfig/all

      C.NSLOOKUP:如查看河北的DNS

      C:\>nslookup

      Default Server: ns.hesjptt.net.cn

      Address: 202.99.160.68

      >server 202.99.41.2 则将DNS改为了41.2

      > pop.pcpop.com

      Server: ns.hesjptt.net.cn

      Address: 202.99.160.68

      Non-authoritative answer:

      Name: pop.pcpop.com

      Address: 202.99.160.212

       3.网络信使

      Net send 计算机名/IP * (广播) 传送内容,注意不能跨网段

      net stop messenger 停止信使服务,也可以在面板-服务修改

      net start messenger 开始信使服务

       4.探测对方对方计算机名,所在的组、域及当前用户名 (追捕的工作原理)

      ping -a IP -t ,只显示NetBios名

      nbtstat -a 192.168.10.146 比较全的

       5.netstat -a 显示出你的计算机当前所开放的所有端口

      netstat -s -e 比较详细的显示你的网络资料,包括TCP、UDP、ICMP 和 IP的统计等

       6.探测arp绑定(动态和静态)列表,显示所有连接了我的计算机,显示对方IP和MAC地址

      arp -a

       7.在代理服务器端

      捆绑IP和MAC地址,解决局域网内盗用IP!:

      ARP -s 192.168.10.59 00 -50-ff-6c-08-75

      解除网卡的IP与MAC地址的绑定:

      arp -d 网卡IP

       8.在网络邻居上隐藏你的计算机

      net config server /hidden:yes

      net config server /hidden:no 则为开启

       9.几个net命令

      A.显示当前工作组服务器列表 net view,当不带选项使用本命令时,它就会显示当前域或网络上的计算机上的列表。

      比如:查看这个IP上的共享资源,就可以

      C:\>net view 192.168.10.8

      在 192.168.10.8 的共享资源

      资源共享名 类型 用途 注释

      --------------------------------------

      网站服务 Disk

      命令成功完成。

      B.查看计算机上的用户帐号列表 net user

      C.查看网络链接 net use

      例如:net use z: \192.168.10.8\movie 将这个IP的movie共享目录映射为本地的Z盘

      D.记录链接 net session

      例如: C:\>net session

      计算机 用户名 客户类型 打开空闲时间

      -------------------------------------------------------------------------------

      \192.168.10.110 ROME Windows 2000 2195 0 00:03:12

      \192.168.10.51 ROME Windows 2000 2195 0 00:00:39

      命令成功完成。

       10.路由跟踪命令

      A.tracert pop.pcpop.com

      B.pathping pop.pcpop.com 除了显示路由外,还提供325S的分析,计算丢失包的%

       11.关于共享安全的几个命令

      A.查看你机器的共享资源 net share

      B.手工删除共享(可以编个bat文件,开机自运行,把共享都删了!)

      net share c$ /d

      net share d$ /d

      net share ipc$ /d

      net share admin$ /d

      注意$后有空格。

      C.增加一个共享:

      c:\net share mymovie=e:\downloads\movie /users:1

      mymovie 共享成功。

      同时限制链接用户数为1人。

       12.在DOS行下设置静态IP

      A.设置静态IP

      CMD

      netsh

      netsh>int

      interface>ip

      interface ip>set add "本地链接" static IP地址 mask gateway

      B.查看IP设置

      interface ip>show address

      Arp

      显示和修改“地址解析协议 (ARP)”缓存中的项目。ARP 缓存中包含一个或多个表,它们用于存储 IP 地址及其经过解析的以太网或令牌环物理地址。计算机上安装的每一个以太网或令牌环网络适配器都有自己单独的表。如果在没有参数的情况下使用,则 arp 命令将显示帮助信息。

      语法

      arp [-a [InetAddr] [-N IfaceAddr]] [-g [InetAddr] [-N IfaceAddr]] [-d InetAddr [IfaceAddr]] [-s InetAddr EtherAddr [IfaceAddr]]

      参数

      -a [InetAddr] [-N IfaceAddr]

      显示所有接口的当前 ARP 缓存表。要显示指定 IP 地址的 ARP 缓存项,请使用带有 InetAddr 参数的 arp -a,此处的 InetAddr 代表指定的 IP 地址。要显示指定接口的 ARP 缓存表,请使用 -N IfaceAddr 参数,此处的 IfaceAddr 代表分配给指定接口的 IP 地址。-N 参数区分大小写。

      -g [InetAddr] [-N IfaceAddr]

      与 -a 相同。

      -d InetAddr [IfaceAddr]

      删除指定的 IP 地址项,此处的 InetAddr 代表 IP 地址。对于指定的接口,要删除表中的某项,请使用 IfaceAddr 参数,此处的 IfaceAddr 代表分配给该接口的 IP 地址。要删除所有项,请使用星号 (*) 通配符代替 InetAddr。

      -s InetAddr EtherAddr [IfaceAddr]

      向 ARP 缓存添加可将 IP 地址 InetAddr 解析成物理地址 EtherAddr 的静态项。要向指定接口的表添加静态 ARP 缓存项,请使用 IfaceAddr 参数,此处的 IfaceAddr 代表分配给该接口的 IP 地址。

       在命令提示符显示帮助。

      注释

      InetAddr 和 IfaceAddr 的 IP 地址用带圆点的十进制记数法表示。

      物理地址 EtherAddr 由六个字节组成,这些字节用十六进制记数法表示并且用连字符隔开(比如,00-AA-00-4F-2 A-9C)。

      通过 -s 参数添加的项属于静态项,它们不会 ARP 缓存中超时。如果终止 TCP/IP 协议后再启动,这些项会被删除。要创建永久的静态 ARP 缓存项,请在批处理文件中使用适当的 arp 命令并通过“计划任务程序”在启动时运行该批处理文件。

      只有当网际协议 (TCP/IP) 协议在 网络连接中安装为网络适配器属性的组件时,该命令才可用。

      范例

      要显示所有接口的 ARP 缓存表,可键入:

      arp -a

      对于指派的 IP 地址为 10.0.0.99 的接口,要显示其 ARP 缓存表,可键入:

      arp -a -N 10.0.0.99

      要添加将 IP 地址 10.0.0.80 解析成物理地址 00-AA-00-4F-2 A-9C 的静态 ARP 缓存项,可键入:

      arp -s 10.0.0.80 00-AA-00-4F-2 A-9C

      At

      计划在指定时间和日期在计算机上运行命令和程序。at 命令只能在“计划”服务运行时使用。如果在没有参数的情况下使用,则 at 列出已计划的命令。

      语法

      at [\ComputerName] [{[ID] [/delete] /delete [/yes]}]

      at [[\ComputerName] hours:minutes [/interactive] [{/every:date[,...] /next:date[,...]}] command]

      参数

       \computername

      指定远程计算机。如果省略该参数,则 at 计划本地计算机上的命令和程序。

      ID

      指定指派给已计划命令的识别码。

      /delete

      取消已计划的命令。如果省略了 ID,则计算机中所有已计划的命令将被取消。

      /yes

      删除已计划的事件时,对来自系统的所有询问都回答“是”。

      hours:minutes

      指定命令运行的时间。该时间用 24 小时制(即从 00:00 [午夜] 到 23:59)的 小时: 分钟格式表示。

      /interactive

      对于在运行 command 时登录的用户,允许 command 与该用户的桌面进行交互。

      /every:

      在每个星期或月的指定日期(例如,每个星期四,或每月的第三天)运行 command 命令。

      date

      指定运行命令的日期。可以指定一周的某日或多日(即,键入 M、T、W、Th、F、S、Su)或一个月中的某日或多日(即,键入从 1 到31 之间的数字)。用逗号分隔多个日期项。如果省略了 date,则 at 使用该月的当前日。

      /next:

      在下一个指定日期(比如,下一个星期四)到来时运行 command。

      command

      指定要运行的 Windows 命令、程序(.exe 或 .com 文件)或批处理程序(.bat 或 .cmd 文件)。当命令需要路径作为参数时,请使用绝对路径,也就是从驱动器号开始的整个路径。如果命令在远程计算机上,请指定服务器和共享名的通用命名协定 (UNC) 符号,而不是远程驱动器号。

      /?

      在命令提示符显示帮助。

      注释

      Schtasks 是功能更为强大的超集命令行计划工具,它含有 at 命令行工具中的所有功能。对于所有的命令行计划任务,都可以使用 schtasks 来替代 at。有关 schtasks 的详细信息,请参阅“相关主题”。

      使用 at

      使用 at 命令时,要求您必须是本地 Administrators 组的成员。
    Tag:windows技巧
    lostdays 发表于21:23:42 | 阅读全文 | 评论 0 | 编辑 | 分享 0
  • 2005-10-16

    DOS下常用的相关网络命令


     

    在DOS下的Microsoft Network Client和Windows 9x的DOS窗口等环境中,有许多很有用的但不包含在DOS自带的命令中的网络命令。那么,有哪些这样的命令呢?下面将它们中常用的命令介绍一下。

    Arp

    显示和修改“地址解析协议”(ARP) 所使用的到以太网的 IP 或令牌环物理地址翻译表。该命令只有在安装了 TCP/IP 协议之后才可用。
    arp -a [inet_addr] [-N [if_addr]]
    arp -d inet_addr [if_addr]
    arp -s inet_addr ether_addr [if_addr]
    参数
    -a
    通过询问 TCP/IP 显示当前 ARP 项。如果指定了 inet_addr,则只显示指定计算机的 IP 和物理地址。
    -g
    与 -a 相同。
    inet_addr
    以加点的十进制标记指定 IP 地址。
    -N
    显示由 if_addr 指定的网络界面 ARP 项。
    if_addr
    指定需要修改其地址转换表接口的 IP 地址(如果有的话)。如果不存在,将使用第一个可适用的接口。
    -d
    删除由 inet_addr 指定的项。
    -s
    在 ARP 缓存中添加项,将 IP 地址 inet_addr 和物理地址 ether_addr 关联。物理地址由以连字符分隔的 6 个十六进制字节给定。使用带点的十进制标记指定 IP 地址。项是永久性的,即在超时到期后项自动从缓存删除。
    ether_addr
    指定物理地址。

    Finger

    在运行 Finger 服务的指定系统上显示有关用户的信息。根据远程系统输出不同的变量。该命令只有在安装了 TCP/IP 协议之后才可用。
    finger [-l] [user]@computer[...]
    参数
    -l
    以长列表格式显示信息。
    user
    指定要获得相关信息的用户。省略用户参数以显示指定计算机上所有用户的信息:
    @computer

    Ftp

    将文件传送到正在运行 FTP 服务的远程计算机或从正在运行 FTP 服务的远程计算机传送文件(有时称作 daemon)。Ftp 可以交互使用。单击“相关主题”列表中的“ftp 命令”以获得可用的“ftp”子命令描述。该命令只有在安装了 TCP/IP 协议之后才可用。Ftp 是一种服务,一旦启动,将创建在其中可以使用 ftp 命令的子环境,通过键入 quit 子命令可以从子环境返回到 Windows 2000 命令提示符。
         当 ftp 子环境运行时,它由 ftp 命令提示符代表。
    ftp [-v] [-n] [-i] [-d] [-g] [-s:filename] [-a] [-w:windowsize] [computer]
    参数
    -v
    禁止显示远程服务器响应。
    -n
    禁止自动登录到初始连接。
    -i
    多个文件传送时关闭交互提示。
    -d
    启用调试、显示在客户端和服务器之间传递的所有 ftp 命令。
    -g
    禁用文件名组,它允许在本地文件和路径名中使用通配符字符(* 和 ?)。(请参阅联机“命令参考”中的 glob 命令。)
    -s: filename
    指定包含 ftp 命令的文本文件;当 ftp 启动后,这些命令将自动运行。该参数中不允许有空格。使用该开关而不是重定向 (> )。
    -a
    在捆绑数据连接时使用任何本地接口。
    -w:windowsize
    替代默认大小为 4096 的传送缓冲区。
    computer
    指定要连接到远程计算机的计算机名或 IP 地址。如果指定,计算机必须是行的最后一个参数。

    Nbtstat

    该诊断命令使用 NBT(TCP/IP 上的 NetBIOS)显示协议统计和当前 TCP/IP 连接。该命令只有在安装了 TCP/IP 协议之后才可用。
    nbtstat [-a remotename] [-A IP address] [-c] [-n] [-R] [-r] [-S] [-s] [interval]
    参数
    -a remotename
    使用远程计算机的名称列出其名称表。
    -A IP address
    使用远程计算机的 IP 地址并列出名称表。
    -c
    给定每个名称的 IP 地址并列出 NetBIOS 名称缓存的内容。
    -n
    列出本地 NetBIOS 名称。“已注册”表明该名称已被广播 (Bnode) 或者 WINS(其他节点类型)注册。
    -R
    清除 NetBIOS 名称缓存中的所有名称后,重新装入 Lmhosts 文件。
    -r
    列出 Windows 网络名称解析的名称解析统计。在配置使用 WINS 的 Windows 2000 计算机上,此选项返回要通过广播或 WINS 来解析和注册的名称数。
    -S
    显示客户端和服务器会话,只通过 IP 地址列出远程计算机。
    -s
    显示客户端和服务器会话。尝试将远程计算机 IP 地址转换成使用主机文件的名称。
    interval
    重新显示选中的统计,在每个显示之间暂停 interval 秒。按 CTRL+C 停止重新显示统计信息。如果省略该参数,nbtstat 打印一次当前的配置信息。

    Netstat

    显示协议统计和当前的 TCP/IP 网络连接。该命令只有在安装了 TCP/IP 协议后才可以使用。
    netstat [-a] [-e] [-n] [-s] [-p protocol] [-r] [interval]
    参数
    -a
    显示所有连接和侦听端口。服务器连接通常不显示。
    -e
    显示以太网统计。该参数可以与 -s 选项结合使用。
    -n
    以数字格式显示地址和端口号(而不是尝试查找名称)。
    -s
    显示每个协议的统计。默认情况下,显示 TCP、UDP、ICMP 和 IP 的统计。-p 选项可以用来指定默认的子集。
    -p protocol
    显示由 protocol 指定的协议的连接;protocol 可以是 tcp 或 udp。如果与 -s 选项一同使用显示每个协议的统计,protocol 可以是 tcp、udp、icmp 或 ip。
    -r
    显示路由表的内容。
    interval
    重新显示所选的统计,在每次显示之间暂停 interval 秒。按 CTRL+B 停止重新显示统计。如果省略该参数,netstat 将打印一次当前的配置信息。

    Ping

    验证与远程计算机的连接。该命令只有在安装了 TCP/IP 协议后才可以使用。
    ping [-t] [-a] [-n count] [-l length] [-f] [-i ttl] [-v tos] [-r count] [-s count] [[-j computer-list] | [-k computer-list]] [-w timeout] destination-list
    参数
    -t
    Ping 指定的计算机直到中断。
    -a
    将地址解析为计算机名。
    -n count
    发送 count 指定的 ECHO 数据包数。默认值为 4。
    -l length
    发送包含由 length 指定的数据量的 ECHO 数据包。默认为 32 字节;最大值是 65,527。
    -f
    在数据包中发送“不要分段”标志。数据包就不会被路由上的网关分段。
    -i ttl
    将“生存时间”字段设置为 ttl 指定的值。
    -v tos
    将“服务类型”字段设置为 tos 指定的值。
    -r count
    在“记录路由”字段中记录传出和返回数据包的路由。count 可以指定最少 1 台,最多 台计算机。
    指定要 ping 的远程计算机。

    Rcp

    在 Windows 2000 计算机和运行远程外壳端口监控程序 rshd 的系统之间复制文件。rcp 命令是一个连接命令,从 Windows 2000 计算机发出该命令时,也可以用于其他传输在两台运行 rshd 的计算机之间复制文件。rshd 端口监控程序可以在 UNIX 计算机上使用,而在 Windows 2000 上不能使用,所以 Windows 2000 计算机仅可以作为发出命令的系统参与。远程计算机必须也通过运行 rshd 提供 rcp 实用程序。
    rcp [-a | -b] [-h] [-r] source1 source2 ... sourceN destination
    参数
    -a
    指定 ASCII 传输模式。此模式在传出文件上将回车/换行符转换为回车符,在传入文件中将换行符转换为回车/换行符。该模式为默认的传输模式。
    -b
    指定二进制图像传输模式。没有执行回车/换行符转换。
    -h
    传输 Windows 2000 计算机上标记为隐藏属性的源文件。如果没有该选项,在 rcp 命令行上指定隐藏文件的效果与文件不存在一样。
    -r
    将源的所有子目录内容递归复制到目标。source 和 destination 都必须是目录,虽然即使源不是目录,使用 -r 也能够工作。但将没有递归。
    source 和 destination
    格式必须为 [computer[.user]:]filename。如果忽略了 [computer[.user]:] 部分,计算机将假定为本地计算机。如果省略了 [.user] 部分,将使用当前登录的 Windows 2000 用户名。如果使用了完全合格的计算机名,其中包含句点 (.) 分隔符,则必须包含 [.user]。否则,计算机名的最后部分将解释为用户名。如果指定了多个源文件,则 destination 必须是目录。
    如果文件名不是以 UNIX 的正斜杠 (/) 或 Windows 2000 系统的反斜杠 (\) 打头,则假定相对于当前的工作目录。在 Windows 2000 中,这是发出命令的目录。在远程系统中,这是远程用户的登录目录。句点 (.) 表示当前的目录。在远程路径中使用转义字符(\、" 或 '),以便在远程计算机中使用通配符。

    Rexec

    在运行 REXEC 服务的远程计算机上运行命令。rexec 命令在执行指定命令前,验证远程计算机上的用户名,只有安装了 TCP/IP 协议后才可以使用该命令。
    rexec computer [-l username] [-n] command
    参数
    computer
    指定要运行 command 的远程计算机。
    -l username
    指定远程计算机上的用户名。
    -r
    将 rexec 的输入重定向到 NULL。
    command
    指定要运行的命令。

    Route

    控制网络路由表。该命令只有在安装了 TCP/IP 协议后才可以使用。
    route [-f] [-p] [command [destination] [mask subnetmask] [gateway] [metric costmetric]]
    参数
    -f
    清除所有网关入口的路由表。如果该参数与某个命令组合使用,路由表将在运行命令前清除。
    -p
    该参数与 add 命令一起使用时,将使路由在系统引导程序之间持久存在。默认情况下,系统重新启动时不保留路由。与 print 命令一起使用时,显示已注册的持久路由列表。忽略其他所有总是影响相应持久路由的命令。
    command
    指定下列的一个命令。
    命令 目的
    print 打印路由
    add 添加路由
    delete 删除路由
    change 更改现存路由
    destination
    指定发送 command 的计算机。
    mask subnetmask
    指定与该路由条目关联的子网掩码。如果没有指定,将使用 255.255.255.255。
    gateway
    指定网关。
    名为 Networks 的网络数据库文件和名为 Hosts 的计算机名数据库文件中均引用全部 destination 或 gateway 使用的符号名称。如果命令是 print 或 delete,目标和网关还可以使用通配符,也可以省略网关参数。
    metric costmetric
    指派整数跃点数(从 1 到 9999)在计算最快速、最可靠和(或)最便宜的路由时使用。
    Rsh
    在运行 RSH 服务的远程计算机上运行命令。该命令只有在安装了 TCP/IP 协议后才可以使用。
    rsh computer [-l username] [-n] command
    参数
    computer
    指定运行 command 的远程计算机。
    -l username
    指定远程计算机上使用的用户名。如果省略,则使用登录的用户名。
    -n
    将 rsh 的输入重定向到 NULL。
    command
    指定要运行的命令。

    Tftp

    将文件传输到正在运行 TFTP 服务的远程计算机或从正在运行 TFTP 服务的远程计算机传输文件。该命令只有在安装了 TCP/IP 协议后才可以使用。
    tftp [-i] computer [get | put] source [destination]
    参数
    -i
    指定二进制图像传送模式(也称为“八位字节”)。在二进制图像模式中,文件一个字节接一个字节地逐字移动。在传送二进制文件时使用该模式。
    如果省略了 -i,文件将以 ASCII 模式传送。这是默认的传送模式。此模式将 EOL 字符转换为 UNIX 的回车符和个人计算机的回车符/换行符。在传送文本文件时应使用此模式。如果文件传送成功,将显示数据传输率。
    computer
    指定本地或远程计算机。
    put
    将本地计算机上的文件 destination 传送到远程计算机上的文件 source。
    get
    将远程计算机上的文件 destination 传送到本地计算机上的文件 source。
    如果将本地计算机上的文件 file-two 传送到远程计算机上的文件 file-one,请指定 put。如果将远程计算机上的文件 file-two 传送到远程计算机上的文件 file-one,请指定 get。
    因为 tftp 协议不支持用户身份验证,所以用户必须登录,并且文件在远程计算机上必须可以写入。
    source
    指定要传送的文件。如果本地文件指定为 -,则远程文件在 stdout 上打印出来(如果获取),或从 stdin(如果放置)读取。
    destination
    指定将文件传送到的位置。如果省略了 destination,将假定与 source 同名。

    Tracert

    该诊断实用程序将包含不同生存时间 (TTL) 值的 Internet 控制消息协议 (ICMP) 回显数据包发送到目标,以决定到达目标采用的路由。要在转发数据包上的 TTL 之前至少递减 1,必需路径上的每个路由器,所以 TTL 是有效的跃点计数。数据包上的 TTL 到达 0 时,路由器应该将“ICMP 已超时”的消息发送回源系统。Tracert 先发送 TTL 为 1 的回显数据包,并在随后的每次发送过程将 TTL 递增 1,直到目标响应或 TTL 达到最大值,从而确定路由。路由通过检查中级路由器发送回的“ICMP 已超时”的消息来确定路由。不过,有些路由器悄悄地下传包含过期 TTL 值的数据包,而 tracert 看不到。
    tracert [-d] [-h maximum_hops] [-j computer-list] [-w timeout] target_name
    参数
    /d
    指定不将地址解析为计算机名。
    -h maximum_hops
    指定搜索目标的最大跃点数。
    -j computer-list
    指定沿 computer-list 的稀疏源路由。
    -w timeout
    每次应答等待 timeout 指定的微秒数。
    target_name
    目标计算机的名称。

    此外,还有IPCONFIG,DNR等命令,这里就不再一一介绍了。

    Tag:windows技巧
    lostdays 发表于21:17:32 | 阅读全文 | 评论 0 | 编辑 | 分享 0
  • 2005-10-16

    Win XP的一个无敌命令

     

    XP有一个很无敌的命令,用来替换文件的replace,连正在使用的文件也能替换。非常无敌。 比如:在C:下建一个目录,c:aaa ,然后复制一首mp3到c:aaa并命名为c:aaaa.mp3 ,然后再复制另一首歌到C:a.mp3 ,然后用media player 播放c:aaaa.mp3 ,在命令提示符下输入:replace c:a.mp3 c:aaa ,过一会,是不是播放的歌已变为另一首。

    用这个命令来替换系统文件真是太爽了,并且XP的系统文件保护也对它无效。 再也不用到安全模式下去替换文件了

    格式

    REPLACE [drive1:][path1]filename [drive2:][path2] [/A] [/P] [/R] [/W]

    REPLACE [drive1:][path1]filename [drive2:][path2] [/P] [/R] [/S] [/W]

    [drive1:][path1]filename 指定源文件。

    [drive2:][path2] 指定要替换文件的

    目录

    /A 把新文件加入目标目录。不能和/S 或 /U 命令行开关搭配使用。 /P 替换文件或加入源文件之前会先提示您进行确认。 /R 替换只读文件以及未受保护的文件。 /S 替换目标目录中所有子目录的文件。 不能与 /A 命令选项搭配使用。

    /W 等您插入磁盘以后再运行。

    /U 只会替换或更新比源文件日期早的文件。 不能与 /A 命令行开关搭配使用。

    ps:要是病毒或者黑客也用这个命令那就危险了

    Tag:windows技巧
    lostdays 发表于20:59:10 | 阅读全文 | 评论 0 | 编辑 | 分享 0
共1页 1

个人资料

lostdays

日历

搜索

管理

  • 进入后台 写新日志
  • 文章管理 评论管理
  • 更换模板 访问统计

文章分类

    Tag

    • 语言[27]
    • C[25]
    • 信息收集[23]
    • 心情帐篷[22]
    • 网络相关[19]
    More..

    最新文章

    • 学习web开发
    • UNICODE编程资料(转贴)
    • Windows环境下Unicode编程总结 (ZZ)
    • Ruby On line
    • blog新logo
    • writely开放注册了
    • (zz)中国贫富标准线
    • (zz)存下档(Windows软件在Linux上的等价/替代/模仿软件列表)
    • 超酷的测速网站
    • 如何在墙壁上作出精彩的手影
    全部日志>>

    最新评论

    • Chanel Watches:初来乍到,赞一下!!!!...
    • Chanel Watches:初来乍到,赞一下!!!!...
    • ainibuhui:<a href="http://spac...
    • langzai:彩光嫩肤 http://space.yoka.com...
    • cheapwowgld:[url=http://www.wowsale.net]...
    • George Matthews: The new [url=http://www.inu...
    • George Matthews: The new <a href="ht...
    • inwowgold:看不太明白,我會繼續努力的...
    • gfd:mghhf
    • gfd:gjhggf

    链接

    • 刀枪Blue(寻找自己的世界)
    • 根根日生(有为青年哟)
    • 老唐-总能折腾
    • Ricklei
    • cloud(同一个师门下出道的)
    • WangLiang(程序是主打歌)
    • 英雄罗比(坚持梦想与快乐)

    存档

    • 2006 [40]
    • 2005 [77]
    自定义HTML代码区域
    • 访问统计:
    • RSS 什么是RSS?
      用IM提醒我内容更新
      订阅到QQ邮箱
      订阅到鲜果阅读器
      订阅到Google阅读器
      订阅到抓虾阅读器
    • 《城客》第四期:创意之城
      博客大巴
      博客大巴使用指南
      博客大巴模板中心
      免费注册博客大巴
      一键博客搬家工具
      中文互动杂志城客
    Copyright © 2002-2012 BlogBus.com, All Rights Reserved. 博客大巴 版权所有
    博客大巴模板设计:新空气之旅 | 作者:enid | 素材来源:香必飘新空气之旅