vs编译成功生成exe后运行时,提醒无法启动程序,计算机中丢失xx.dll

qqzheng 2013-10-18 09:32:09
VS2010下编译一个C++的工程无错,成功生成了.exe文件,
但运行这个exe文件时,就提示无法启动程序,计算机中丢失xx.dll。
由于连续提示的xx.dll比较多,就不一一列举。

另发现一个规律,提示计算机丢失xx.dll,如a.dll,b.dll, c.dll...都对应了原工程的属性配置里面链接器下的附加依赖项中a.lib, b.lib, c.lib... (a.lib, b.lib, c.lib...这些都是已有的第三方库文件夹中的,本人直接从编译好的下到自己电脑上,放在一个目录中,这些目录中也有对应的a.dll,b.dll, c.dll,但好像生成的exe并不会自己去找这些目录里的dll)

想搞清楚这个原理,为什么会出现这样的情况,为什么生成的exe会需要去找这些dll,机制是什么?
另主要是想问,该怎样解决这种缺第三方库的dll的情况。


...全文
27700 26 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
围脖1013 2015-05-21
  • 打赏
  • 举报
回复
查看解决方案启动项是有否更改,正确的应该是.exe调用.dll
ajiecs 2015-05-19
  • 打赏
  • 举报
回复
今天我也遇到这个问题了,基本网上说的办法都不能解决,我自己研究了下发现注册表中的指向的地址一般是IE的地址,如果IE不能正常启动就会出现这种现象,所以当IE不能正常启动的时候,我们把默认浏览器设置成其他浏览器就可以解决这个问题了
neinongda1_2 2014-08-08
  • 打赏
  • 举报
回复
可以参考此网址VS DLL 复制本地http://www.cnblogs.com/nzbbody/p/3436130.html
twwk120120 2014-04-13
  • 打赏
  • 举报
回复
这是一个使用经验的问题,debug/release时查找程序所需文件路径(如dll,lib,资源文件等)和你双击exe查找的方式不一样的。你右键项目-属性-配置属性-调试,看到“工作目录”了吗?这就是你debug/release可以设置的外部文件路径。helloworld工程所需要的资源文件都在这里。而你双击exe时,是没有这个路径的,你需要把“工作目录”里的东西,全都复制到exe所在的目录下。
赵4老师 2014-02-26
  • 打赏
  • 举报
回复
引用 19 楼 luoxuechengbing 的回复:
[quote=引用 13 楼 zhao4zhong1 的回复:] 在64位Windows下,试试手动 将32位的dll拷贝到c:\windows\system32目录下 或 将64位的dll拷贝到c:\windows\syswow64目录下 然后看它能不能被正常调用。
做学生的时候也是用赵老师这种办法,现在不用了;;; 这办法带来的效果很蛋疼; 建议 设置环境变量。[/quote] 我这句话隐含的意思是“肯定不能正常使用”。
赵4老师 2014-02-26
  • 打赏
  • 举报
回复
引用 21 楼 luoxuechengbing 的回复:
[quote=引用 20 楼 zhao4zhong1 的回复:] [quote=引用 19 楼 luoxuechengbing 的回复:] [quote=引用 13 楼 zhao4zhong1 的回复:] 在64位Windows下,试试手动 将32位的dll拷贝到c:\windows\system32目录下 或 将64位的dll拷贝到c:\windows\syswow64目录下 然后看它能不能被正常调用。
做学生的时候也是用赵老师这种办法,现在不用了;;; 这办法带来的效果很蛋疼; 建议 设置环境变量。[/quote] 我这句话隐含的意思是“肯定不能正常使用”。[/quote] 哦,抱歉,没看清楚。 你这是在测试系统是否 环境变量正常引用?[/quote] 证明因为32位dll和64位dll里面机器代码对应的汇编指令不同,所以不可能将它们放在和其不对应的目录下调用。
  • 打赏
  • 举报
回复
引用 20 楼 zhao4zhong1 的回复:
[quote=引用 19 楼 luoxuechengbing 的回复:] [quote=引用 13 楼 zhao4zhong1 的回复:] 在64位Windows下,试试手动 将32位的dll拷贝到c:\windows\system32目录下 或 将64位的dll拷贝到c:\windows\syswow64目录下 然后看它能不能被正常调用。
做学生的时候也是用赵老师这种办法,现在不用了;;; 这办法带来的效果很蛋疼; 建议 设置环境变量。[/quote] 我这句话隐含的意思是“肯定不能正常使用”。[/quote] 哦,抱歉,没看清楚。 你这是在测试系统是否 环境变量正常引用?
  • 打赏
  • 举报
回复
引用 13 楼 zhao4zhong1 的回复:
在64位Windows下,试试手动 将32位的dll拷贝到c:\windows\system32目录下 或 将64位的dll拷贝到c:\windows\syswow64目录下 然后看它能不能被正常调用。
做学生的时候也是用赵老师这种办法,现在不用了;;; 这办法带来的效果很蛋疼; 建议 设置环境变量。
fwleiming 2014-02-13
  • 打赏
  • 举报
回复
只是想知道原理吗, exe文件中有一个叫做“导入描述区”的部分 这里面写明了这个exe会直接用到的一些外部函数, 所谓外部是指不在当前文件中, windows在加载exe文件到内存中的时候会根据这些导入描述里记载的内容, 去加载dll文件,并把dll文件中的对应函数的地址(也就是函数指针)填入“导入表”中 exe在执行过程中要用到这样的外部函数的时候,就会从导入表的特定位置获取这个函数的指针,然后以调用指针指向的函数的方式来执行这样的函数。 这整个过程是由编译器来控制的,编译器生成的代码直接就是这样了(就是我刚刚说的exe会怎么样怎么样来调用函数,是编译的时候就定下来的)。 你平时调用windows api的时候,那些api函数就是以这种方式导入的,对应的lib文件是kernel32.lib user32.lib之类。在VC里,这些lib文件默认就已经帮你写好在工程设置里的。以及,vc默认还会链接C语言运行库msvcrt.lib或者libcmt.lib,在libcmt.lib中也会默认给你引入kernel32.lib,这样。 而这些lib里面的内容,就是“导入描述区”的模板(注意这个和C++中的模板的概念不同)。链接器在生成exe的时候,这些lib是在要链接的库里面的,于是这些lib里的导入描述区的模板被写入exe,并在链接的时候填入对应的数据(其实是exe文件中的偏移,用于定位各种链接时才知道的地址),形成最后的导入描述区(exe里的.idata段,事实上链接器还会根据段的属性不同,最后可能将.idata段合并到其他段中,所以有的exe用工具是看不到.idata段的) 这就是这些lib会使得你的exe对某些dll产生依赖的原因:它们的功能只是提供一个导入描述区的部分,而不是直接提供这些函数的实现。
knva 2014-02-11
  • 打赏
  • 举报
回复
使用管理员权限
ErrorErro 2014-01-18
  • 打赏
  • 举报
回复
需要把dll拷贝到exe相同目录下吧
qqzheng 2014-01-05
  • 打赏
  • 举报
回复
引用 14 楼 bijiaoben 的回复:
把路径增加到环境变量里面不可以吗?
可以的,只是感觉随便个什么都往环境变量里加,那最后就特别长了。以后的程序搜索就很困难。 感觉这个习惯不好
大奶兔白糖 2013-12-18
  • 打赏
  • 举报
回复
把路径增加到环境变量里面不可以吗?
赵4老师 2013-12-16
  • 打赏
  • 举报
回复
在64位Windows下,试试手动 将32位的dll拷贝到c:\windows\system32目录下 或 将64位的dll拷贝到c:\windows\syswow64目录下 然后看它能不能被正常调用。
「已注销」 2013-12-16
  • 打赏
  • 举报
回复
引用 11 楼 zhao4zhong1 的回复:
[quote=引用 9 楼 jha334201553 的回复:] 点击vs上面的调试运行的话,要把dll复制到工程目录下,如果是双击exe运行的话,把dll复制到exe目录下,如果想简单直接复制到%SystemRoot%目录下,这样就不用管32位还是64位了。 也可以在程序中加path的环境变量,或者设置CurrentDirectory
大错特错! 在64位Windows下: 64位exe和dll在目录c:\windows\system32目录下; 32位exe和dll在目录c:\windows\syswow64目录下; [/quote]自己看msdn,http://msdn.microsoft.com/zh-cn/library/7d83bc18(v=vs.90).aspx 更新:2007 年 11 月 通过隐式和显式链接,Windows 首先搜索“已知 DLL”,如 Kernel32.dll 和 User32.dll。Windows 然后按下列顺序搜索 DLL: 当前进程的可执行模块所在的目录。 当前目录。 Windows 系统目录。GetSystemDirectory 函数检索此目录的路径。 Windows 目录。GetWindowsDirectory 函数检索此目录的路径。 PATH 环境变量中列出的目录。 ------------------------------------------------------------- GetWindowsDirectory 返回的是什么目录??????
赵4老师 2013-12-16
  • 打赏
  • 举报
回复
引用 9 楼 jha334201553 的回复:
点击vs上面的调试运行的话,要把dll复制到工程目录下,如果是双击exe运行的话,把dll复制到exe目录下,如果想简单直接复制到%SystemRoot%目录下,这样就不用管32位还是64位了。 也可以在程序中加path的环境变量,或者设置CurrentDirectory
大错特错! 在64位Windows下: 64位exe和dll在目录c:\windows\system32目录下; 32位exe和dll在目录c:\windows\syswow64目录下;
buyong 2013-12-16
  • 打赏
  • 举报
回复
release版直接复制到程序目录下。 debug版注意manifest设置
「已注销」 2013-12-16
  • 打赏
  • 举报
回复
点击vs上面的调试运行的话,要把dll复制到工程目录下,如果是双击exe运行的话,把dll复制到exe目录下,如果想简单直接复制到%SystemRoot%目录下,这样就不用管32位还是64位了。 也可以在程序中加path的环境变量,或者设置CurrentDirectory
赵4老师 2013-12-16
  • 打赏
  • 举报
回复
Windows searches for the DLL file in the following sequence: 1. The directory from which the application loaded. 2. The current directory. 3. Windows 95 and Windows 98: The Windows system directory. Use the GetSystemDirectory function to get the path of this directory. Windows NT: The 32-bit Windows system directory. Use the GetSystemDirectory function to get the path of this directory. The name of this directory is SYSTEM32. 4. Windows NT: The 16-bit Windows system directory. There is no function that obtains the path of this directory, but it is searched. The name of this directory is SYSTEM. 5. The Windows directory. Use the GetWindowsDirectory function to get the path of this directory. 6. The directories that are listed in the PATH environment variable.
5t4rk 2013-12-16
  • 打赏
  • 举报
回复
未包含,编译设置为静态编译。 缺少的外部文件拷入当前目录。
加载更多回复(6)
摘自:http://mbstudio.spaces.live.com/blog/cns!C898C3C40396DC11!955.entry 2007/1/30 oSIP协议栈(及eXoSIP,Ortp等)使用入门(原创更新) (CopyLeft by Meineson | www.mbstudio.cn,原创文章,欢迎转载,但请保留出处说明!) 本文档最新版本及文提到的相关源码及VC6工程文件请在本站找,嘿嘿~~ (首页的SkyDriver公开文件夹,可能需要用代理才能正常访问该空间——空间绝对稳定,不会丢失文件!) (最近工作重心不在SIP开发,SO本文档也没有机会更新,有技术问题也请尽量咨询他人,本人不一定能及时回复。)   一直没空仔细研究下oSIP,最近看到其版本已经到了3.x版本,看到网上的许多帮助说明手册都过于陈旧,且很多文档内容有点误人子弟的嫌疑~~   Linux下oSIP的编译使用应该是很简单的,其Install说明文档里也介绍的比较清楚,本文主要就oSIP在Windows平台下VC6.0开发环境下的使用作出描述。   虽然oSIP的开发人员也说明了,oSIP只使用了标准C开发库,但许多人在Windows下使用oSIP时,第一步就被卡住了,得不到oSIP的LIB库和DLL库,也就没有办法将oSIP使用到自己的程序去,所以第一步,我们将学习如何得到oSIP的静态和动态链接库,以便我们自己的程序能够使用它们来成功编译和执行我们的程序。 第一阶段: ------------------------------------------------------   先创建新工程,网上许多文档都介绍创建一个Win32动态链接库工程,我们这里也一样,创建一个空白的工程保存。   同样,将oSIP2版本3.0.1 src目录下的Osipparser2目录下的所有文件都拷到我们刚创建的工程的根目录下,在VC6上操作: Project-Add To Project-Files   将所有的源程序和头文件都加入到工程内,保存工程。   这时,我们可以尝试编译一下工程,你会得到许多错误提示信息,其内容无非是找不到osipparser2/xxxxx.h头文件之类。   处理:在Linux下,我们一般是将头文件,lib库都拷到/usr/inclue;/usr/lib之类的目录下,c源程序里直接写#include 时,能直接去找到它们,在VC里,同样的,最简单的方法就是将oSIP2源码包的Include目录下的 osipparser2目录直接拷到我们的Windows下默认包含目录即可,这个目录在VC6的Tool-Options-Directories里设置,(当然,如果你知道这一步,也可以不用拷贝文件,直接在这里把oSIP源码包所在目录加进来就可以了),默认如果装在C盘,目录则为 C:\Program Files\Microsoft Visual Studio\VC98\Include。   这时,我们再次编译我们的工程,顺利编译生成osipparser2.dll,这时,网上很多文档里可能直接就说,这一步也会生成libs目录,里面里osipparser2.lib文件,但我们这里没有生成:)   最简单的方法,不用深究,直接再创建一个工程,同上述创建动态链接库方法,创建一个Win32静态链接库工程,直接编译,即可得到osipparser2.lib。 ------------------------------------------------------   上面,我们得到了Osip的解析器开发库,下面再编译完整的Osip协议栈开发库,同样照上述方法,分别创建动态链接库工程和静态链接库工程,只是要拷的文件换成src下的osip目录下文件和include下的osip目录,得到osip2.dll和osip2.lib。   在编译osip2.dll这一步可能会再次得到错误,内容含义是找不到链接库,所以,我们要把前面编译得到的osipparser2.lib也拷到osip工程目录下,并在VC6操作:   Project-Setting-Link的Object/Library Modules: kernel32.lib user32.lib ... xxx.lib之类的内容最后增加: osipparser2.lib   保存工程后再次编译,即可成功编译osip2.dll。 ------------------------------------------------------   至此,我们得到了完整的oSIP开发库,使用时,只需在我们的程序里包含oSIP的头文件,工程的链接参数里增加osipparser2.lib和osip2.lib即可。 ------------------------------------------------------   下面我们验证一下我们得到的开发库,并大概了解一下OSIP的语法规范。   在VC里创建win32控制台程序工程,将libosip源码包的SRC目录下的Test目录内的C源程序随便拷一个到工程时,直接编译(工程设置里照前文方法在link选项里增加osip2.lib,osipparser2.lib引用我们之前成功编译得到的静态库文件)就可以运行(带参数运行,参数一般为一个文本文件,同样从Test目录的res目录里拷一个与源文件同名的纯文本文件到工程目录下即可)。   该目录下的若干文件基本上是测试了Osip的一些基本功能函数,例如URI解析之类,可以大概了解一下oSIP的语法规范和调用方法,同时也能校验一下之前编译的OSIP开发库能否正常使用,成功完成本项工作后,可以进入下一步具体的oSIP的使用学习了。 ------------------------------------------------------   由于oSIP是比较底层的SIP协议栈实现,新手较难上手,而官方的示例大都是一些伪代码,需要有实际的例子程序参考学习,而最好的例子就是同样官方发布的oSIP的扩展开发库exosip2,使用exoSIP可以很方便地快速创建一个完整的SIP程序(只针对性地适用于SIP终端开发用,所以我们这里只是用它快速开发一个SIP终端,用来更方便地学习oSIP,要想真正掌握SIP的开发,需要掌握oSIP并熟读RFC文档才行,exoSIP不是我们的最终学习目的),通过成功编译运行一个自己动手开发出的程序,再由浅入深应该是初学都最好的学习方法通过对使用exosip开发库的使用创建自己的SIP程序,熟悉后再一个函数一个函数地深入学习exosip提供的接口函数,就可以深入理解osip 了,达到间接学习oSIP的目的,同时也能从eXoSIP学习到正确使用oSIP的良好的编程风格和语法格式。   而要成功编译ExoSIP,似乎许多人被难住了,直接在XP-sp2上,用VC6,虽然你使用了eXoSIP推荐的winsock2.h,但是会得到一个 sockaddr_storage结构不能识别的错误,因为vc6自带的开发库太古董了,需要升级系统的Platform SDK,下载地址如下: http://www.microsoft.com/msdownl ... PSP2FULLInstall.htm(VC6的支持已经停止,这是VC6能使用的最新SDK)   成功安装后编译前需加OSIP_MT宏,以启用线程库,否则在程序使用eXoSIP库时会出错,而编译时也会得到许多函数未定义的Warning提示,编译得到exosip2.lib供我们使用,当然,在此之前需要成功编译了osip2和osipparser2,而在之后的实际使用时,发现oSIP也需要增加OSIP_MT宏,否则OSIP_MT调用oSIP的线程库时会出错,所以我们需要重新编译oSIP了:),因为eXosip是基于oSIP的(同上方式创建静态和动态链接库工程,并需在Link手工添加oSIP和oSIPparser的lib库)。 ------------------------------------------------------   创建新工程,可以是任意工程,我们从最简单的Win32控制台程序开始,为了成功使用oSIP,我们需要引用相关库,调用相关头文件,经过多次试验,发现需要引用如下的库: exosip2.lib osip2.lib osipparser2.lib WSock32.Lib IPHlpApi.Lib WS2_32.Lib Dnsapi.lib   其,除了我们上面编译得到的三个oSIP库外,其它库都是系统库,其有一些是新安装的Platform SDK所新提供的。   至此,我们有了一个简单的开发环境了,可以充分利用网上大量的以oSIP为基础的代码片段和官方说明文档开始具体函数功能的测试和使用了:) ------------------------------------------------------   我们先进行一个简单的纯SIP信令(不带语音连接建立)的UAC的SIP终端的程序开发的试验(即一个只能作为主叫不能作为被叫的的SIP软电话模型),我们创建一个MFC应用程序,对话框模式,照上面的说明,设置工程包含我们上面得到的oSIP的相关开发库及SDK的一些开发库,并且由于默认LIBC的冲突,需要排除MSVCRT[D]开发库(其D代表Debug模式下,没有D表示Release模式下),直接使用eXosip的几个主要函数就可以创建一个基本的SIP软电话模型。   其主要流程为:   初始化eXosip库-启动事件监听线程-向SIP Proxy注册-向某SIP终端(电话号码)发起呼叫-建立连接-结束连接   初始化代码: int ret = 0; ret = eXosip_init (); eXosip_set_user_agent("##YouToo0.1"); if(0 != ret) { AfxMessageBox("Couldn't initialize eXosip!\n"); return false; } ret = eXosip_listen_addr (IPPROTO_UDP, NULL, 0, AF_INET, 0); if(0 != ret) { eXosip_quit (); AfxMessageBox("Couldn't initialize transport layer!\n"); return false; }   启动事件监听线程: AfxBeginThread(sip_uac,(void *)this);   向SIP Proxy注册: eXosip_clear_authentication_info(); eXosip_add_authentication_info(uname, uname, upwd, "md5", NULL); real_send_register(30);  /* 自定义函数代码请见源码 */   发起呼叫(构建假的SDP描述,实际软电话使用它构建RTP媒体连接): osip_message_t *invite = NULL; /* 呼叫发起消息体 */ int i = eXosip_call_build_initial_invite (&invite, dest_call, source_call, NULL, "## YouToo test demo!"); if (i != 0) { AfxMessageBox("Intial INVITE failed!\n"); } char localip[128]; eXosip_guess_localip (AF_INET, localip, 128); snprintf (tmp, 4096, "v=0\r\n" "o=josua 0 0 IN IP4 %s\r\n" "s=conversation\r\n" "c=IN IP4 %s\r\n" "t=0 0\r\n" "m=audio %s RTP/AVP 0 8 101\r\n" "a=rtpmap:0 PCMU/8000\r\n" "a=rtpmap:8 PCMA/8000\r\n" "a=rtpmap:101 telephone-event/8000\r\n" "a=fmtp:101 0-11\r\n", localip, localip, "9900"); osip_message_set_body (invite, tmp, strlen(tmp)); osip_message_set_content_type (invite, "application/sdp"); eXosip_lock (); i = eXosip_call_send_initial_invite (invite); eXosip_unlock ();   挂断或取消通话: int ret; ret = eXosip_call_terminate(call_id, dialog_id); if(0 != ret) { AfxMessageBox("hangup/terminate Failed!"); }   可以看到非常简单,再借助于oRTP和Mediastreamer开发库,来快速为我们的SIP软电话增加RTP和与系统语音API接口交互及语音编码功能,即可以快速开发出一个可用的SIP软电话,关于oRTP和Mediastreamer的相关介绍不是本文重点,将在有空的时候考虑增加相应使用教程,文章前提到的地方可以下载基本可用的完整SIP软电话的VC源码工程文件供参考使用,完全CopyLeft,欢迎转载,但请在转载时注明作者信息,谢谢! 第二阶段: ---------------------------------------------------   得到了一个SIP软电话模型后,我们可以根据软电话的实际运行表现(结合用Ethereal抓包分析)来进行代码的分析,以达到利用eXoSIP来辅助我们学习oSIP的最终目的(如要快速开发一个可用的SIP软电话,请至前面提到的论坛去下载使用oRTP和Mediastreamer快速搭建的一个基本完整可用的SIP软电话##YouToo 0.1版本的VC源码工程文件作参考)。   现在从eXosip的初始化函数开始入手,来分析oSIP的使用,这是第二阶段,第三阶段就是深入学习oSIP的源码了,但大多数情况下应该没有必要了,因为在第二阶段就有部分涉及到第三阶段的工作了,而且oSIP的源码也就大多是一些SIP数据的语法解析和状态机的实现,能深入理解了SIP协议后,这些只是一种实现方式,没必要完全去接受,而是可以用自己的方式和风格来实现一套,比如,更轻量化更有适用目的性的方式,oSIP则只起参考作用了。   eXosip_init()是eXosip的初始化函数,我们来看看它的内部实现:   首行是定义的 osip_t *osip,这在oSIP的官方手册里我们看到,所有使用oSIP的程序都要在最开始处声明一个osip_t的指针,并使用 osip_init(&osip)来初始化这个指针,销毁这个资源使用osip_release(osip)即可。   我们可以在代码看到很多OSIP_TRACE,这是调试输出宏调用了函数osip_trace,可以用ENABLE_TRACE宏来打开调试以方便我们开发调试。   其它就是很多的eXosip_t的全局变量eXosip的一些初始化操作,包括最上面的memset (&eXosip, 0, sizeof (eXosip))完全清空和下面的类似eXosip.user_agent = osip_strdup ("eXosip/" EXOSIP_VERSION)的exosip变量的一些初始值设置,其有一个eXosip.j_stop_ua = 0应该是一个状态机开关,后面可以看到很多代码检测这个变量来决定是否继续流程处理,默认置成了0表示现在exosip的处理流程是就绪的,即ua是 not stop的。      osip_set_application_context (osip, &eXosip)是比较有意思的,它让下面的eXosip_set_callbacks (osip)给osip设置大量的回调函数时,能让osip能访问到eXosip这个全局变量设置的大量程序运行时交互的信息,相当于我们在VC下开启一个线程时,给线程传入的一个void指针指向我们的MFC应用程序的当前dialog对象实例,可以用void *osip_get_application_context (osip_t * osip)这个函数来取出指针来使用,不过好象exosip并没有用到它,可能是留给个人自已扩展的吧:)      还能看到初始化代码前面有一段WIN32平台下的SOCK的初始化代码,可以知道eXosip是用的原生的winsock api函数,也就是我们可能以前学过的用VC和WINAPI写sock程序时(不是MFC),用到的那段SOCK初始代码,还有一段有意思的代码,就是 jpipe()函数,它们返回的是一个管道,一个有2个整型数值的数组(一个进一个出),查看其代码发现,非WIN32平台是直接使用的pipe系统函数,而WIN32下则是用一对TCP的本地SOCK连接来模拟的管道,一个SOCK写一个SOCK读,这段代码是比较有参考价值的:) j = 50; while (aport++ && j-- > 0) {   raddr.sin_port = htons ((short) aport);   if (bind (s, (struct sockaddr *) &raddr, sizeof (raddr)) transactionid)); }   即,只是打印一下调试,并没有完整实现什么功能,我们学习时,完全可以用相同的方法,定义一大堆回调函数,并不忙想怎么完全实现,先都是只打印一下调试信息,看具体的应用逻辑根据抓包测试分析和看调试看程序走到了哪一步,调用了哪一个回调,来明白具体回调函数要实现什么用途,再来实现代码就方便多了,当然,如果看透了RFC文档,应该从字面就能知道各个回调函数的用途了,这是后话,不是谁都能快速完全看懂RFC的,所以我们要参考eXosip:)      我们对其的重要的回调函数进行逐个的分析:   ---------------------------   osip_set_cb_send_message (osip, &cb_snd_message) SIP消息发送回调函数   这个函数可能是最重要的回调函数之一,消息发送,包括请求消息和回应消息,一般情况下,状态机的状态就是由它控制的,发起一个消息初始化一个状态机,回应一个消息对状态机修改,终结消息发送结束状态机……   看cb_snd_message的函数实现,要以发现,其主要代码是对参数的要发送的消息osip_message_t * sip进行分析,找出消息要发送的真实char *host,int port的值(这些参数可以省略,但要发送消息肯定需要host和port,所以要从sip解析),最后根据sip解析出的传输方式是TCP还是 UDP选择最终进行消息发送处理的函数cb_udp_snd_message,cb_tcp_snd_message处理(它们的参数一致,即本函数只是补全一些省略的参数并对消息进行合法性检查)。   **毕竟eXosip是一个通用的开发库,它考虑了要支持TCP,UDP,TCPs,IPV4,IPV6,WIN32,*nix,WINCE等等多样化的复杂环境,所以,我们可以略过我们暂时不需要的部分,比如,IPV6相关的代码实现等。      由于我们大多数情况下SIP是用的UDP,所以先来看一下cb_udp_snd_message的实现,它从全局变量exosip获取可用的 sock,并尽最大能力解析出host和port(??难道前面的函数还不够解析彻底??如最终仍无port信息则默认设置为5060),使用 osip_message_to_str (sip, &message, &length)函数将要发送的格式化的SIP消息转换成能用SOCK传输的简单数据并发送即完成消息发送,代码有许多复杂的环境探测和错误控制等等等等,我们可以暂时不用过多关注,可以继续向下,结尾处有一个keeplive相关代码,从代码字面分析,可能是SIP的Register消息的自动重发相关代码,可以在后面再细化分析。   cb_tcp_snd_essage的函数实现要比上文的udp的实现简单很多,主要是环境探测错误控制方面,因为毕竟tcp是稳定连接的,对比一下代码,可以看到主要流程还是将SIP消息转换后,发送到从SIP消息解析出的host和port对应的目标。      看完两个函数,可以知道,eXosip需要有两个sock,是一个数组,0是给UDP用的,1是给TCP用的,要用SOCK当然要初始化,就是下文要介绍的eXosip的网络相关的初始化了,上面的exosip_init可以看成是这个开发库的系统初始化吧:)    至些,我们应该知道了oSIP开发的SIP应用程序的消息是从哪里发出的吧,对了,就是从这个回调函数里,所谓万事开头难,就象开发WIN32应用程序时,找到了WIN32程序的main函数入口下面的工作就好办了,下面就都是为一些事件消息开发对应的处理函数而已了:)   osip_set_kill_transaction_callback 事务终结回调函数   对应ICT,IST,NICT,NIST客户/服务器注册/非注册事务状态机的终结,主要是使用osip_remove_transaction (eXosip.j_osip, tr)将当前tr事务删除,再加上一系列的清理工作,其,NICT即客户端的非Invite事务的清理比较复杂一些,要处理的内容也比较多,可以根据实际应用的情况进行有必要的清理工作:)   cb_transport_error 传输失败处理回调   对应于上面说到的四种事务状态机,如果它们在处理时失败,则在这时进行统一处理。   从代码可知,只是在NOTIFY,SUBSCRIBE,OPTION操作失败才进行处理,其它错误可直接忽略。   osip_set_message_callback 消息发送处理回调   根据type不同,表示不同的消息发送状态   OSIP_XXX_AGAIN 重发相关消息   OSIP_ICT_INVITE_SENT 发起呼叫   OSIP_ICT_ACK_SENT ACK回应   OSIP_NICT_REGISTER_SENT 发起注册   OSIP_NICT_BYE_SENT BYE发出   OSIP_NICT_CANCEL_SENT Cancel发出   OSIP_NICT_INFO_SENT,OSIP_NICT_OPTIONS_SENT,OSIP_NICT_SUBSCRIBE_SENT,OSIP_NICT_NOTIFY_SENT,OSIP_NICT_UNKNOWN_REQUEST_SENT   我们可以看到,eXosip没有对它们作任何处理,我们可以根据自己需要,比如,重发2xx消息前记录一下日志之类的,扩展一下retransmission的处理方式,发起Invite前记录一下通话日志等等。   OSIP_ICT_STATUS_1XX_RECEIVED uac收到1xx消息,一般是表示对端正在处理,这时,主要是设置一下事务状态机的状态值,并对会话的osip的一些参数根据返回值进行相应设置,里面有许多条件判断,但我们常用的一般是100,180,183的判断而已,暂时可以忽略里面复杂的判断代码。   OSIP_ICT_STATUS_2XX_RECEIVED uac收到2xx消息,这里主要跟踪一下Register情况下的2xx,表示注册成功,这时会更新一下exosip的注册字段值,以便让eXosip能自动维护uac的注册,BYE的2xx回应是终结消息,Invite的2xx回应,则主要是初始化一下会话相关的数据,表示已成功建立连接。   其它4xx,5xx,6xx则分别是对应的处理,根据实现情况进行概要的查看即可。   report_event (je, sip)是代码用来进行事件处理的一个函数,跟踪后发现,其最终是使用了我们上文提到的jpipe管道,以便在状态机外实时观测状态机内的处理信息。      OSIP_NIST_STATUS_XXX_SENT即对应于上面的uac的处理,这里是uas的对应的消息处理,相比较于uac简单一点。   前面简单介绍了一下大量的回调函数及它们的概要处理逻辑,可能会比较混乱,暂时不用管它,只需要记得一个大概的形象,知道一个SIP处理程序是通过osip_set_cb_send_message回调函数来实现真实地发送各种SIP消息,并且SIP的标准事务模型是由oSIP实现好了,我们只需要给不同的事务状态设置不同的回调处理函数来处理事务,具体的状态变化和内部逻辑不用管就可以了。   下面来说一下消息处理回调函数用到的SOCK的初始化函数,即我们上面说的除了系统初始化外的网络初始化函数eXosip_listen_addr:   从上文知道了,系统将初始化两个SOCK,一个UDP一个TCP,但查看代码发现还有第三个,TCPs的,但好象还不能实用,现在不管它,代码首先是根据传输是UDP还是TCP来设置对应的数组值,并且如果没有提供IP地址和端口号,系统会自动取出本机网络接口并创建可用的SOCK(http_port 的方式暂不用考虑)。   SOCK初始化后,如何开始SIP事务的呢?看到这个调用eXosip.j_thread = (void *) osip_thread_create (20000, _eXosip_thread, NULL),对的,这里启用了一个线程,即,eXosip是调用oSIP的线程函数(没用系统提供的线程函数,是为了跨平台)进行事务处理的状态机逻辑是在一个线程处理的,这样就明白了为什么一直没能看到顺序执行下来的程序启动代码了,接下去看,线程实际处理函数是_eXosip_thread,这里面的代码,我们看到了上文提到的状态机控制开关变量while (eXosip.j_stop_ua == 0),即,当j_stop_ua设置为1时,osip_thread_exit ()结束事务处理即程序终结,再接下去看,_eXosip_execute是最终的处理函数了,而且它在程序未终结情况下是一直逻辑在执行,注意,要启用oSIP的多线程宏OSIP_MT。      看到_eXosip_execute的代码有很多时间函数和变量,仔细看,除去一些控制代码,主要处理函数是eXosip_read_message (1, lower_tv.tv_sec, lower_tv.tv_usec),即取出消息,1表示只取出一条消息,其代码量非常的大,但同样的,其也许多的控制代码和错误检测代码,我们在查看时可以暂时忽略掉它们。   eXosip_read_message读取消息时,即没有采用sock的block也没有用非block方式,而是采用了select方式,具体应用可查询fd_set相关文档。   根据jpipe_read (eXosip.j_socketctl, buf2, 499),我们可以估计,buf2应该是保存的我们的控制管道的数据,具体作用至些还没有表现出来,应该是用来反映一些状态机内部的警示之类的信息,实际的SIP的处理的状态机的数据是存放在buf,使用_eXosip_recvfrom获取的,获取后sipevent = osip_parse (buf, i)解析,使用osip_find_transaction_and_add_event (eXosip.j_osip, sipevent)来查询事件对应的事务状态机,找到后就如同其注解所说明的,/* handled by oSIP ! */,即我们上文设置的那一大堆回调函数,至此,我们知道了整个SIP应用所处理的大概流程了。   如果没有找到事务状态机呢?直接丢弃吗?不是的,如果这是一个回应消息,但没有事务状态机处理它,那它是一个错误的,要进行清理后才能丢弃,而如果是一个请求,那更不能丢弃了,因为UAS事务状态机要由它来启动创建的(回应消息表示本地发出了请求消息,即UAC行为,事务状态机应是由启动UAC的代码初始化启动的),整个逻辑应该是很简单的,但eXosip的实现代码却非常多,可见其花了非常多的精力在保证会话的稳定性和应付网络复杂情况上,我们可以对其进行大量的精简来构建满足我们需求的代码实现。   先来看错误的回应消息的处理函数eXosip_process_response_out_of_transaction,可以看到其代码就是一大堆的赋值语句,XXX= NULL,即将一大堆的运行时变量清空,再调用osip_event_free清空事件,或者就是一些复杂的情况下,需要通过解析现在的运行时数据,从分析出“可能”的正在等待回应的对端,并发送相关终结通知消息等等,可以根据实际需要进行简化。   请求事件的处理 eXosip_process_newrequest,首先是对事件进行探测,MSG_IS_INVITE、MSG_IS_ACK、 MSG_IS_REQUEST……,对事件进行所属状态机分类,随后使用_eXosip_transaction_init (&transaction,(osip_fsm_type_t) tx_type,eXosip.j_osip, evt->sip)根据探测结果进行状态机初始化,实际调用的是osip_transaction_init,初始化后即将事件入状态机 osip_transaction_add_event (transaction, evt),由状态机自动处理后调用相应回调函数处理逻辑了。当然,eXosip为方便快速开发SIP终端应用,在下面又添加了许多自动化的处理代码,来和我们在回调函数设置的处理代码相区分。   线程调用的事件处理函数代码最后是 if (eXosip.keep_alive > 0) {   _eXosip_keep_alive (); }   这段代码印证了上文提到了,keep_alive是用来设置是否自动重新注册,由_eXosip_keep_alive函数来实现自动将eXosip全局变量保存的注册消息解析后自动根据需要重新向SIP服务器发起Register注册。   同样,因为注册消息发起是UAC的行为,将它放在这里,可以看出来所有事件消息的事务状态机处理都是在这里,只不过这里只创建UAS的事务状态机,UAC的事务状态机的创建则要继续到下面找了,从我们的YouToo软电话代码可知,发起呼叫和发起注册分别调用了 eXosip_call_send_initial_invite,eXosip_register_send_register这两个函数(另外用到的两个build函数则是分别构建这两个send函数要发送的SIP消息),查看这两个函数可知,UAC的事务处理状态机是在这里进行初始化的。   eXosip_register_send_register可以看到是_eXosip_transaction_init (&transaction, NICT, eXosip.j_osip, reg)初始化UAC状态机,实际也同UAS是调用的osip_transaction_init函数,同样使用 osip_transaction_add_event (transaction, sipevent)将事件入状态机,状态机随后将自动处理调用相应回调函数处理逻辑了。   另有osip_new_outgoing_sipmessage(reg),表示发送消息,到这里,我们应该可以理解,真实的发送操作,是要到由状态机处理后,调用了消息发送回调函数才真正地将注册消息发送出去的。   同注册消息发送,它是NICT状态机,呼叫消息的发送是ICT,由eXosip_call_send_initial_invite处理,_eXosip_transaction_init (&transaction, ICT, eXosip.j_osip, invite)初始化了状态机,之前还有一个eXosip_call_init是用来初始化eXosip的一些参数的,暂时不管它,同样 osip_new_outgoing_sipmessage (invite)发送呼叫消息,但实际还是要状态机处理后调用消息发送回调函数真实发送呼叫请求函数的,osip_transaction_add_event (transaction, sipevent)则标准地,将事件入状态机,状态机将能处理随后的应用逻辑调用相应的回调函数了。   好了,作了这么多的分析,我们了解了eXosip是怎样调用oSIP来形成被我能方便地再次调用的了,可以看到,为了实现最大限度的跨平台和兼容性,代码有大量的测试代码,宏定义和错误再处理代码,看起来非常吃力,但了解了其主要的调用框架:   初始化,回调函数设置,UAC和UAS事务处理状态机的启动,事件处理流程等,就可以基本明白了oSIP各个函数的主要作用和正确的用法了,下一步,可以参考eXosip来针对某个应用,去除掉大量暂时用不到的代码,来构建一个简单的SIP软电话和SIP服务器,来进一步深入oSIP学习应用了。  ------------------------------------------------------ [下回预告:完全基于oSIP的软电话实现及oSIP进一步学习] (CopyLeft by Meineson | www.mbstudio.cn,原创文章,欢迎转载,但请保留出处说明!) 附件为原作者提供的
基于hhww改进版的传统五笔输入法 在hhhhwwww改进版输入法(生成器)的基础上,修改了背景颜色、取消了Ctrl+M换码、取消了切换码表的显示颜色、修改了“\”为“、"等细节完善! 此五笔输入法是用hhhhwwww改进的输入法生成器制作而成,是他的开拓性的工作,使本输入法臻于完美。 此五笔输入法安装包集成的输入法设置工具imetool是由Silence开发的,此工具可以方便地调节输入法的外观和操作参数。 在此向hhhhwwww及Silence致谢! ============================================================= 一、本输入法改进了哪些方面? 1、支持生成大词库、支持码表存在标点符号 2、可以用Shift直接切换英文状态 3、启动初始为文状态 4、小键盘的 “.”不会变为“。” 5、可选用取消空码锁定键盘 6、“动态码长”,即唯一码自动上屏。唯一的三码词组或全码单字不上屏。 7、汉字上屏后,编码输入框同时消失 8、可选用 ;‘ 选二三重码 9、可选用 ,。 翻页 10、设置项时,编码可以上屏 11、,./;即使为码元,第一码也按标点输出 12、更正设置“插空格”后输出错误等一些BUG 13、更正批量造词的BUG 14、加入六个选项,更自由的定制输入习惯 15、两码及以上才显示词组 16、UNICODE版可细分输出字符集 17、支持便携特征,可在注册表定义码表目录 18、支持VistaIE7保护模式 二、使用方法 1、本输入法安装包可用winrar打开及修改 2、使用安装包内的ImegenU.exe时(XP环境),请先将sw.ime复制到windows\system32目录,并改名为ImegenU.tpl 3、使用安装包内的Imegen9x.exe时(win98环境),请先将sw9x.ime复制到windows\system目录,并改名为Imegen.tpl 20081201更新: *修正反查编码一定要启动一次才生效的BUG *修正设置“繁体输出”和“词组联想”程序崩溃的BUG *优化程序流程。原版每打一个字都会读写一次MB,频繁读写硬盘,效率很低。 *CTRL+M 切换字符集失效调整为 CTRL+/ 20081125更新: *修正在Vista,在其它程序调用过后,IE7调用本输入法时出错的Bug 20070925新性: + 加入便携特征,可在注册表定义码表目录 + 加入对VistaIE7保护模式(UAC)的支持 + 集成一个安装程序,方便输入法安装 注: 1、关于NTFS分区Guest用户不能使用问题,用以下命令设置码表权限: cacls "%windir%\system32\我的输入法.mb" /t /e /c /g users:w 2、在VistaIE7(UAC)下不能使用问题,用以下命令设置一下码表级别: icacls.exe "%windir%\system32\我的输入法.mb" /SetIntegrityLevel Level src="./images/smilies/sweat.gif" border=0 smilieid="10"> 3、自定义目录码表目录的例子,输入法为winwb86: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion] "winwb86.mb"="c:\\temp" (保存为reg文件,导入) 4、如果不想通过注册表,而在文件强制定义码表目录: 第一步:0x023C58:EB 00 改为 EB 66 第二步:0x0241D0:Unicode码的C:\Temp 改为自设目录,最长24个字符 20061205新性: * 更正有查询码时(如五笔czol)空码时,锁定键盘的BUG * 取消强制文标点,即:CTRL+SPACE 关闭再打开输入法保持原状态 + CTRL+,调整为临时切换 “繁体输出” 本版支持:一些网友的定制要求解决方法: 1、定制候选框颜色方法: 0x1EB60 : 00005500 00800000 00000000 分别对应“候选、重码、联想”状态的颜色,可以自行修改。 2、字符集只要GB和GBK集方法: 第一步:用eXecope.exe等工具隐藏GBK、GB18030(Unicode作为GBK) 第二步:0x143DE 处 833803--->>>833801 第三步:0x0296F 处 E9FC800200---->>>E90F810200 3、“○”在GB也显示问题方案:将它放入自定义词组 20060915新性: * 修正BUG:首次启动默认为 GB2312 * 修正BUG:自定义词优先显示不再吃词 * 修正BUG:翻页不再出错 + 自定义词组不受 “字符集” 限制 + “反查编码”可以反查自身了 20060403版: 1、增加“四码以上推字上屏”功能:最大码长大于4时,如果5码有字/词,则显示,否则首个重码上屏 2、自定义词组优先显示: 3、似乎解决了“翻页锁定程序”的BUG:根据流程,乱改一处代码,不知是否有用。 051130版新性 + 可以直接设置 Space、Enter + 面板颜色提示当前输出字符集 + 增加输入繁体功能 + 可選重、空碼提示音 * 有候選字時,屏蔽 Shift+符號(解决BUG临时方案) * 更正Enter输出编码的小BUG 051102版新性 本版为UNICODE版 * 更正排序时出错的BUG * 更正编译较大码表出错的BUG 050908版新性 * 更正反查编码BUG(提示:注册表可设置反查自身编码) * UNICODE版,更正编译包括GB18030字的码表时组词编码错 乱的BUG (导出时GB18030字所带的组词码是垃圾,不用理会) * 更正SPACE=1时偶尔会锁键盘的BUG * 完善汉字上屏编码框同时消失功能,智能检测是否设置 “反查编码”,没有设置时生效 050831版新性: + 增加 GB/GBK/GB18030/UNICODE切换 * 完善=0编码上屏功能,空码时也有效 050826版新性: * 取消小于最大码长有重码时,一次空格上屏 ( 原版有此功能,注册表直接设置=1即可 ) 050824版新性: * 更正CTRL+SHIFT切换有时会转入英文状态的BUG * 更正批量造词保存时出现乱码的BUG * 加入自定义词库导出功能 * 设置=0时,编码上屏 * 完善“动态码长”功能。小于最大码长而无后继码,重码 时自动转为候选状态,部分代码来自LoveEB 二、您还可以自和修改输入法ime文件(需要一些软件方面的知识,请确认您能看懂下面这些再去做) 输入法ime文件的可选修改项: ====================================================== 恢复 \ 号输入“、”問題: 6683FF2F750C6A00680130 -> 6683FF5C750C6A00680130 ============================== 改为右Shift键问题: 要修改两处:2A -->> 36 :73914DA8 807D122A cmp byte ptr [ebp+12], 2A :73914DE0 807D122A cmp byte ptr [ebp+12], 2A ============================== 修改为两shift切換: 122A --->>> 0C10 搜索一下,有兩處地方要改。 ============================== 笔记本电脑特殊标点转换: []--->>>() , |--->>>: , ` --->>> . 0x14143:0F85B76C0100--->>>0F856F6C0100 ============================== 将检索字符集“GB2312”与“Unicode”的颜色对换: 7392B890 0FB605 BC1E9273 movzx eax,byte ptr ds:[73921EBC] 7392B897 48 dec eax 7392B898 76 25 jbe short winwb86.7392B8BF 7392B89A C70424 0000FF00 mov dword ptr ss:[esp],0FF0000 //gbk之蓝色 7392B8A1 48 dec eax 7392B8A2 76 1B jbe short winwb86.7392B8BF 7392B8A4 C70424 00000000 mov dword ptr ss:[esp],0 //gb2312之黑色 7392B8AB 48 dec eax 7392B8AC 76 11 jbe short winwb86.7392B8BF 7392B8AE C70424 FFFF0000 mov dword ptr ss:[esp],0FFFF //gb18030颜色 7392B8B5 48 dec eax 7392B8B6 76 07 jbe short winwb86.7392B8BF 7392B8B8 C70424 FF000000 mov dword ptr ss:[esp],0FF //unicode之红色 7392B8BF - E9 1B33FEFF jmp winwb86.7390EBDF ====================================================== 解决切换到GB18030字符集时多重候选因范围检查可能造成的翻页死机问题(如海峰五笔输入fggg,oitk等编码): 0x03206: 833D BC1E 9273 0074 3483 --->>> 833D BC1E 9273 0472 3483 ================================ 开启2~9选字自动调频方法: 0x10E28:83FB397704--->>>E9539F0100,设置“外碼提示”且取消“手动调频”时生效 关闭2~9选字自动调频方法: 0x10E28处E9539F0100改为83FB397704 选定“Ctrl+序号调频”时会屏蔽“自动调频” ================================= 颜色還原问题: 1.从系统system32目录里找到生成的ime文件,用eXeScope软件把有关位图替换为原版灰色系位图。 2.用WinHex软件替换ime文件的以下内容: C745D403000100C745F01D000000 --->>> 6A01C745D403000100FFD38945F0 BF2602BB00 --->>> BF2000CC00 3.调整候选框背景色深浅(有5处): F0F0F0 (hhhhwwww设置的浅灰白色)--->>>C0C0C0 (传统灰色) 或 D8D8D8 (两者之间)。其,0x92F4处为候选框背景色,0x9526,AF52,B0A9,E6E2几处共同决定输入框背景色。 ================================ 取消Ctrl+M调整字符:0x141CD 的7408--->>>0xEB08 :73914DBE 807D1232 cmp byte ptr [ebp+12], 32 :73914DC2 7513 jne 73914DD7 :73914DC4 8B5D14 mov ebx, dword ptr [ebp+14] :73914DC7 8A5B11 mov bl, byte ptr [ebx+11] :73914DCA F6C380 test bl, 80 :73914DCD 7408 je 73914DD7 ------>>>>> EB08 jmp 73914DD7 :73914DCF E804020000 call 73914FD8 :73914DD4 EB2A jmp 73914E00 :73914DD6 90 nop ============================== 关于:默认安装时是unicode字符集问题 用exescope看看资源 RCData --》》IMECHARAC(偏移0x22DA4):目前是EE 04 。 用“计算器”将“EE”用二进制查看,共八位每一位分别对应设置的每一个选项。扩展选项只有第四第八项可以设置。 将04改为00即是Unicode ============================= Space参数就是空格是否强制上屏: 例如:两个都是三码的字,并且重码。如果Space=0,打完三码后按了空格后就出现重码框。 如果Space=1,打完三码后按了空格,第一重码就上屏,不会出现重码框。 在注册表设置即可 ============================== 当开启了动态码长之后,若码表的MaxCodes设为超过4码,则有些五笔四码字词不能自动被顶上屏。(在重码较多时发生,重码少时未发现此现象。) 正常,原版即是这么处理。原来的程序员定义“SPACE直接上屏”的标志可能也与之有关 ============================ 输入法设置工具 IME TOOL http://www.mympc.org 声明:IMETool 为免费软件,非商业使用无须授权,但不得对软件本身做任何修改。允许个人开发的免费输入法软件将其加入安装包使用,但安装包内不得包含有广告插件或流氓软件。 IME TOOL 支持英文界面,适用于 Win98/ME/2000/XP/2003 操作系统,目前不支持 VISTA。 主要功能: 一、动态调整输入法顺序而无须重启。 二、切换输入法指示器和高级文字服务方式。 三、任意设置输入法热键 Windows 本身的输入法热键设置功能限制很多,2000/XP 下更是如此,你不得不设置 ctrl+shift+3 这样的三键热键。IME Tool 让你可以自由地设置各种热键,基本键(ctrl、alt、shift)共有六种组合,辅助键有 91 个可选,如用左 Alt+左 Window 键激活龙文五笔,shift+down 激活紫光拼音。当然,有些热键组合是不能用的,如 shift+数字字母键。 四、注册表错误项目修正 1、自动删除输入法列表不存在的输入法项目,位置: HKEY_CURRENT_USER\Keyboard Layout\preload 2、检查注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts 下的内容,如果某分支对应的输入法文件不存在,则删除此分支(需要管理员权限)。 3、自动删除输入法从列表删除后可能遗留的激活热键设置,位置: HKEY_CURRENT_USER\Control Panel\Input Method\Hot Keys 五、输入法键盘定义功能,适用于非英文键盘(需要管理员权限)。 六、安装删除输入法 IME TOOL 可以安装标准格式的输入法。自行复制 ime 和 mb 文件到系统目录,然后使用 imetool 的安装输入法功能指定输入法名称和 ime 文件即可。 IME TOOL 可以从注册表删除不需要的输入法,但并不删除文件。 七、其它功能 打开输入法属性、打开关闭输入法状态条等。支持命令行参数,支持运行脚本。 另外修正了老版本存在的一些小 bug。 局限: 1、在 Win9x 下设置的输入法热键不能立即生效,必须重启。在 Win95/NT 系统下有更多的功能限制。 注意: 1、用 IME Tool 设置的一些热键在 Windows 本身的输入法设置无法正确显示,但不影响使用。 2、繁体、韩文、日文系统下的打开关闭输入法等切换键设置在注册表的位置不同,因条件所限我没有做进一步测试功能是否有效。 3、在 IME Tool 刚添加的输入法不能立即设置属性。 4、如果使用输入法指示器方式时,在系统目录下未发现 internat.exe 和 indicdll.dll 文件,将会自动复制当前目录下的此二文件过去(如果存在)。 命令行参数说明: /? /h /help 显示此帮助 /on 启用 internat.exe 或 ctfmon.exe /off 禁用 internat.exe 或 ctfmon.exe /internat 输入法指示器风格 /ctfmon 高级文字服务风格 /status:<0/1> <0>: 关闭输入法状态条,<1>: 显示输入法状态条 /caps 用 Caps 键关闭大写 /shift 用 Shift 键关闭大写 /switch:<0/1/2/3> <0>: 不使用切换语言和切换键盘布局热键 <1>: 仅使用切换语言热键 <2>: 仅使用切换键盘布局热键 <3>: 同时使用切换语言和切换键盘布局热键 : 切换语言热键使用Ctrl+Shift : 切换键盘布局热键使用Ctrl+Shift /hotkey:<1/2/3/a/b/c>,[hotkey] 指定输入法热键 <1/2/3..>,指定第1、2、3.. 个输入法的热键 指定打开/关闭输入法的热键 指定全角/半角切换的热键 指定英文标点切换的热键 如果留空则删除热键 [hotkey] 热键值,如:ctrl+space /add1:,[hotkey] 按名称添加输入法到列表 /add2:,[hotkey] 按文件名添加输入法到列表 /add3:,[hotkey] 按 ID 添加输入法到列表 /del1:<1/2/3> 按顺序从列表删除输入法 /del2: 按名称从列表删除输入法 /del3: 按文件名从列表删除输入法 /del4: 按 ID 从列表删除输入法 /install:[name],,[hotkey] 安装输入法 /uninstall1: 按名称从注册表删除输入法 /uninstall2: 按文件从注册表删除输入法 /uninstall3: 按 ID 从注册表删除输入法 /move1:, 按名称调整输入法顺序, 为调整后的序号,下同 /move2:, 按文件名调整输入法顺序 /move3:, 按 ID 调整输入法顺序 /load: 从配置文件调入参数 [hotkey] 格式: Ctrl+Shift_8_Left,如果同时使用左右键,则可以写为: Ctrl+Shift_8。 注意:要在命令行参数设置“/”和“,”作为辅助热键时,为避免和参数前导符和分隔符冲突,应写为“?”和“<”,如:ctrl_?_right、alt_< 要安装一个输入法到注册表时,须手工复制文件,xx.ime 文件必须复制到系统目录。使用 /install 参数安装时,xx.ime 文件名前不能加路径,如: imetool /install:文(简体) - 智能 ABC,winabc.ime 欢迎测试并反馈 bug。 更新: 2.8.0 版,修正“APPS”(右键菜单键)热键误设为右 Windows 键的问题。 2.7.9 版,修正热键选择为“无”,确定后程序非法操作的问题。 2.7.8 版,修正在输入法风格里连续点击同一个模式单选框时,输入法切换热键会来回切换问题。 2.7.7 版,修订网友发现的两处错误。 2.7.6 版,改进某些特殊输入法名称显示不正确的问题(如微软拼音2007) 2.7.5 版,刚刚发现增加了修改输入法名称后带来个输入法列表显示可能会错位的问题,再修订…… 2.7.4 版,主要是增加了繁体显示界面;修改 internat.exe 和 ctfmon.exe 在注册表的值,以和系统保持一致。 2.7.3 版,圣诞节更新 IMETool 至 2.7.2,此版本语句变化较多。主要是增强对 VISTA 的兼容性;改进输入法列表输入法名称的显示方式;增加自定义输入法名称功能(仅对高级文字服务模式有效,点击列表输入法名称或按 F2 进行修改,如应用后看不到效果,注销或重启即可);修订在 2003 下列表可能不显示的问题,修订一些其它 bug。 2.7.1 版,修订重复热键可能无法取消的 bug。 2.7.0 版,修订热键重复提示的 bug。 2.6.9 版,增加一种修复注册表重复项目功能。 2.6.8 版, 增加三个命令行参数,用以调整输入法顺序。改善输入法状态条显示问题。增加一些状态条显示信息。帮助文档改用 utf-8 格式保存。 2.6.7 版,修订上一版本在 2003 下无法正常显示输入法列表的问题(此问题是由我使用的新版本控件bug引起)。 2.6.6 版,增加两个命令行参数,修订以命令行方式添加输入法时在某些情况下添加多余输入法的问题。 2.6.5 版,使高级文字服务和输入法指示器风格下的输入法切换热键保持一致,文字提示稍做调整,便于用户理解。增加常见问题说明。 2.6.4 版,程序内部一些调整。 2.6.3 版,程序内部一些调整。 2.6.2 版,解决某些情况下可能会使输入法指示条消失的问题(注:经仔细测试,此问题并未解决,具体原因不明,待研究)。 2.6.1 版,实现了带参数运行时完全隐藏主界面。 2.6.0 版,修复使用 /install 参数时在某种情况下会运行出错的 bug。参数的分隔符由竖线改为逗号。 2.5.9 版,将自动复制 internat.exe/indicdll.dll 的源路径由当前路径改为 imetool.exe 所在路径。在程序左上角菜单增加命令行参数提示。 2.5.8 版,修改键盘定义对话框丢失下拉列表问题(真是莫名其妙),一些细节调整。 2.5.7 版,修订其它切换热键的设置按钮文字不会随左边的下拉列表切换的 bug。 2.5.6 版,应网友要求取消气球提示,改为状态栏提示。 2.5.5 版,增强对语言栏丢失时的修复功能(有时需要注销后方可生效)。 2.5.4 版,修订设置热键时小键盘某些键值不对的问题。 2.5.3 版,修订启动时检测输入法风格可能不对的 bug。 2.5.2 版,本修订添加输入法时图标显示的一处 bug。高级/从注册表删除输入法时可在输入法显示框用鼠标滚轮切换不同的输入法。 2.5.1 版,修订一些程序上的 bug,添加关于信息。 2.5.0 版,支持命令行参数、支持从脚本调入参数运行。 2.4.5 版,修订安装输入法时导致出错的问题。 2.4.4 版,继续修订 bug。 2.4.3 版,修正 2.4.2 版未完全修正的问题。 2.4.2 版,修正点击应用按键后一些显示状态错位问题。 2.4.1 版,修正热键设置窗口状态显示不正常问题。 2.4.0 版,重新调整界面布局。增加应用按钮。安装 ime 文件时可以自动获取文件信息做为输入法名称。调整程序处理流程。 2.3.1 版,更新:大写关闭键设置后可立即生效;在输入法列表的不同列上双击可分别打开属性和热键设置。压缩包的 internat.exe 做了修改,在其右键上选择属性可打开 imetool。另外修订一些 bug。 2.3.0 版,增加安装删除输入法功能;增加一些项目的浮动提示;增加可安装输入法(语言)的范围;修正一些小的 bug。改变版本号的命名方式便之规范化。 2.22 版,一些内部项目的调整。 2.21 版,修订会误删除某些注册表项目的 bug。 2.2 版,可以将排列第一位的输入法立即设为默认输入法而无须重启。 2.12 版,修正输入法打开关闭等热键无法取消的 bug。 2.11 版,修正某些情况下程序无法运行的 bug。 本压缩包附带的 internat.exe 和 indicdll.dll 为从 Windows 2000 Pro 简体文版提取并修改过,适用于 XP/2003。
基于hhww改进版的传统五笔输入法(支持WIN7) 在hhhhwwww改进版输入法(生成器)的基础上,修改了背景颜色、取消了Ctrl+M换码、取消了切换码表的显示颜色、修改了“\”为“、"等细节完善! 此五笔输入法是用hhhhwwww改进的输入法生成器制作而成,是他的开拓性的工作,使本输入法臻于完美。 此五笔输入法安装包集成的输入法设置工具imetool是由Silence开发的,此工具可以方便地调节输入法的外观和操作参数。 在此向hhhhwwww及Silence致谢! ============================================================= 一、本输入法改进了哪些方面? 1、支持生成大词库、支持码表存在标点符号 2、可以用Shift直接切换英文状态 3、启动初始为文状态 4、小键盘的 “.”不会变为“。” 5、可选用取消空码锁定键盘 6、“动态码长”,即唯一码自动上屏。唯一的三码词组或全码单字不上屏。 7、汉字上屏后,编码输入框同时消失 8、可选用 ;‘ 选二三重码 9、可选用 ,。 翻页 10、设置项时,编码可以上屏 11、,./;即使为码元,第一码也按标点输出 12、更正设置“插空格”后输出错误等一些BUG 13、更正批量造词的BUG 14、加入六个选项,更自由的定制输入习惯 15、两码及以上才显示词组 16、UNICODE版可细分输出字符集 17、支持便携特征,可在注册表定义码表目录 18、支持VistaIE7保护模式 二、使用方法 1、本输入法安装包可用winrar打开及修改 2、使用安装包内的ImegenU.exe时(XP环境),请先将sw.ime复制到windows\system32目录,并改名为ImegenU.tpl 3、使用安装包内的Imegen9x.exe时(win98环境),请先将sw9x.ime复制到windows\system目录,并改名为Imegen.tpl 20081201更新: *修正反查编码一定要启动一次才生效的BUG *修正设置“繁体输出”和“词组联想”程序崩溃的BUG *优化程序流程。原版每打一个字都会读写一次MB,频繁读写硬盘,效率很低。 *CTRL+M 切换字符集失效调整为 CTRL+/ 20081125更新: *修正在Vista,在其它程序调用过后,IE7调用本输入法时出错的Bug 20070925新性: + 加入便携特征,可在注册表定义码表目录 + 加入对VistaIE7保护模式(UAC)的支持 + 集成一个安装程序,方便输入法安装 注: 1、关于NTFS分区Guest用户不能使用问题,用以下命令设置码表权限: cacls "%windir%\system32\我的输入法.mb" /t /e /c /g users:w 2、在VistaIE7(UAC)下不能使用问题,用以下命令设置一下码表级别: icacls.exe "%windir%\system32\我的输入法.mb" /SetIntegrityLevel Level src="./images/smilies/sweat.gif" border=0 smilieid="10"> 3、自定义目录码表目录的例子,输入法为winwb86: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion] "winwb86.mb"="c:\\temp" (保存为reg文件,导入) 4、如果不想通过注册表,而在文件强制定义码表目录: 第一步:0x023C58:EB 00 改为 EB 66 第二步:0x0241D0:Unicode码的C:\Temp 改为自设目录,最长24个字符 20061205新性: * 更正有查询码时(如五笔czol)空码时,锁定键盘的BUG * 取消强制文标点,即:CTRL+SPACE 关闭再打开输入法保持原状态 + CTRL+,调整为临时切换 “繁体输出” 本版支持:一些网友的定制要求解决方法: 1、定制候选框颜色方法: 0x1EB60 : 00005500 00800000 00000000 分别对应“候选、重码、联想”状态的颜色,可以自行修改。 2、字符集只要GB和GBK集方法: 第一步:用eXecope.exe等工具隐藏GBK、GB18030(Unicode作为GBK) 第二步:0x143DE 处 833803--->>>833801 第三步:0x0296F 处 E9FC800200---->>>E90F810200 3、“○”在GB也显示问题方案:将它放入自定义词组 20060915新性: * 修正BUG:首次启动默认为 GB2312 * 修正BUG:自定义词优先显示不再吃词 * 修正BUG:翻页不再出错 + 自定义词组不受 “字符集” 限制 + “反查编码”可以反查自身了 20060403版: 1、增加“四码以上推字上屏”功能:最大码长大于4时,如果5码有字/词,则显示,否则首个重码上屏 2、自定义词组优先显示: 3、似乎解决了“翻页锁定程序”的BUG:根据流程,乱改一处代码,不知是否有用。 051130版新性 + 可以直接设置 Space、Enter + 面板颜色提示当前输出字符集 + 增加输入繁体功能 + 可選重、空碼提示音 * 有候選字時,屏蔽 Shift+符號(解决BUG临时方案) * 更正Enter输出编码的小BUG 051102版新性 本版为UNICODE版 * 更正排序时出错的BUG * 更正编译较大码表出错的BUG 050908版新性 * 更正反查编码BUG(提示:注册表可设置反查自身编码) * UNICODE版,更正编译包括GB18030字的码表时组词编码错 乱的BUG (导出时GB18030字所带的组词码是垃圾,不用理会) * 更正SPACE=1时偶尔会锁键盘的BUG * 完善汉字上屏编码框同时消失功能,智能检测是否设置 “反查编码”,没有设置时生效 050831版新性: + 增加 GB/GBK/GB18030/UNICODE切换 * 完善=0编码上屏功能,空码时也有效 050826版新性: * 取消小于最大码长有重码时,一次空格上屏 ( 原版有此功能,注册表直接设置=1即可 ) 050824版新性: * 更正CTRL+SHIFT切换有时会转入英文状态的BUG * 更正批量造词保存时出现乱码的BUG * 加入自定义词库导出功能 * 设置=0时,编码上屏 * 完善“动态码长”功能。小于最大码长而无后继码,重码 时自动转为候选状态,部分代码来自LoveEB 二、您还可以自和修改输入法ime文件(需要一些软件方面的知识,请确认您能看懂下面这些再去做) 输入法ime文件的可选修改项: ====================================================== 恢复 \ 号输入“、”問題: 6683FF2F750C6A00680130 -> 6683FF5C750C6A00680130 ============================== 改为右Shift键问题: 要修改两处:2A -->> 36 :73914DA8 807D122A cmp byte ptr [ebp+12], 2A :73914DE0 807D122A cmp byte ptr [ebp+12], 2A ============================== 修改为两shift切換: 122A --->>> 0C10 搜索一下,有兩處地方要改。 ============================== 笔记本电脑特殊标点转换: []--->>>() , |--->>>: , ` --->>> . 0x14143:0F85B76C0100--->>>0F856F6C0100 ============================== 将检索字符集“GB2312”与“Unicode”的颜色对换: 7392B890 0FB605 BC1E9273 movzx eax,byte ptr ds:[73921EBC] 7392B897 48 dec eax 7392B898 76 25 jbe short winwb86.7392B8BF 7392B89A C70424 0000FF00 mov dword ptr ss:[esp],0FF0000 //gbk之蓝色 7392B8A1 48 dec eax 7392B8A2 76 1B jbe short winwb86.7392B8BF 7392B8A4 C70424 00000000 mov dword ptr ss:[esp],0 //gb2312之黑色 7392B8AB 48 dec eax 7392B8AC 76 11 jbe short winwb86.7392B8BF 7392B8AE C70424 FFFF0000 mov dword ptr ss:[esp],0FFFF //gb18030颜色 7392B8B5 48 dec eax 7392B8B6 76 07 jbe short winwb86.7392B8BF 7392B8B8 C70424 FF000000 mov dword ptr ss:[esp],0FF //unicode之红色 7392B8BF - E9 1B33FEFF jmp winwb86.7390EBDF ====================================================== 解决切换到GB18030字符集时多重候选因范围检查可能造成的翻页死机问题(如海峰五笔输入fggg,oitk等编码): 0x03206: 833D BC1E 9273 0074 3483 --->>> 833D BC1E 9273 0472 3483 ================================ 开启2~9选字自动调频方法: 0x10E28:83FB397704--->>>E9539F0100,设置“外碼提示”且取消“手动调频”时生效 关闭2~9选字自动调频方法: 0x10E28处E9539F0100改为83FB397704 选定“Ctrl+序号调频”时会屏蔽“自动调频” ================================= 颜色還原问题: 1.从系统system32目录里找到生成的ime文件,用eXeScope软件把有关位图替换为原版灰色系位图。 2.用WinHex软件替换ime文件的以下内容: C745D403000100C745F01D000000 --->>> 6A01C745D403000100FFD38945F0 BF2602BB00 --->>> BF2000CC00 3.调整候选框背景色深浅(有5处): F0F0F0 (hhhhwwww设置的浅灰白色)--->>>C0C0C0 (传统灰色) 或 D8D8D8 (两者之间)。其,0x92F4处为候选框背景色,0x9526,AF52,B0A9,E6E2几处共同决定输入框背景色。 ================================ 取消Ctrl+M调整字符:0x141CD 的7408--->>>0xEB08 :73914DBE 807D1232 cmp byte ptr [ebp+12], 32 :73914DC2 7513 jne 73914DD7 :73914DC4 8B5D14 mov ebx, dword ptr [ebp+14] :73914DC7 8A5B11 mov bl, byte ptr [ebx+11] :73914DCA F6C380 test bl, 80 :73914DCD 7408 je 73914DD7 ------>>>>> EB08 jmp 73914DD7 :73914DCF E804020000 call 73914FD8 :73914DD4 EB2A jmp 73914E00 :73914DD6 90 nop ============================== 关于:默认安装时是unicode字符集问题 用exescope看看资源 RCData --》》IMECHARAC(偏移0x22DA4):目前是EE 04 。 用“计算器”将“EE”用二进制查看,共八位每一位分别对应设置的每一个选项。扩展选项只有第四第八项可以设置。 将04改为00即是Unicode ============================= Space参数就是空格是否强制上屏: 例如:两个都是三码的字,并且重码。如果Space=0,打完三码后按了空格后就出现重码框。 如果Space=1,打完三码后按了空格,第一重码就上屏,不会出现重码框。 在注册表设置即可 ============================== 当开启了动态码长之后,若码表的MaxCodes设为超过4码,则有些五笔四码字词不能自动被顶上屏。(在重码较多时发生,重码少时未发现此现象。) 正常,原版即是这么处理。原来的程序员定义“SPACE直接上屏”的标志可能也与之有关 ============================ 输入法设置工具 IME TOOL http://www.mympc.org 声明:IMETool 为免费软件,非商业使用无须授权,但不得对软件本身做任何修改。允许个人开发的免费输入法软件将其加入安装包使用,但安装包内不得包含有广告插件或流氓软件。 IME TOOL 支持英文界面,适用于 Win98/ME/2000/XP/2003 操作系统,目前不支持 VISTA。 主要功能: 一、动态调整输入法顺序而无须重启。 二、切换输入法指示器和高级文字服务方式。 三、任意设置输入法热键 Windows 本身的输入法热键设置功能限制很多,2000/XP 下更是如此,你不得不设置 ctrl+shift+3 这样的三键热键。IME Tool 让你可以自由地设置各种热键,基本键(ctrl、alt、shift)共有六种组合,辅助键有 91 个可选,如用左 Alt+左 Window 键激活龙文五笔,shift+down 激活紫光拼音。当然,有些热键组合是不能用的,如 shift+数字字母键。 四、注册表错误项目修正 1、自动删除输入法列表不存在的输入法项目,位置: HKEY_CURRENT_USER\Keyboard Layout\preload 2、检查注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts 下的内容,如果某分支对应的输入法文件不存在,则删除此分支(需要管理员权限)。 3、自动删除输入法从列表删除后可能遗留的激活热键设置,位置: HKEY_CURRENT_USER\Control Panel\Input Method\Hot Keys 五、输入法键盘定义功能,适用于非英文键盘(需要管理员权限)。 六、安装删除输入法 IME TOOL 可以安装标准格式的输入法。自行复制 ime 和 mb 文件到系统目录,然后使用 imetool 的安装输入法功能指定输入法名称和 ime 文件即可。 IME TOOL 可以从注册表删除不需要的输入法,但并不删除文件。 七、其它功能 打开输入法属性、打开关闭输入法状态条等。支持命令行参数,支持运行脚本。 另外修正了老版本存在的一些小 bug。 局限: 1、在 Win9x 下设置的输入法热键不能立即生效,必须重启。在 Win95/NT 系统下有更多的功能限制。 注意: 1、用 IME Tool 设置的一些热键在 Windows 本身的输入法设置无法正确显示,但不影响使用。 2、繁体、韩文、日文系统下的打开关闭输入法等切换键设置在注册表的位置不同,因条件所限我没有做进一步测试功能是否有效。 3、在 IME Tool 刚添加的输入法不能立即设置属性。 4、如果使用输入法指示器方式时,在系统目录下未发现 internat.exe 和 indicdll.dll 文件,将会自动复制当前目录下的此二文件过去(如果存在)。 命令行参数说明: /? /h /help 显示此帮助 /on 启用 internat.exe 或 ctfmon.exe /off 禁用 internat.exe 或 ctfmon.exe /internat 输入法指示器风格 /ctfmon 高级文字服务风格 /status:<0/1> <0>: 关闭输入法状态条,<1>: 显示输入法状态条 /caps 用 Caps 键关闭大写 /shift 用 Shift 键关闭大写 /switch:<0/1/2/3> <0>: 不使用切换语言和切换键盘布局热键 <1>: 仅使用切换语言热键 <2>: 仅使用切换键盘布局热键 <3>: 同时使用切换语言和切换键盘布局热键 : 切换语言热键使用Ctrl+Shift : 切换键盘布局热键使用Ctrl+Shift /hotkey:<1/2/3/a/b/c>,[hotkey] 指定输入法热键 <1/2/3..>,指定第1、2、3.. 个输入法的热键 指定打开/关闭输入法的热键 指定全角/半角切换的热键 指定英文标点切换的热键 如果留空则删除热键 [hotkey] 热键值,如:ctrl+space /add1:,[hotkey] 按名称添加输入法到列表 /add2:,[hotkey] 按文件名添加输入法到列表 /add3:,[hotkey] 按 ID 添加输入法到列表 /del1:<1/2/3> 按顺序从列表删除输入法 /del2: 按名称从列表删除输入法 /del3: 按文件名从列表删除输入法 /del4: 按 ID 从列表删除输入法 /install:[name],,[hotkey] 安装输入法 /uninstall1: 按名称从注册表删除输入法 /uninstall2: 按文件从注册表删除输入法 /uninstall3: 按 ID 从注册表删除输入法 /move1:, 按名称调整输入法顺序, 为调整后的序号,下同 /move2:, 按文件名调整输入法顺序 /move3:, 按 ID 调整输入法顺序 /load: 从配置文件调入参数 [hotkey] 格式: Ctrl+Shift_8_Left,如果同时使用左右键,则可以写为: Ctrl+Shift_8。 注意:要在命令行参数设置“/”和“,”作为辅助热键时,为避免和参数前导符和分隔符冲突,应写为“?”和“<”,如:ctrl_?_right、alt_< 要安装一个输入法到注册表时,须手工复制文件,xx.ime 文件必须复制到系统目录。使用 /install 参数安装时,xx.ime 文件名前不能加路径,如: imetool /install:文(简体) - 智能 ABC,winabc.ime 欢迎测试并反馈 bug。 更新: 2.8.0 版,修正“APPS”(右键菜单键)热键误设为右 Windows 键的问题。 2.7.9 版,修正热键选择为“无”,确定后程序非法操作的问题。 2.7.8 版,修正在输入法风格里连续点击同一个模式单选框时,输入法切换热键会来回切换问题。 2.7.7 版,修订网友发现的两处错误。 2.7.6 版,改进某些特殊输入法名称显示不正确的问题(如微软拼音2007) 2.7.5 版,刚刚发现增加了修改输入法名称后带来个输入法列表显示可能会错位的问题,再修订…… 2.7.4 版,主要是增加了繁体显示界面;修改 internat.exe 和 ctfmon.exe 在注册表的值,以和系统保持一致。 2.7.3 版,圣诞节更新 IMETool 至 2.7.2,此版本语句变化较多。主要是增强对 VISTA 的兼容性;改进输入法列表输入法名称的显示方式;增加自定义输入法名称功能(仅对高级文字服务模式有效,点击列表输入法名称或按 F2 进行修改,如应用后看不到效果,注销或重启即可);修订在 2003 下列表可能不显示的问题,修订一些其它 bug。 2.7.1 版,修订重复热键可能无法取消的 bug。 2.7.0 版,修订热键重复提示的 bug。 2.6.9 版,增加一种修复注册表重复项目功能。 2.6.8 版, 增加三个命令行参数,用以调整输入法顺序。改善输入法状态条显示问题。增加一些状态条显示信息。帮助文档改用 utf-8 格式保存。 2.6.7 版,修订上一版本在 2003 下无法正常显示输入法列表的问题(此问题是由我使用的新版本控件bug引起)。 2.6.6 版,增加两个命令行参数,修订以命令行方式添加输入法时在某些情况下添加多余输入法的问题。 2.6.5 版,使高级文字服务和输入法指示器风格下的输入法切换热键保持一致,文字提示稍做调整,便于用户理解。增加常见问题说明。 2.6.4 版,程序内部一些调整。 2.6.3 版,程序内部一些调整。 2.6.2 版,解决某些情况下可能会使输入法指示条消失的问题(注:经仔细测试,此问题并未解决,具体原因不明,待研究)。 2.6.1 版,实现了带参数运行时完全隐藏主界面。 2.6.0 版,修复使用 /install 参数时在某种情况下会运行出错的 bug。参数的分隔符由竖线改为逗号。 2.5.9 版,将自动复制 internat.exe/indicdll.dll 的源路径由当前路径改为 imetool.exe 所在路径。在程序左上角菜单增加命令行参数提示。 2.5.8 版,修改键盘定义对话框丢失下拉列表问题(真是莫名其妙),一些细节调整。 2.5.7 版,修订其它切换热键的设置按钮文字不会随左边的下拉列表切换的 bug。 2.5.6 版,应网友要求取消气球提示,改为状态栏提示。 2.5.5 版,增强对语言栏丢失时的修复功能(有时需要注销后方可生效)。 2.5.4 版,修订设置热键时小键盘某些键值不对的问题。 2.5.3 版,修订启动时检测输入法风格可能不对的 bug。 2.5.2 版,本修订添加输入法时图标显示的一处 bug。高级/从注册表删除输入法时可在输入法显示框用鼠标滚轮切换不同的输入法。 2.5.1 版,修订一些程序上的 bug,添加关于信息。 2.5.0 版,支持命令行参数、支持从脚本调入参数运行。 2.4.5 版,修订安装输入法时导致出错的问题。 2.4.4 版,继续修订 bug。 2.4.3 版,修正 2.4.2 版未完全修正的问题。 2.4.2 版,修正点击应用按键后一些显示状态错位问题。 2.4.1 版,修正热键设置窗口状态显示不正常问题。 2.4.0 版,重新调整界面布局。增加应用按钮。安装 ime 文件时可以自动获取文件信息做为输入法名称。调整程序处理流程。 2.3.1 版,更新:大写关闭键设置后可立即生效;在输入法列表的不同列上双击可分别打开属性和热键设置。压缩包的 internat.exe 做了修改,在其右键上选择属性可打开 imetool。另外修订一些 bug。 2.3.0 版,增加安装删除输入法功能;增加一些项目的浮动提示;增加可安装输入法(语言)的范围;修正一些小的 bug。改变版本号的命名方式便之规范化。 2.22 版,一些内部项目的调整。 2.21 版,修订会误删除某些注册表项目的 bug。 2.2 版,可以将排列第一位的输入法立即设为默认输入法而无须重启。 2.12 版,修正输入法打开关闭等热键无法取消的 bug。 2.11 版,修正某些情况下程序无法运行的 bug。 本压缩包附带的 internat.exe 和 indicdll.dll 为从 Windows 2000 Pro 简体文版提取并修改过,适用于 XP/2003。
网管教程 从入门到精通软件篇 ★一。★详细的xp修复控制台命令和用法!!! 放入xp(2000)的光盘,安装时候选R,修复! Windows XP(包括 Windows 2000)的控制台命令是在系统出现一些意外情况下的一种非常有效的诊断和测试以及恢复系统功能的工具。小编的确一直都想把这方面的命令做个总结,这次辛苦老范给我们整理了这份实用的秘笈。   Bootcfg   bootcfg 命令启动配置和故障恢复(对于大多数计算机,即 boot.ini 文件)。   含有下列参数的 bootcfg 命令仅在使用故障恢复控制台时才可用。可在命令提示符下使用带有不同参数的 bootcfg 命令。   用法:   bootcfg /default  设置默认引导项。   bootcfg /add    向引导列表添加 Windows 安装。   bootcfg /rebuild  重复全部 Windows 安装过程并允许用户选择要添加的内容。   注意:使用 bootcfg /rebuild 之前,应先通过 bootcfg /copy 命令备份 boot.ini 文件。   bootcfg /scan    扫描用于 Windows 安装的所有磁盘并显示结果。   注意:这些结果被静态存储,并用于本次会话。如果在本次会话期间磁盘配置发生变化,为获得更新的扫描,必须先重新启动计算机,然后再次扫描磁盘。   bootcfg /list   列出引导列表已有的条目。   bootcfg /disableredirect 在启动引导程序禁用重定向。   bootcfg /redirect [ PortBaudRrate] |[ useBiosSettings]   在启动引导程序通过指定配置启用重定向。   范例: bootcfg /redirect com1 115200 bootcfg /redirect useBiosSettings   hkdsk   创建并显示磁盘的状态报告。Chkdsk 命令还可列出并纠正磁盘上的错误。   含有下列参数的 chkdsk 命令仅在使用故障恢复控制台时才可用。可在命令提示符下使用带有不同参数的 chkdsk 命令。   vol [drive:] [ chkdsk [drive:] [/p] [/r]   参数  无   如果不带任何参数,chkdsk 将显示当前驱动器的磁盘状态。 drive: 指定要 chkdsk 检查的驱动器。 /p   即使驱动器不在 chkdsk 的检查范围内,也执行彻底检查。该参数不对驱动器做任何更改。 /r   找到坏扇区并恢复可读取的信息。隐含着 /p 参数。   注意 Chkdsk 命令需要 Autochk.exe 文件。如果不能在启动目录(默认为 %systemroot%System32)找到该文件,将试着在 Windows 安装 CD 找到它。如果有多引导系统的计算机,必须保证是在包含 Windows 的驱动器上使用该命令。 Diskpart   创建和删除硬盘驱动器上的分区。diskpart 命令仅在使用故障恢复控制台时才可用。   diskpart [ /add |/delete] [device_name |drive_name |partition_name] [size]   参数 无   如果不带任何参数,diskpart 命令将启动 diskpart 的 Windows 字符模式版本。   /add   创建新的分区。   /delete   删除现有分区。   device_name   要创建或删除分区的设备。设备名称可从 map 命令的输出获得。例如,设备名称:   DeviceHardDisk0   drive_name   以驱动器号表示的待删除分区。仅与 /delete 同时使用。以下是驱动器名称的范例:   D:   partition_name   以分区名称表示的待删除分区。可代替 drive_name 使用。仅与 /delete 同时使用。以下是分区名称的范例:   DeviceHardDisk0Partition1    大小   要创建的分区大小,以兆字节 (MB)表示。仅与 /add 同时使用。   范例   下例将删除分区: diskpart /delete Device HardDisk0 Partition3 diskpart /delete F:   下例将在硬盘上添加一个 20 MB 的分区:   diskpart /add Device HardDisk0 20   Fixboot   向系统分区写入新的分区引导扇区。只有在使用故障恢复控制台时,才能使用 fixboot 命令。   fixboot [drive]   参数  驱动器   将要写入引导扇区的驱动器。它将替代默认的驱动器(即用户登录的系统分区)。例如,驱动器:D:   范例   下列命令范例向驱动器 D: 的系统分区写入新的分区引导扇区:   fixboot d:   注意: 如果不带任何参数,fixboot 命令将向用户登录的系统分区写入新的分区引导扇区。   Fixmbr   修复启动磁盘的 主启动记录。fixmbr 命令仅在使用故障恢复控制台时才可用。   fixmbr [ device_name]   参数   device_name   要写入新的主引导记录的设备(驱动器)。设备名称可从 map 命令的输出获得。例如,设备名称:   DeviceHardDisk0   范例   下列命令示例向指定设备写入一个新的主引导记录:   fixmbr DeviceHardDisk0   注意 如果不指定 device_name,新的主引导记录将被写入引导设备,即装载主系统的驱动器。 如果系统检测到无效或非标准分区表标记,将提示用户是否继续执行该命令。除非您访问驱动器有问题,否则不要继续进行。向系统分区写入新的主引导记录可能破坏分区表并导致分区无法访问。   format   将指定的驱动器格式化为指定的文件系统。含有下列参数的 format 命令仅在使用故障恢复控制台时才可用。可在命令提示符下使用带有不同参数的 format 命令。   format [ drive:] [ /fs:file-system]   参数   drive:   指定要格式化的驱动器。不能从故障恢复控制台格式化软盘。   /q   对驱动器进行快速格式化。不扫描驱动器看是否有坏区域,因此只应对以前格式化过的驱动器使用该参数。   /fs:file-system   指定要使用的文件系统:FAT、FAT32 或 NTFS 。如果未指定文件系统,将使用现有的文件系统格式。   Map   显示驱动器号与物理设备名称的映射。该信息在运行 fixboot 和 fixmbr 命令时非常有用。   map 命令仅在使用故障恢复控制台时才可用。   Map [ arc]   参数   arc   指示 map 命令显示高级 RISC 计算 (ARC)设备名称而不是设备名称。以下是 ARC 设备名称的范例:   multi(0)disk(0)rdisk(0)partition(1)   等价的设备名称是:   DeviceHardDisk0Partition1   范例   下例将物理设备名映射为使用 ARC 设备名称的驱动器号:   map arc   注意 如果不使用 arc 参数,则 map 命令显示设备名称。 map 命令还显示文件系统的类型和每个磁盘的大小(MB)。 二。★★★常见文件扩展名和它们的说明 常见文件扩展名和它们的说明 A ACE:Ace压缩档案格式 ACT:Microsoft office助手文件 AIF,AIFF:音频互交换文件,Silicon Graphic and Macintosh应用程序的声音格式 ANI:Windows系统的动画光标 ARC:LH ARC的压缩档案文件 ARJ:Robert Jung ARJ压缩包文件 ASD:Microsoft Word的自动保存文件;Microsoft高级流媒体格式(microsoft advanced streaming format,ASF)的描述文件;可用NSREX打开 Velvet Studio例子文件 ASF:Microsoft高级流媒体格式文件 ASM:汇编语言源文件,Pro/E装配文件 ASP:动态网页文件;ProComm Plus安装与连接脚本文件;Astound介绍文件 AST:Astound多媒体文件;ClarisWorks“助手”文件 Axx:ARJ压缩文件的分包序号文件,用于将一个大文件压至几个小的压缩包xx取01-99的数字) A3L:Authorware 3.x库文件 A4L:Authorware 4.x库文件 A5L:Authorware 5.x库文件 A3M,A4M:Authorware Macintosh未打包文件 A3W,A4W,A5W:未打包的Authorware Windows文件 B BAK:备份文件 BAS:BASIC源文件 BAT:批处理文件 BIN:二进制文件 BINHex:苹果的一种编码格式 BMP:Windows或OS/2位图文件 BOOK:Adobe FrameMaker Book文件 BOX:Lotus Notes的邮箱文件 BPL:Borlard Delph 4打包库 BSP:Quake图形文件 BUN:CakeWalk 声音捆绑文件(一种MIDI程序) C C0l:台风波形文件 CAB:Microsoft压缩档案文件 CAD:Softdek的Drafix CAD文件 CAM:Casio照相机格式 CAP:压缩音乐文件格式 CAS:逗号分开的ASCⅡ文件 CCB:Visual Basic动态按钮配置文件 CCH:Corel图表文件 CCO:CyberChat数据文件 CCT:Macromedia Director Shockwave投影 CDA:CD音频轨道 CDF:Microsoft频道定义格式文件 CDI:Philip的高密盘交互格式 CDM:Visual dBASE自定义数据模块文件 CDR:CorelDRAW绘图文件;原始音频CD数据文件 CDT:CorelDRAW模板 CDX:CorelDRAW压缩绘图文件;Microsoft Visual FoxPro索引文件 CFG:配置文件 CGI:公共网关接口脚本文件 CGM:计算机图形元文件 CH:OS/2配置文件 CHK:由Windows磁盘碎片整理器或磁盘扫描保存的文件碎片 CHM:编译过的HTML文件 CHP:Ventura Publisher章节文件 CHR:字符集(字体文件) CHT:ChartViem文件;Harvard Graphics矢量文件 CIF:Adaptec CD 创建器 CD映像文件 CIL:Clip Gallery下载包 CIM:SimCity 2000文件 CIN:OS/2改变控制文件用于跟踪INI文件的变化 CLASS:Java类文件 CLP:Windows 剪贴板文件 CLL:Crick Software Clicker文件 CLS:Visual Basic类文件 CMD:Windows NT,OS/2的命令文件;DOS CD/M命令文件;dBASEⅡ程序文件 CPI:Microsoft MS-DOS代码页信息文件 CPL:控制面板扩展名,Corel颜色板 CPP:C++代码文件 CPR:Corel提供说明书文件 CPT:Corel 照片-绘画图像 CST:Macromedia Director Cast文件 CUR:Windows光标文件 D DBF:dBASE文件,一种由Ashton-Tate创建的格式,可以被ACT!、Lipper、FoxPro、Arago、Wordtech、Xbase和类似数据库或与数据库有关产品识别;可用数据文件(能被Excel 97打开);Oracle 8.1.x表格空间文件 DBX:DataBearn图像;Microsoft Visual FoxPro表格文件 DCT:Microsoft Visual FoxPro数据库容器 DCU:Delphi编译单元文件 DCX:Microsoft Visual FoxPro数据库容器;基于PCX的传真图像;宏 DIR:MacromediaDirector文件 DLL:动态链接库 DOC:FrameMaker或FrameBuilder文档;Word Star文档、Word Perfect文档、Microsoft:Word文档;DisplayWrite文档 DOT:Microsoft Word文档模板 DPL:Borland Delph 3压缩库 DRV:驱动程序 DRW:Micrografx Designer/Draw;Pro/E绘画文件 DSF:Micrografx Designer VFX文件 DSG:DOOM保存的文件 DSM:Dynamic Studio音乐模块(MOD)文件 DSP:Microsoft Developer Studio工程文件 DSQ:Corel QUERY(查询)文件 DST:刺绣机图形文件 DSW:Microsoft Developer Studio工作区文件 DTA:World Bank(世界银行)的STARS数据文件 DTD:SGML文档类型定义(DTD)文件 DTED:地面高度数字数据(图形的数据格式)文件 DTF:Symantec Q&A相关的数据库数据文件 DTM:DigiTrakker模块文件 DUN:Microsoft拔号网络导出文件 DV:数字视频文件(MIME) DWG:AutoCAD工程图文件;AutoCAD或Generic CADD老版本的绘图格式 DXR:Macromedia Director受保护(不可编辑)电影文件 E EDA:Ensoniq ASR磁盘映像 EDD:元素定义文档(FrameMaker+SGML文档) EDE:Ensoniq EPS磁盘映像 EDK:Ensoniq KT磁盘映像 EDQ:Ensoniq SQ1/SQ2/Ks32磁盘映像 EDS:Ensoniq SQ80磁盘映像 EDV:Ensoniq VFX-SD磁盘映像 EFA:Ensoniq ASR文件 EFE:Ensoniq EPS文件 EFK:Ensoniq KT文件 EFQ:Ensoniq SQ1/SQ2/Ks32文件 EFS:Ensoniq SQ80文件 EFV:Ensoniq VFX-SD文件 EMD:ABT扩展模块 EMF:Windows增强元文件 EML:Microsoft Outlook Express邮件消息(MIME RTC822)文件 EXE:可执行文件(程序) F FAV:Microsoft Outlook导航条 FAX:传真类型图像 FCD:虚拟CD-ROM FDF:Adobe Acrobat表单文档文件 FLA:Macromedia Flash电影 FND:Microsoft Explorer保存的搜索文件(Find applet) FON:系统字体 FRT:Microsoft FoxPro报表文件 FRX:Visual Basic表单文本;Microsoft FoxPro报表文件 FXP:经Microsoft FoxPro编译的源文件 G GDM:铃声、口哨声和声音板模块格式 GetRight:GetRight未完成的下载文件 GHO:Norton 克隆磁盘映像 GID:Windows 95全局索引文件(包括帮助状态) GIF:CompuServe位图文件 GL:动画格式 GRP:程序管理组 H HEX:Macintosh BinHex2.0文件 HLP:帮助文件;Date CAD Windows帮助文件 HPP:C++程序头文件 HQX:Macintosh BinHex 4.0文件 HT:HyperTerminal(超级终端) HTM,HTML:超文本文档 HTT:Microsoft超文本模板 HTX:扩展HTML模板 I ICO:Windows图标 IDX:Microsoft FoxPro相关数据库索引文件;Symantec Q&A相关数据库索引文件;Microsoft Outlook Express文件 IMG:GEM映像 INF:信息文件 INI:初始化文件;Mwave DSP Synth的“nwsynth.ini” GMS安装;Cravis Ultrasound bank安装 INP:Oracle 3.0版或早期版本的表单源代码 INRS:INRS远程通信声频 INS:InstallShield安装脚本;X-Internet签字文件;Ensoniq EPS字簇设备;Cell/ⅡMAC/PC抽样设备 INT:间代码,当一个源程序经过语法检查后编译产生一个可执行代码 IOF:Findit文档 IQY:Microsoft Internet查询文件 ISO:根据ISD 9660有关CD-ROM文件系统标准列出CD-ROM上的文件 ISP:X-Internet签字文件 IST:数字跟踪设备文件 ISU:InstallShield卸装脚本 IT:脉冲跟踪系统音乐模块(MOD)文件 ITI:脉冲跟踪系统设备 ITS:脉冲跟踪系统抽样,Internet文档位置 IV:Open Inventor使用的文件格式 IVD:超过20/20微观数据维数或变量等级文件 IVP:超过20/20的用户子集配置文件 IVT:超过20/20表或集合数据文件 IVX:超过20/20微数据目录文件 IW:Idlewild屏幕保护程序 IWC:Install Watch文档 J J62:Ricoh照相机格式 JAR:Java档案文件(一种用于applet和相关文件的压缩文件) JAVA:Java源文件 JAR:Java档案文件(一种用于applet和相关文件的压缩文件) JAVA:Java源文件 JFF,JFIF,JIF:JPEG文件 JPE,JPEG,JPG:JPEG图形文件 JS:javascript源文件 JSP:HTML网页,其包含有对一个Java servlet的参考 K KAR:卡拉OK MIDI文件(文本+MIDI) L LAB:Visual dBASE标签文件 LBT,LBX:Microsoft FoxPro标签文件 LDB:Microsoft Access加锁文件 LHA:LZH更换文件后缀 LOG:日志文件 LZH:LH ARC压缩档案 M M1V:MPEG相关文件(MIME"mpeg"类型) M3D:Corel Motion 3D动画文件 M3U:MPEG URL(MIME声音文件) MAM:Microsoft Access宏 MAQ:Microsoft Access查询文件 MAR:Microsoft Access报表文件 MBX:Microsoft Outlook保存email格式;Eudora邮箱 MCW:Microsoft Word的Macintosh文档 MDB:Microsoft Access数据库 MDN:Microsoft Access空数据库模板 MDW:Microsoft Access工作组文件 MID:MIDI音乐 MMM:Microsoft多媒体电影 MOV:QuickTime for Windows电影 MP2:第二层MPEG音频文件 MP3:第三层MPEG音频文件 MPA:MPEG相关文件,MIME“mpeg类型” MPE,MPEG,MPG:MPEG动画文件 MPP:Microsoft工程文件;CAD绘图文件格式 MPR:Microsoft FoxPro菜单(已编译) MSI:Windows 安装器包 MSN:Microsoft 网络文档;Descent Mission文件 O OBD:Microsoft Office活页夹 OBJ:对象文件 OBZ:Microsoft Office活页夹向导 OCX:Microsoft对象链接与嵌入定制控件 ODS:Microsoft Outlook Express邮箱文件 OFT:Microsoft Outlook模板 OPX:OPL扩展DLL(动态链接库) OSS:Microsoft Office查找文件 OST:Microsoft Exchange / Outlook 离线文件 P PAL:压缩文件 PART:Go!Zilla部分下载文件 PAS:Pascal源代码 PCS:PICS动画文件 PDF:Adobe Acrobat 可导出文档格式文件(可用Web浏览器显示);Microsoft系统管理服务器包定义文件;NetWare打印机定义文件 PHP,PHP3:包含有PHP脚本的HTML网页 PHTML:包含有PHP脚本的HTML网页;由Perl分析解释的HTML PM5:Pagemaker 5.0文件 PM6:Pagemaker 6.0文件 PPS:Microsoft Powerpoint幻灯片放映 PPT:Microsoft Powerpoint演示文稿 PRF:Windows系统文件,Macromedia导演设置文件 PSD:Adobe photoshop位图文件 PSM:Protracker Studio模型格式;Epic游戏的源数据文件 PST:Microsoft Outlook个人文件夹文件 PWL:Windows 95口令列表文件 Q QIF:QuickTime相关图像(MIME);Quicken导入文件 QT,QTM:QuickTime电影 QTI,QTIF:QuickTime相关图像 QTP:QuickTime优先文件 QTS:Mac PICT图像文件;QuickTime相关图像 QTX:QuickTime相关图像 R RA:RealAudio声音文件 RAM:RealAudio元文件 RAR:RAR压缩档案(Eugene Roshall格式) REC:录音机宏;RapidComm声音文件 REG:注册表文件 REP:Visual dBASE报表文件 RES:Microsoft Visual C++资源文件 RM:RealAudio视频文件 RMF:Rich Map格式(3D游戏编辑器使用它来保存图) ROM:基于盒式磁带的家庭游戏仿真器文件(来自Atari 2600、Colecovision、Sega、Nintendo等盒式磁带里的ROM完全拷贝,在两个仿真器之间不可互修改) Rxx:多卷档案上的RAR压缩文件(xx=1~99间的一个数字) S SAV:游戏保存文件 SB:原始带符号字节(8位)数据 SBK:Creative Labs的Soundfont 1.0 Bank文件;(Soundb laster)/EMU SonndFont v1.x Bank文件 SBL:Shockwave Flash对象文件 SCF:Windows Explorer命令文件 SCH:Microsoft Schedule+1 SCP:拨号网络脚本文件 SCR:Windows屏幕保护;传真图像;脚本文件 SFX:RAR自解压档案 SHTML:含有服务器端包括(SSI)的HTML文件 SPL:Shockwave Flash对象;DigiTrakker抽样 SQL:Informix SQL查询;通常被数据库产品用于SQL查询(脚本、文本、二进制)的文件扩展名 STM:.shtml的短后缀形式,含有一个服务端包括(SSI)的HTML文件;Scream Tracker V2音乐模块(MOD)文件 STR:屏幕保护文件 SWA:在Macromedia导演文件(MP3文件)的Shockwave声音文件 SWF:Shockwave Flash对象 SYS:系统文件 T T64:Commodore 64仿真器磁带映像文件 THEME:Windows 95桌面主题文件 TIF,TIFF:标签图像文件格式(TIFF)位图 TMP:Windows临时文件 TRM:终端文件 TXT:ASCⅡ文本格式的声音数据 TZ:老的压缩格式文件 V VBA:VBase文件 VBP:Microsoft Visual Basic工程文件 VBW:Microsoft Visual Basic工作区文件 VBX:Microsoft Visual Basic用户定制控件 VQE,VQL:Yamaha Sound-VQ定位器文件 VQF:Yamaha Sound-VQ文件(可能出现标准) VRF:Oracle 7配置文件 VSL:下载列表文件(GetRight) W WAB:Microsoft Outlook文件 WAD:包含有视频、玩家水平和其他信息的DOOM游戏的大文件 WAL:Quake 2正文文件 WAV:Windows波形声形 WBK:Microsoft Word备份文件 WFM:Visual dBASE Windows表单 WFN:在CorelDRAW使用的符号 WIZ:Microsoft Word向导 WRL:虚拟现实模型 WWL:Microsoft Word内插器文件 X XLK:Microsoft Excel备份 XLL:Microsoft Excel内插器文件 XLM:Microsoft Excel宏 XLS:Microsoft Excel工作单 XLT:Microsoft Excel模板 XLV:Microsoft Excel VBA模块 XLW:Microsoft Excel工作簿/工作区 Z ZAP:Windows软件安装配置文件 ZIP:Zip文件 000-999:用于为老版本(或备份)文件编号(比如:被安装程序改变的CONFIG.SYS文件);又可用于为小范围的PC应用程序的多个用户相关数据文件编号 12M:Lotus 1-2-3 97 SmartMaster文件 123:Lotus 1-2-3 97文件 2D:VersaCAD的2维绘画文件 2GR,3GR:在Windows之下的VGA图形驱动程序/配置文件 386:在386或更高级处理器上使用的文件 3D:VersaCAD的3维绘画文件 3DM:3D NURBS建模器,Rhino 3DS:3D Studio(DOS下)格式文件 386:在386或更高级处理器上使用的文件 4GE:Informix 4GL编译后代码 4GL:Informix 4GL源代码 669:Composer 669;UNIX Composer音乐模型文件;669磁道模块 #01 及更高的号:为计算机演示而扫描的一系列电影的图片文件编号方法 ???:OS/2用来跟踪档案文件 @@@:用于安装过程的屏幕文件和用于Microsoft Code view for C这样的应用程序的指导文件 [color=#6b6b6b] [/color] 三。★★★GHOST怎么用? 系统备份 使用Ghost进行系统备份,有整个硬盘(Disk)和分区硬盘(Partition)两种方式。在菜单点击Local(本地)项,在右面弹出的菜单有3个子项,其Disk表示备份整个硬盘(即克隆)、Partition表示备份硬盘的单个分区、Check表示检查硬盘或备份的文件,查看是否可能因分区、硬盘被破坏等造成备份或还原失败。分区备份作为个人用户来保存系统数据,特别是在恢复和复制系统分区时具有实用价值。 选Local→Partition→To Image菜单,弹出硬盘选择窗口,开始分区备份操作。点击该窗口白色的硬盘信息条,选择硬盘,进入窗口,选择要操作的分区(若没有鼠标,可用键盘进行操作:TAB键进行切换,回车键进行确认,方向键进行选择)。 在弹出的窗口选择备份储存的目录路径并输入备份文件名称,注意备份文件的名称带有GHO的后缀名。 接下来,程序会询问是否压缩备份数据,并给出3个选择:No表示不压缩,Fast表示压缩比例小而执行备份速度较快,High就是压缩比例高但执行备份速度相当慢。最后选择Yes按钮即开始进行分区硬盘的备份。Ghost备份的速度相当快,不用久等就可以完成,备份的文件以GHO后缀名储存在设定的目录。 系统克隆 硬盘的克隆就是对整个硬盘的备份和还原。选择菜单Local→Disk→To Disk,在弹出的窗口选择源硬盘(第一个硬盘),然后选择要复制到的目标硬盘(第二个硬盘)。注意,可以设置目标硬盘各个分区的大小,Ghost可以自动对目标硬盘按设定的分区数值进行分区和格式化。选择Yes开始执行。 Ghost能将目标硬盘复制得与源硬盘几乎完全一样,并实现分区、格式化、复制系统和文件一步完成。只是要注意目标硬盘不能太小,必须能将源硬盘的数据内容装下。 Ghost还提供了一项硬盘备份功能,就是将整个硬盘的数据备份成一个文件保存在硬盘上(菜单Local→Disk→To Image),然后就可以随时还原到其他硬盘或源硬盘上,这对安装多个系统很方便。使用方法与分区备份相似。 系统还原 如果硬盘备份的分区数据受到损坏,用一般数据修复方法不能修复,以及系统被破坏后不能启动,都可以用备份的数据进行完全的复原而无须重新安装程序或系统。当然,也可以将备份还原到另一个硬盘上。 要恢复备份的分区,就在界面选择菜单Local→Partition→From Image,在弹出窗口选择还原的备份文件,再选择还原的硬盘和分区,点击Yes按钮即可。 软件特性 存贮介质 Ghost 支持的存储介质超出了我们的想象,它支持对等LPT接口、对等USB接口、对等TCP/IP接口、SCSI磁带机、便携式设备(JAZ、ZIP、MO等)、光盘刻录机(CDR、CDRW)等。而这些特性不需要任何外带的驱动程序和软件,只需一张软盘就可以做到!特别是对光盘刻录机的支持,如今的刻录机和空白光盘都十分便宜,非常适合作备份的用途。 兼容性 Ghost 对现有的操作系统都有良好的支持,包括FAT16、FAT32、NTFS、HPFS、UNIX、NOVELL等文件存储格式。同以前版本不同的是,Ghost 2001加入了对Linux EX2的支持(FIFO文件存储格式),这也就意味着Linux的用户也可以用Ghost来备份系统了。 配套软件支持 Ghost浏览器:在以前的Ghost版本,我们只能对系统进行简单的备份、复制、还原,要恢复单个的文件和文件夹还要使用外带的GhostEXP软件。现在,Symantec公司已经将Ghost浏览器整合在软件。Ghost浏览器采用类似于资源管理器的界面,通过它,我们可以方便迅速地在备份包找出我们想要的文件和文件夹并还原。 Gdisk:Gdisk是一个新加入的实用工具,它彻底取代了FDisk和format: * 快速格式化。 * 隐藏和显示分区的能力。此功能允许一个以上的主DOS分区,并且每个分区上的操作系统有不同的版本。隐藏分区的能力使计算机习惯于引导到选定的可引导分区,忽略其他隐藏分区相同操作系统的安装。 * 全面的分区报告。 * 高度安全的磁盘擦除。提供符合美国国防部标准和更高安全标准的磁盘擦除选项。 和使用交互式菜单的FDisk不同,GDisk是由命令行驱动的。这提供了更快的配置磁盘分区和在批处理文件定义GDisk操作的能力。但与此同时,几十个参数会令普通用户头疼,因此笔者不推荐一般用户使用,Symantec公司也应该推出相应的GUI(图形用户界面)控制台以方便用户使用。具体的参数说明可以用命令行gdisk/?了解。 Live Update Live Update是Symantec公司软件的一个通用升级程序,它能够检查当前系统已安装的Symantec软件,并且通过英特网对软件进行在线升级。 在安装Ghost 2001时,安装程序自动升级了Live Update程序的版本。 Ghost 的进阶篇 附加的命令行参数:(限Ghost的无人备份/恢复/复制) 其实Ghost 2001的功能远远不止它主程序显示的那些,Ghost可以在其启动的命令行添加众多参数以实现更多的功能。命令行参数在使用时颇为复杂,不过我们可以制作批处理文件,从而“一劳永逸”(类似于无人安装Windows 98和Windows 2000)现在让我们来了解一些常用的参数(了解更加详细的参数介绍可查看Ghost的帮助文件)。 1.-rb 本次Ghost操作结束退出时自动重启。这样,在复制系统时就可以放心离开了。 2.-fx 本次Ghost操作结束退出时自动回到DOS提示符。 3.-sure 对所有要求确认的提示或警告一律回答“Yes”。此参数有一定危险性,只建议高级用户使用。 4.-fro 如果源分区发现坏簇,则略过提示强制拷贝。此参数可用于试着挽救硬盘坏道的数据。 [email=5.@filename][color=#0000ff]5.@filename[/color][/email] 在filename指定txt文件。txt文件为Ghost的附加参数,这样做可以不受DOS命令行150个字符的限制。 6.-f32 将源FAT16分区拷贝后转换成FAT32(前提是目标分区不小于2G)。WinNT 4和Windows95、97用户慎用。 7.-bootcd 当直接向光盘备份文件时,此选项可以使光盘变成可引导。此过程需要放入启动盘。 8.-fatlimit 将NT的FAT16分区限制在2G。此参数在复制Windows NT分区,且不想使用64k/簇的FAT16时非常有用。 9.-span 分卷参数。当空间不足时提示复制到另一个分区的另一个备份包。 10.-auto 分卷拷贝时不提示就自动赋予一个文件名继续执行。 11.-crcignore 忽略备份包的CRC ERROR。除非需要抢救备份包的数据,否则不要使用此参数,以防数据错误。 12.-ia 全部映像。Ghost会对硬盘上所有的分区逐个进行备份。 13.-ial 全部映像,类似于-ia参数,对Linux分区逐个进行备份。 14.-id 全部映像。类似于-ia参数,但包含分区的引导信息。 15.-quiet 操作过程禁止状态更新和用户干预。 16.-script 可以执行多个Ghost命令行。命令行存放在指定的文件。 17.-span 启用映像文件的跨卷功能。 18.-split=x 将备份包划分成多个分卷,每个分卷的大小为x兆。这个功能非常实用,用于大型备份包复制到移动式存储设备上,例如将一个1.9G的备份包复制到3张刻录盘上。 19.-z 将磁盘或分区上的内容保存到映像文件时进行压缩。-z或-z1为低压缩率(快速);-z2为高压缩率(速);-z3至-z9压缩率依次增大(速度依次减慢)。 20.-clone 这是实现Ghost无人备份/恢复的核心参数。使用语法为: -clone,MODE=(operation),SRC=(source),DST=(destination),[SZE(size),SZE(size)......] 此参数行较为复杂,且各参数之间不能含有空格。   其operation意为操作类型,值可取:copy:磁盘到磁盘;load:文件到磁盘;dump:磁盘到文件;pcopy:分区到分区;pload:文件到分区;pdump:分区到文件。 Source意为操作源,值可取:驱动器号,从1开始;或者为文件名,需要写绝对路径。 Destination意为目标位置,值可取:驱动器号,从1开始;或者为文件名,需要写绝对路径;@CDx,刻录机,x表示刻录机的驱动器号,从1开始。 下面举例说明 命令行参数:ghostpe.exe -clone,mode=copy,src=1,dst=2 完成操作:将本地磁盘1复制到本地磁盘2。 命令行参数:ghostpe.exe -clone,mode=pcopy,src=1:2,dst=2:1 完成操作:将本地磁盘1上的第二分区复制到本地磁盘2的第一分区。 命令行参数:ghostpe.exe-clone,mode=load,src=g:Λprtdisk.gho,dst=1,sze1=450M,sze2=1599M,sze3=2047M 完成操作:从映像文件装载磁盘1,并将第一个分区的大小调整为450MB,第二个调整为1599MB,第三个调整为2047MB。 命令行参数:ghostpe.exe -clone,mode=pdump,src2:1:4:6,dst=d:prt246.gho 完成操作:创建仅具有选定分区的映像文件。从磁盘2上选择分区1、4、6。 了解了这些参数后,我们就可以轻松地实现Ghost的无人备份/复制/恢复了。冲杯咖啡吧。 一些示例 ghost.exe -clone,mode=copy,src=1,dst=2 -sure 硬盘对拷 ghost.exe -clone,mode=pcopy,src=1:2,dst=2:1 -sure 将一号硬盘的第二个分区复制到二号硬盘的第一个分区 ghost.exe -clone,mode=pdump,src=1:2,dst=g:bac.gho 将一号硬盘的第二个分区做成映像文件放到g分区 ghost.exe -clone,mode=pload,src=g:bac.gh2,dst=1:2 从内部存有两个分区的映像文件,把第二个分区还原到硬盘的第二个分区 ghost.exe -clone,mode=pload,src=g:bac.gho,dst=1:1 -fx -sure -rb 用g盘的bac.gho文件还原c盘。完成后不显示任何信息,直接启动。 ghost.exe -clone,mode=load,src=g:bac.gho,dst=2,SZE1=60P,SZE2=40P 将映像文件还原到第二个硬盘,并将分区大小比例修改成60:40 还原磁盘 首先做一个启动盘,包含Config.sys,Autoexec.bat,Command.com,Io.sys,Ghost.exe文件(可以用windows做启动盘的程序完成)。 Autoexec.bat可以包含以下命令: Ghost.exe -clone,mode=pload,src=d:bac.gho,dst=1:1 -fx -sure -rb 利用在d盘的文件自动还原,结束以后自动跳出ghost并且重新启动。 开机自动做C区的备份,在D区生成备份文件bac.gho。 ghost.exe -clone,mode=pdump,src=1:1,dst=d:bac.gho -fx -sure -rb 还原光盘 包含文件:Config.sys,Autoexec.bat,Mscdex.exe(CDROM执行程序),Oakcdrom.sys(ATAPI CDROM兼容驱动程序),Ghost.exe Config.sys内容为: DEVICE=OAKCDROM.SYS /D:IDECD001 Autoexec.bat内容为: MSCDEX.EXE /D:IDECE001 /L:Z Ghost -clone,mode=load,src=z:bac.gho,dst=1:1 -sure -rb 可以根据下面的具体说明修改实例 -clone 在使用时必须加入参数,它同时也是所有的switch{batch switch}里最实用的一种,下面是clone所定义的参数 -clone, mode={copy|load|dump|pcopy|pload|pdump}, src={drive|file|driveartition}, dst={drive|file|driveartition} mode指定要使用哪种clone所提供的命令 copy 硬盘到硬盘的复制(disk to disk copy) load 文件还原到硬盘(file to disk load) dump 将硬盘做成映像文件(disk to file dump) pcopy 分区到分区的复制(partition to partition copy) pload 文件还原到分区(file to partition load) pdump 分区备份成映像文件(partition to file dump) src指定了ghost运行时使用的源分区的位置模式及其意义: mode命令 对应mode命令src所使用参数 例子 COPY/DUMP 源硬盘号。 以1代表第一号硬盘 LOAD 映像文件名 g:/back98/setup98.gho 或装置名称(drive) PCOPY/PDUMP 源分区号。 1:2代表的是硬盘1的第二个分区 PLOAD 分区映像文件名加上分区号或是驱动器名加上分区号。 g:back98setup98.gh2,代表映像文件里的第二个分区 dst运行Ghost时使用的目标位置模式及其意义: mode命令 对应mode命令dst所使用参数 例子 COPY/DUMP 目的硬盘号。 2代表第二号硬盘 LOAD 硬盘映像文件名。 例g:back98setup98.gho PCOPY/PLOAD 目的分区号。 2:2 代表的是,硬盘2的第二个分区 PDUMP 分区映像文件名加分区号。 g:back98setup98.gh2 SZEn指定所使用目的分区的大小 n=xxxxM 指定第n目的分区的大小为xxxxMB SZE2=800M表示分区2的大小为800MB n=mmP 指定地n的目的分区的大小为整个硬盘的mm个百分比。 其他参数 -fxo 当源物件出现坏块时,强迫复制继续进行 -fx 当ghost完成新系统的工作后不显示"press ctrl-alt-del to reboot"直接回到DOS下 -ia 完全执行扇区到扇区的复制。当由一个映像文件或由另一个硬盘为来源,复制一个分区时,Ghost将首先检查来源分区,再决定是要复制文件和目录结构还是要做映像复制(扇区到扇区)。预设是这种形式。但是有的时候,硬盘里特定的位置可能会放一些隐藏的与系统安全有关的文件。只有用扇区到扇区复制的方法才能正确复制 -pwd and -pwd=x 给映像文件加密 -rb 在还原或复制完成以后,让系统重新启动 -sure 可以和clone合用。Ghost不会显示"proceed with disk clone-destination drive will be overwritten?"提示信息 注意事项 1. 在备份系统时,单个的备份文件最好不要超过2GB。 2.在备份系统前,最好将一些无用的文件删除以减少Ghost文件的体积。通常无用的文件有:Windows的临时文件夹、IE临时文件夹、Windows的内存交换文件。这些文件通常要占去100多兆硬盘空间。 3.在备份系统前,整理目标盘和源盘,以加快备份速度。 4.在备份系统前及恢复系统前,最好检查一下目标盘和源盘,纠正磁盘错误。 5.在恢复系统时,最好先检查一下要恢复的目标盘是否有重要的文件还未转移,千万不要等硬盘信息被覆盖后才后悔莫及啊。 6.在选择压缩率时,建议不要选择最高压缩率,因为最高压缩率非常耗时,而压缩率又没有明显的提高。 7.在新安装了软件和硬件后,最好重新制作映像文件,否则很可能在恢复后出现一些莫名其妙的错误。 ------------------------------------------------------------------------------- Ghostpe.exe菜单选项介绍 Norton Ghost的帮助文件要求Ghostpe.exe在纯DOS下运行,其实它在WINDOWS的MS-DOS运行也是可以的,同样可以对系统进行备份和还原。 开机进入DOS,键入Ghostpe.exe所在的目录路径名,比如:E:Ghostpe.exe 回车,程序即开始运行。首先出现的是Ghost版本介绍窗口,回车后进入主界面。菜单选项有:   (一)“Local”(本地的)   1、Disk(磁盘) (1) To Disk(硬盘到硬盘的复制) (2)To Image(硬盘内容备份为镜像) (3)From Image(从镜像文件恢复至硬盘)  2、Partition(分区)   (1)To Partition(分区到分区的复制)   (2)To Image(分区内容备份为镜像)   (3)From Image(从镜像文件恢复至分区)  3、Check(检查) (1) Image File(镜像文件) (2)Disk(磁盘)   (二)Option(设置项,一般情况下使用默认值即可)   (三)Quit(退出) Norton ghost――克隆硬盘的魅影 我们能用Ghost做什么   ●可以创建硬盘镜像备份文件   ●可以将备份恢复到原硬盘上   ●磁盘备份可以在各种不同的存储系统间进行   ●支持FAT16/32、NTFS、OS/2等多种分区的硬盘备份   ●支持Win9X、NT、UNIX、Novell等系统下的硬盘备份   ●可以将备份复制(克隆)到别的硬盘上   ●在复制(克隆)过程自动分区并格式化目的硬盘 Ghost是最著名的硬盘复制备份工具,因为它可以将一个硬盘的数据完全相同地复制到另一个硬盘,因此大家就将Ghost这个软件称为硬盘“克隆”工具。实际上,Ghost不但有硬盘到硬盘的克隆功能,还附带有硬盘分区、硬盘备份、系统安装、网络安装、升级系统等功能。1998年6月,出品Ghost的Binary公司被著名的Symantec公司购并,因此该软件的后续版本就改称为Norton Ghost,成为Nordon系列工具软件的一员。1999年2月,Symantec公司发布了Norton Ghost的5.1C版本,该版本包含了多个硬盘工具,并且在功能上作了较大的改进,使之成为了一个真正的商业软件。 安装 本公司为使各位客户的机器万无一失,早已经为您的机器装入了GHOST软件,并在您取走机器前为您做好备份,免去您的后顾之忧。此软件不需安装,复制即可使用。 Ghost硬盘克隆 Ghost就是克隆硬盘的程序,该程序在DOS下、Windows9.X下都可执行,所以要进行硬盘的克隆,请先进入到Ghost子目录,运行Ghost.exe程序,需要注意的是,如果是在DOS下运行该程序时,在运行该程序前最好启动DOS的鼠标驱动程序,因为Ghost的操作画面是仿窗口画面,使用鼠标点击来选择会方便一些――虽然也可以用键盘来操作。另外在备份或克隆硬盘前最好清理一下硬盘――删除不用文件、清空回收站、碎片整理等。 1. 分区备份 使用Ghost复制备份,有整个硬盘(Disk)和分区硬盘(Partition)两种备份方式。在菜单点击“Local”(本地)项,在右面弹出的菜单有三个子项,其“Disk”表示整个硬盘备份(也就是克隆),“Partition”表示单个分区硬盘备份以及硬盘检查“Check”。“Check”项的功能是检查硬盘或备份的文件,看是否可能因分区、硬盘被破坏等造成备份或还原失败。而分区备份作为个人用户来保存系统数据,特别是在恢复和复制系统分区具有实用价值。 选“Local/Partition/To Image”菜单,弹出硬盘选择窗口,开始分区备份操作。点击该窗口白色的硬盘信息条,选择硬盘,进入窗口,选择要操作的分区(用鼠标点击)。 然后在弹出的窗口选择备份储存的目录路径并输入备份文件名称,注意备份文件的名称带有GHO的后缀名。 接下来,程序会询问是否压缩备份数据,并给出三个选择。“No”表示不压缩,“Fast”表示小比例压缩而备份执行速度较快,“High”就是高比例压缩但备份执行速度较慢。最后,选择“Yes”按钮即开始进行分区硬盘的备份。Ghost备份的速度相当快,不用久等就可以完成备份,备份的文件以GHO后缀名储存在设定的目录。 2. 分区备份的还原 如果硬盘备份的分区数据受到损坏,用一般磁盘数据修复方法不能修复,以及系统被破坏后不能启动,都可以用备份的数据进行完全的复原,无须重新安装程序或系统。当然,也可以将备份还原到另一个硬盘上。 要恢复备份的分区,就在界面选择菜单“Local/Partition/From Image”,在弹出窗口选择还原的备份文件,再选择还原的硬盘和分区,点击“Yes”按钮即可。 恢复还原时要注意的是,硬盘分区的备份还原是要将原来的分区一成不变地还原出来,包括分区的类型、数据的空间排列等。 3. 硬盘的克隆 硬盘的克隆就是对整个硬盘的备份和还原,选择菜单“Local/Disk/To Disk”,在弹出的窗口选择源硬盘(第一个硬盘),然后选择要复制到的目的硬盘(第二个硬盘)。注意,可以设置目的硬盘各个分区的大小,Ghost可以自动对目的硬盘按设定的分区数值进行分区和格式化。选择“Yes”开始执行。 Ghost能将目的硬盘复制得与源硬盘几乎完全一样,并实现分区、格式化、复制系统和文件一步完成。只是要注意目的硬盘不能太小,必须能将源硬盘的内容装下。   Ghost还提供了一项硬盘备份功能,就是将整个硬盘的数据备份成一个文件保存在硬盘上(菜单“Local/Disk/To Image”),然后就可以随时还原到其它硬盘或原硬盘上。这对要安装多个系统硬盘很方便。使用方法与分区备份相似。要注意的是,备份成的文件不能大于2GB。 [table=96%][tr][td][align=right][color=#6b6b6b]网管联盟.[/color][/align][color=#6b6b6b]四。★★★如何防范恶意网站 知己知彼   如何判断自己是遇到了恶意网站的攻击,症状多种多样:   1. 开机自动登录网站。   2. 启动IE,自动登录网站,无法修复主页设置。   3. IE不断打开窗口。   4. 修改[主页]按钮和[搜索]按钮。   5. 修改右键菜单,甚至屏蔽右键菜单。   6. 更改收藏夹的内容。   7. 安装自动拨号程序。   8. 自动安装木马程序。   9. 自动格式化硬盘或删除某个文件夹的所有文件。   10. 更新文件关联和锁死EXE程序。   11. 锁死注册表。 ……   ★对症下药   了解了症状,就要对症下药了! 一、备份   建议使用“超级兔子魔法设置”的“注册表优化”进行备份,软件能将Classes.dat、System.dat、System.ini、User.dat、Win.ini等文件全部备份下来,上面提到的前五种恶意网站无非就是通过修改这些文件来达到其目的的。 二、弃用IE   大部分的攻击目标都是IE。如果我们用MyIE2(强烈建议使用Ver 0.8.220这一版本)代替IE浏览器,恶意网站就无的放矢了。MyIE2在启动时能够绕开主页直接打开空白页,而且还能保护主页不被修改。如果开机就自动运行IE,要先用超级兔子魔法设置的“自动运行”功能将网址删除,再用MyIE2代替IE。   注意:这两个功能在默认状态下是关闭的,您要在[选项]→[MyIE2选项]→[常规]和“启动时”将其打开。由于MyIE2使用IE的内核,所以请勿删除IE。 三、解救被封死的收藏夹   某些恶意网站会对收藏夹进行修改,大多是通过修改“C: Windows/Favorites”的“Desktop.ini”文件来实现的,所以只要删除这个文件就可以了。如果根本就无法打开“C: WindowsFavorites”文件夹,就到DOS下进行删除(要先用“attrib -r -s -h”后才能将其删除)。另外,“收藏夹”的内容并没有被删除,只是放入了另一个文件夹,名称和“Favorites”差不多(如“Favorites2”等),如果想恢复原来的“收藏夹”,只要剪切一下就可以了。   如果是将系统默认的“收藏夹”路径设置成指定的目录(如“C: WindowsFavorites2”等),只要恢复正常的“注册表”就一切OK了。 四、定期还原正常的注册表   如果遇到安装自动拨号程序的情况,你可要小心啦,小心惊人的国际长话费。对付它,最好是定期还原正常的注册表!这样做虽然不能彻底删除此类恶意程序,但却能让其完全禁止运行,因为这类程序是通过修改注册表来达到随机运行的目的的(只有极少数是在“开始”菜单的“启动”项内做文章),只不过我们无法通过手工删除干净。   这个方法对于自动安装木马程序的情况也同样适用。 五、防止硬盘被格式化   对于自动格式化硬盘的恶意网站,要把“C:WindowsCOMMAND”文件夹的format.com、Fdisk.exe、Deltree.exe这三个程序文件删除或进行改名,因为这些恶意代码是需要这些程序才能够发挥“威力”的,只要让这些恶意代码找不到它们,您的电脑也就安全了! 六、打开“锁死”的程序   对于被锁死的EXE程序,只要事先已将“C:Windows”目录下正常的Classes.dat、System.dat、User.dat、System.ini、Win.ini这五个文件备份下来,在“招”后用正常的文件覆盖一下并重新启动就OK了(注:Windows 95和98可能没有Classes.dat文件,而且Windows 97以下版本的操作系统用此方法无效!甚至会使整个系统瘫痪。)。如果连复制都被禁止了的话,您可用启动盘到DOS下进行覆盖复制。 七、“防”要胜于“治”   通常恶意网站都披着具有“诱惑力”的外衣,设下诱人的陷阱让您“招”。所以一定要意志坚强,抵制住诱惑。只要您能做到“任你花言巧语,我自岿然不动”。那么,什么样的陷阱也奈何不了您。   另外,现在有很多恶意网站开始通过即时通讯软件来传播了,比如QQ、ICQ等,方式虽然多种多样,但通常是在对方网友的话后面又发来了一个网站信息,有的会附有一些带有“诱惑性”的话(如:“看看我的样子”等),有的只是一个有着诱人域名的网址,对于这样的网站,原则也同样――就是不上当! [table=96%][tr][td][align=right][color=#6b6b6b]网管联盟.[/color][/align][color=#6b6b6b]五。★★★win2000/xp忘记密码的方法 1。清除sam文件: winnt系列的系统账户信息是存在%systemroot%system32configsam这个注册表文件里的。如果系统里没有重要的账户,或者账户比较少,用删除%systemroot%system32configsam的方法是比较简单的,不过因为系统会还原为只有administrator(密码为空)和guest二个账户,所以有些程序因为它们所依赖的账户丢失了,如iis、vmware就不能启动了。 原来听说这种方法只能适用于nt workstation系列(2kpro),不能用于server,我在2000professional和2000 advanced server上试验都是成功的。不知道为什么会有上述说法,可能是活动目录ad下不行把。 当然首先你要能够访问系统分区,来把sam文件改名或者删除。如果是fat32、fat分区,使用98启动盘就行了。如果是ntfs分区,可以使用winternal的ntfs for dos、ntfs for 98或者是支持ntfs的启动光盘,再或者挂到其他win2000、linux等机器上,再再或者重新安装一个新的win2000。 2。专用工具: windows管理员密码丢失还有一个解决方法是使用petter nordahl-hagen的the offline nt password editor([url=http://home.eunet.no/~pnordahl/ntpasswd/][color=#0000ff]http://home.eunet.no/~pnordahl/ntpasswd/[/color][/url]),这个工具是离线修改注册表文件sam来设置密码的。需要用他的映像文件制作启动盘来引导,进而访问ntfs分区重新设置密码;虽然作者经常更新他的程序,不过我还是会担心他直接操作sam文件的安全性,可能有时会导致系统出错。 可能还有其他类似工具把,恕我无知。 3。 还有一种想法就是用一个修改密码的小程序来替换系统启动的必要程序,然后系统启动时就会替换密码,随后把被替换的程序在还原就行了。当然首先你还是要能够访问系统分区,来替换随系统启动程序。 替换系统启动的必要程序的一种方法是我写的一个清除administrator密码的小程序(cleanpwd),他所作的就是把administrator密码清空。使用方法如下: (2).用法 1) 用双系统或者启动盘或者挂到别的系统上,如果是ntfs分区其他系统或启动盘要能读写ntfs分区,把windows安装目录下的system32svchost.exe改名svchost.bak.exe备份,把cleanpwd.exe拷贝成svchost.exe。 2) 启动该系统,就把administrator的密码清空了,可以直接登陆。 3) 把svchost.bak.exe 恢复就行了。(如果使用替换的是svchost,最好再启动rpc服务) (3).为什么选用svchost.exe而不是其他程序。 每个windows2000系统都有这几个进程, system(kernel executive and kernel) smss(session manager) csrss(win32 subsystem) winlogon(logon process) services(service control manager) lsass(local security authentication server ) 如果任何一个被杀掉或者出错,系统将重新启动。不过在lsass启动之前你不能修改密码,所以不能选用这几个程序。 另外系统一般还有以下一些程序: svchost.exe(remote procedure call (rpc) 还有其他一些服务) wbemwinmgmt.exe(windows management umentation) mstask.exe(task scheduler) regsvc.exe(remote registry service) 可能还有其他服务程序,你可能禁止了除rpc之外的其他服务,但不会禁止rpc,否则系统工作就不正常了。所以我选择了svchost,如果你知道其他服务会自动启动,你也可以选择它。 当然如果系统安装了杀毒软件的话,你替换杀毒软件也可以,因为一般杀毒软件都会在系统启动启动杀毒防火墙来杀毒的。 (4).其他 有这个想法是几个月之前了,不过一直没有写这个程序 程序运行会在c:cleanpwd.txt记一个简单的日志,我也附了源码,你可以任意修改它以满足自己的要求,比如添加一个用户而不是修改管理员的密码(或者你把管理员改名了)。 4。我还在一个网站上看到这样一个方法: 就是把%systemroot%system32logon.scr替换为cmd.exe或者explorer.exe,然后在系统登陆处等待,过一会,系统就会去运行logon.scr这个屏保,因为你替换了这个屏保文件,所以实际上运行的是cmd.exe或者explorer.exe,并且是localsystem权限,于是你可以随便了,最简单的就是在cmd.exe里运行net user administrator "",成功后管理员密码也被清空了,关闭cmd或者explorer就可以用空口令登陆了。 其实这种方法和上边的那种思路是一致的。 ================= code begin ======================= #include #include #include #include #include #pragma comment(lib, "netapi32.lib") #define lof_file "c:\cleanpwd.txt" dword setuserpwd(char *user, char *pass); void banner(file *fp) { if(null == fp)return; fprintf(fp, "clean administrator??s password tool 1a. for lost password.n"); fprintf(fp, " by [email=bingle@email.com.cnn][color=#0000ff]bingle@email.com.cnn[/color][/email]"); fprintf(fp, "website: [url=http://www.binglesite.net/n][color=#0000ff]www.binglesite.netn[/color][/url]"); } int main(int argc, char *argv[]) { banner(stderr); file *fp = fopen(lof_file, "a"); if(fp) { fprintf(stderr, "log in file %sn", lof_file); banner(fp); } if(!fp) fp = stderr; char buff[256]; fprintf(fp, "%s: clean administrator??s password ", _strtime(buff)); dword n = setuserpwd("administrator", ""); if(nerr_success == n) fprintf(fp, "ok.n"); else fprintf(fp, "failed, error:%dn", n); fclose(fp); return -1; } dword setuserpwd(char *user, char *pass) { wchar_t wuser[pwlen], wpass[pwlen]; user_info_1003 ui; mbstowcs(wuser, user, strlen(user)+1); mbstowcs(wpass, pass, strlen(pass)+1); ui.usri1003_password = wpass; return netusersetinfo(null, wuser, 1003, (lpbyte)&ui, null); 六。★★★Windows XP 自带小工具 假设你使用的是WinXP,一般来讲你会把日常所用的工具软件都放到一个名为“Tools”的文件夹。好的,先容我猜猜,里面都有些什么东东――加密的、图片浏览处理的、压缩/解压缩的、音视频播放的、刻录的、系统优化的……怎么样,猜得八九不离十吧?相信这些Tools平日里一定带来了不少方便,不过如果你仅满足于使用这些“Tools”的一般用途,那笔者就要为WinXP道一声“可惜”――它辛辛苦苦为你准备的百宝箱却被不经意地抛在了一旁。相比常用的工具软件,WinXP所提供工具的特点是整合在系统,因此使用简单、快捷而方便,那么就随笔者一起掀开这个箱子,看看里面到底都有些什么宝贝吧。 一、文件保密 WinXP有着很好的多用户功能,允许不同用户拥有个性的系统设置。但在这样一个共享环境下,个人的隐私问题又凸现出来,由此涉及到了多用户使用下的文件保密问题。对于这个问题,你可能会考虑诸如“文件保密专家”之类的文件加密软件,其实在WinXP,大可不必为文件的保密问题操心,因为它为我们提供了多种文件保密的方法。不过在为文件进行保密操作之前,首先要确定待保密的文件是放在NTFS分区上的,这是WinXP里进行文件保密的基础,以下的操作都是在NTFS分区上进行的。 1.个人文件夹的保密 在WinXP里最简单的文件保密方法是对“个人文件夹”的加密。所谓“个人文件夹”是指在“系统盘ocuments and Settings”下,以当前用户名命名的文件夹;其包含了如“我的文档”、“开始菜单”一类的个人用户文件。对其进行加密,只需直接在其文件夹或其子文件夹的“属性”对话框的“共享”页上,勾选“将这个文件夹设为专用”(若为管理员用户则此处默认为勾选),那么其他用户(包括管理员)都无法访问此文件夹。此方法只适合于对“个人文件夹”的保密,对于系统的其他文件和文件夹则无能为力了。需要注意的是,设为“专用”的个人文件夹将不能被共享,同样,已共享的个人文件夹在取消共享之前也不能被设为“专用”。实际应用,可将要保密的文件保存到设为专用的“我的文档”里,即可实现文件保密的目的。 2.利用用户权限保密文件 对于没有放在“个人文件夹”的文件,我们可以有第2种保密方法:控制用户权限――通过对不同用户或者组,赋予对文件(文件夹)不同的操作权限,从而达到文件保密的目的。此操作进行之前先要确定WinXP文件权限的设置功能是否开启:在文件浏览窗口选择菜单“工具”→“文件夹选项”,选择“查看”页,确定“使用简单文件共享”没有被勾选。 之后,我们就能对系统的文件(文件夹)访问权限进行具体设置:打开文件夹的属性对话框,可以看到多出了一个“安全”页。在其可以一目了然对于此文件夹可操作的用户及其不同的权限分派。各类权限有“允许”和“拒绝”两项可选,先在“组或用户名称”一栏里选择要保密的对象(如Guest用户),再将其“读取”的权限设为“拒绝”,如此便实现了此文件夹的保密。如果“组或用户名称”里没对象用户,选择下面的“添加”,输入(或搜索出)其用户名即可。 有可能你看到的用户权限设置是不可选的,那是因为此子文件夹从其父文件夹(上级文件夹)继承了权限,因此不可改。要使其权限可改,应删除其和父文件夹的继承关系:选择“安全”页的“高级”选项,打开“高级安全设置”对话框,在“权限”页里取消对“从父项继承那些可以应用到子对象的权限项目,包括那些在此明确定义的项目”的勾选,在弹出的对话框选择“删除”即可。 3.加密文件系统(EFS)对文件的保密 这是WinXP我们提供的一种高级文件加密方法――加密文件系统(EFS)。EFS是一种数字加密方式:Windows首先以一把“公钥”(WinXP自己的加密算法)对文件进行加密,再配给用户一把用于解密的“私钥”(包含在个人数字证书)。加密过的文件,只有通过“公钥”与“私钥”共同认证后产生的“金钥”才能被解密。 打开要加密的文件或文件夹的“属性”对话框,选择其“常规”页的“高级”,勾选“高级属性”里的“加密内容以便保护数据”,确定后,加密的文件/文件夹名会以绿色表示,这样,即使是管理员账户,也不能读取文件的内容了。 这就是WinXP的高级文件保密,就这么简单。之后的问题是,如果加密文件拷贝到其他机器上,如何实现其解密?这就涉及到了个人数字证书的使用。 4.个人数字证书的导出与导入 在“运行”栏里输入“certmgr.msc”,打开“证书”,依次展开“个人”→“证书”,右键单击要导出的证书,在“所有任务”选择“导出”,在向导选择“是,导出私钥”,再按需要设置好私钥保护密码和导出路径后,即导出了个人数字证书。 加密文件被拷贝到其他机器上后,要对其进行解密,需要先在此机器上新建一个与原加密用户相同用户名及密码的账户,再将之前导出的证书拷贝到此机器上双击运行,即可实现数字证书的导入。 注意:WinXP为了防止私钥被随意导出,凡导入的证书在默认情况下均不能被再次导出。如果有再次导出的需要,需要在导入数字证书过程,输入私钥保护密码一步时,勾选“标志此密钥为可导出的……”,这样才能使导入的证书能被再次导出。 二、资源管理器的增强 1.图片浏览 WinXP之前这一功能非ACDSee莫属,然而WinXP却带来了更为易用的图片浏览功能。众所周知,只要选择“缩略图”方式显示图片,我们就可以图片的缩略图预览其效果。选择“幻灯片”方式,则可以更清楚地看到图片的预览效果。WinXP还为我们提供了第3种方式浏览图片:“幻灯片播放”,只需选择资源管理器左侧“图片任务”的“作为幻灯片查看”,即可浏览图片,在屏幕的右上角依次有播放、暂停、上一幅、下一幅及关闭的功能按钮。需要提醒的是,如果选择了一张或者多张图片后再选择“作为幻灯片查看”,则只会放映所选择的图片。 还有一点技巧:如果嫌“缩略图”方式预览的图片太小,我们可以通过修改注册表的方式改变其大小。在“运行”栏里输入“regedit”,打开注册表编辑器,依次展开HKEY_CUR RENT_USER Software MicrosoftWindows CurrentVersion Explorer,在其下新建一名为ThumbnailSize的DWORD值,将值改为十进制的200,可以看到预览图变大了吧。另外,新建名为ThumbnailQuality的DWORD值,通过设置其值改变缩略图的图片质量,如设为80,则以80%的质量显示缩略图。通过减小其值,可以缩短系统显示缩略图的时间。 注意:如果当前目录下有图片却没有出现“图片任务”或找不到“幻灯片”方式,可参见后文设置文件夹模板。 2.数码图片的处理 使用数码相机等设备,WinXP也准备了“扫描仪与照相机向导”。当数码相机连接到计算机后,在系统弹出的任务选择对话框里选择“将图片复制到计算机上的一个文件夹”,WinXP会自动读取相机里的图片,接下来在“扫描仪和照相机向导”选择要获取的图片,还有存放的路径,完成后WinXP就会把所选择的照片存放到指定目录了。值得一提的是,在选择存放路径时,WinXP已默认提供了一系列有助于分类的存放方式,方便我们对数码图片的管理。 双击一个图片文件,如果没有安装其他图片浏览软件,WinXP会首先调用“Windows图片和传真查看器”来打开文件(若已安装其他图片软件,也可右击图片文件并在“打开方式”选择此工具)。可用其对图片进行简单加工,如缩放查看、旋转、打印、复制到等。试过用“Windows图片和传真查看器”打开TIFF文件吗?可以看到工具栏上又多出不少东西,通过这些工具可以给图片添加“注释”。至于用处,想想看,可以在数码相片上写上照相的时间地点,场景描述等,多年后回味,别有一番滋味啊。这一注释功能并不直接修改图片,在你不需要时可随时删去所加的注释,而保留图片的原样。 3.个性的文件夹 如果你也崇尚个性张扬,相信总会想方设法把自己的WinXP弄得与众不同。这里就来看一下,如何用WinXP百宝箱里的东东,把系统里大大小小的文件夹们,统统换掉那黄色的夹子外套。WinXP提供了很方便的文件夹自定义功能,在文件夹“属性”对话框的“自定义”页上,即可看见很多定义的内容。 文件夹模板:可供选择的有相册、图片、音乐和视频等,其区别在于不同的模板对应不同的默认文件查看方式(幻灯片、平铺、图标等)以及文件夹任务。使用了以上两种图片类文件夹模板,文件夹左侧的“常见任务栏”里,都会有“图片任务”供选择,而使用了音乐类或视频类文件夹模板,则分别对应的是“音乐任务”与“视频任务”。 文件夹图片:当文件夹以缩略图方式查看时,WinXP会把该文件夹里最近修改的4个图片作为默认的文件夹图片显示,但为了提醒自己,可以让它变得更醒目。只需单击“选择图片”就可选择某个图片作为此文件夹的图片。 文件夹图标:如果不以缩略图方式查看,文件夹将会以其“标准图标”表示――一个黄色的夹子,如果觉得这千篇一律的黄夹子没有个性,我们也可以换。单击“更改图标”,可以看到WinXP为我们在Shell32.dll里提供的许多图标,我们当然可以随便用上一用。 三、压缩与解压缩 目前我们使用的压缩解压缩软件想必都是WinZip或WinRAR等,它们各有自己的特点与用途,但实际应用可以说95%以上的工作都是简单的压缩与解压缩,在这一点上,WinXP自带的压缩工具就足以满足需要了。 1.通过压缩磁盘对文件进行压缩 这种方法被WinXP冠名为“NTFS文件压缩”,只能在硬盘的NTFS分区上使用。打开要压缩文件/文件夹的“属性”对话框,选择“常规”页的“高级”,勾选“高级属性”里的“压缩内容以便节省磁盘空间”,确定后,此文件/文件夹名会以蓝色显示。以这种方法压缩文件,实质上是对磁盘进行压缩,会带来了系统性能的降低(打开压缩文件时,系统将其解压缩,关闭文件时又重新压缩),因此建议仅用于对备份文件处理。 2.Zip文件的压缩 最先在Windows提供对Zip文件的支持始源于WinME,WinXP继承了这一特性,但基本上没有太多发展。这一功能被称为“Compressed(zipped) Folders”,只能进行最基本的压缩/解压缩工作,说好听点,就是“返璞归真”了。 实现方法一:在鼠标右键菜单上选择“新建”→“压缩(zipped)文件夹”。 实现方法二:选欲压缩的文件(一个或多个),在其鼠标右键菜单上选择“发送到”→“压缩(zipped)文件夹”,即生成一个.zip文件。最后生成的文件名同鼠标单击的文件一致。 你还可以对.zip文件设置密码。打开一个.zip文件(确定是用WinXP自带功能打开,而不是用其他软件),选择菜单项的“文件”→“添加密码”,输入要设置的密码。之后,查看和解压缩此文件就需要密码了,可以满足一般的保密性要求。需要说明的是WinXP不能进行分卷压缩、添加注释等“高级任务”。 3.Zip文件的解压缩 压缩后的ZIP包可以像普通文件夹一样操作。如果要将ZIP包解压缩到指定位置,只需在其右键菜单上选择“全部提取...”利用“提取向导”,选择解压缩路径,输入密码(如果有的话),即可进行解压缩。 4.自解压包的制作 如果还有制作自解压包的需要,也不用去找什么专门工具,WinXP里仍然为你准备了――尽管微软并没有承认其存在。在“运行”对话框里输入“iexpress”,回车后打开“IExpress Wizard”。在向导里依次选择“Create new Self Extraction Directive file”→“Extract files only”(压缩目的:Package purpose)→输入解压缩时弹出对话框的标题(Package title)→输入对话框提示语(Confirmation prompt)→选择解压时是否显示许可协议(License agreement)→添加欲压缩的文件(Packaged files)→选择解压

24,860

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧