发新话题
打印

电脑应用文章(小长城)--系统相关

回复:电脑应用文章(小长城)--系统相关

【windows xp 服务详解】 :
windows xp里有许多默认启动的服务是我们平时用不到的,但它的启动却又占了不少系统资源,这也让电脑速度减慢。这些无用的服务我们应该停掉,但很多用户都不知道应该停哪些服务,乱来会导致系统很多问题的出现。在这里我请来了高手为大家讲解这些服务的作用,并给出了相应的建议。好!下面就正式开始。
  有人不知道在哪看windows xp的服务吧,在屏幕左下角的“开始”--“运行”--“输入msconfig”,这样就打开了一个新窗口,点击“服务”,你就可以看到了。
alerter
微软: 通知选取的使用者及计算机系统管理警示。如果停止这个服务,使用系统管理警示的程序将不会收到通知。如果停用这个服务,所有依存于它的服务将无法启动。
补充: 一般家用计算机根本不需要传送或接收计算机系统管理来的警示(administrative alerts),除非你的计算机用在局域网络上
依存: workstation
建议: 已停用
application layer gateway service
微软: 提供因特网联机共享和因特网联机防火墙的第三方通讯协议插件的支持
补充: 如果你不使用因特网联机共享 (ics) 提供多台计算机的因特网存取和因特网联机防火墙 (icf) 软件你可以关掉
依存: internt connection firewall (icf) / internet connection sharing (ics)
建议: 已停用
application management (应用程序管理)
微软: 提供指派、发行、以及移除的软件安装服务。
补充: 如上说的软件安装变更的服务
建议: 手动
automatic updates
微软: 启用重要 windows 更新的下载及安装。如果停用此服务,可以手动的从 windows update 网站上更新操作系统。
补充: 允许 windows 于背景自动联机之下,到 microsoft servers 自动检查和下载更新修补程序
建议: 已停用

background intelligent transfer service
微软: 使用闲置的网络频宽来传输数据。
补充: 经由 via http1.1 在背景传输资料的?#124;西,例如 windows update 就是以此为工作之一
依存: remote procedure call (rpc) 和 workstation
建议: 已停用
clipbook (剪贴簿)
微软: 启用剪贴簿检视器以储存信息并与远程计算机共享。如果这个服务被停止,剪贴簿检视器将无法与远程计算机共享信息。如果这个服务被停用,任何明确依存于它的服务将无法启动。
补充: 把剪贴簿内的信息和其它台计算机分享,一般家用计算机根本用不到
依存: network dde
建议: 已停用
com+ event system (com+ 事件系统)
微软: 支持「系统事件通知服务 (sens)」,它可让事件自动分散到订阅的 com 组件。如果服务被停止,sens 会关闭,并无法提供登入及注销通知。如果此服务被停用,任何明显依存它的服务都无法启动。
补充: 有些程序可能用到 com+ 组件,像 bootvis 的 optimize system 应用,如事件检视器内显示的 dcom 没有启用
依存: remote procedure call (rpc) 和 system event notification
建议: 手动
com+ system application
微软: 管理 com+ 组件的设定及追踪。如果停止此服务,大部分的 com+ 组件将无法适当?#092;作。如果此服务被停用,任何明确依存它的服务将无法启动。
补充: 如果 com+ event system 是一台车,那么 com+ system application 就是司机,如事件检视器内显示的 dcom 没有启用
依存: remote procedure call (rpc)
建议: 手动
computer browser (计算机浏览器)
微软: 维护网络上更新的计算机清单,并将这个清单提供给做为浏览器的计算机。如果停止这个服务,这个清单将不会被更新或维护。如果停用这个服务,所有依存于它的服务将无法启动。
补充: 一般家庭用计算机不需要,除非你的计算机应用在区网之上,不过在大型的区网上有必要开这个拖慢速度吗?
依存: server 和 workstation
建议: 已停用
cryptographic services
微软: 提供三个管理服务: 确认 windows 档案签章的[类别目录数据库服务]; 从这个计算机新增及移除受信任根凭证授权凭证的[受保护的根目录服务]; 以及协助注册这个计算机以取得凭证的[金钥服务]。如果这个服务被停止,这些管理服务将无法正确工作。如果这个服务被停用,任何明确依存于它的服务将无法启动。
补充: 简单的说就是 windows hardware quality lab (whql)微软的一种认证,如果你有使用 automatic updates ,那你可能需要这个
依存: remote procedure call (rpc)
建议: 手动
dhcp client (dhcp 客户端)
微软: 透过登录及更新 ip 地址和 dns 名称来管理网络设定。
补充: 使用 dsl/cable 、ics 和 ipsec 的人都需要这个来指定动态 ip
依存: afd 网络支持环境、netbt、symtdi、tcp/ip protocol driver 和 netbios over tcp/ip
建议: 手动
distributed link tracking client (分布式连结追踪客户端)
微软: 维护计算机中或网络网域不同计算机中 ntfs 档案间的连结。
补充: 维护区网内不同计算机之间的档案连结
依存: remote procedure call (rpc)
建议: 已停用
distributed transaction coordinator (分布式交易协调器)
微软: 协调跨越多个资源管理员的交易,比如数据库、讯息队列及档案系统。如果此服务被停止,这些交易将不会发生。如果服务被停用,任何明显依存它的服务将无法启动。
补充: 如上所说的,一般家庭用计算机用不太到,除非你启用的 message queuing
依存: remote procedure call (rpc) 和 security accounts manager
建议: 已停用
dns client (dns 客户端)
微软: 解析并快取这台计算机的网域名称系统 (dns) 名称。如果停止这个服务,这台计算机将无法解析 dns 名称并寻找 active directory 网域控制站的位置。如果停用这个服务,所有依存于它的服务将无法启动。
补充: 如上所说的,另外 ipsec 需要用到
依存: tcp/ip protocol driver
建议: 手动
error reporting service
微软: 允许对执行于非标准环境中的服务和应用程序的错误报告。
补充: 微软的应用程序错误报告
依存: remote procedure call (rpc)
建议: 已停用
event log (事件记录文件)
微软: 启用 windows 为主的程序和组件所发出的事件讯息可以在事件检视器中检视。这个服务不能被停止。
补充: 允许事件讯息显示在事件检视器之上
依存: windows management instrumentation
建议: 自动
fast user switching compatibility
微软: 在多使用者环境下提供应用程序管理。
补充: 另外像是注销画面中的切换使用者功能
依存: terminal services
建议: 手动
help and support
微软: 让说明及支持中心能够在这台计算机上执行。如果这个服务停止,将无法使用说明及支持中心。如果这个服务被停用,它的所有依存服务将无法启动。
补充: 如果不使用就关了吧
依存: remote procedure call (rpc)
建议: 已停用
human interface device access
微软: 启用对人性化接口装置 (hid) 的通用输入存取,hid 装置启动并维护对这个键盘、远程控制、以及其它多媒体装置上事先定义的快捷纽的使用。如果这个服务被停止,这个服务控制的快捷纽将不再起作用。如果这个服务被停用,任何明确依存于它的服务将无法启动。
补充: 如上所提到的
依存: remote procedure call (rpc)
建议: 已停用
imapi cd-burning com service
微软: 使用 image mastering applications programming interface (imapi) 来管理光盘录制。如果这个服务被停止,这个计算机将无法录制光盘。如果这个服务被停用,任何明确地依赖它的服务将无法启动。
补充: xp 整合的 cd-r 和 cd-rw 光驱上拖放的烧录功能,可惜比不上烧录软件,关掉还可以加快 nero 的开启速度
建议: 已停用
indexing service (索引服务)
微软: 本机和远程计算机的索引内容和档案属性; 透过弹性的查询语言提供快速档案存取。
补充: 简单的说可以让你加快搜查速度,不过我想应该很少人和远程计算机作搜寻吧
依存: remote procedure call (rpc)
建议: 已停用
internet connection firewall (icf) / internet connection sharing (ics)
微软: 为您的家用网络或小型办公室网络提供网络地址转译、寻址及名称解析服务和/或防止干扰的服务。
补充: 如果你不使用因特网联机共享(ics)或是 xp 内含的因特网联机防火墙(icf)你可以关掉
依存: application layer gateway service、network connections、network location awareness(nla)、remote access connection manager
建议: 已停用
ipsec services (ip 安全性服务)
微软: 管理 ip 安全性原则并启动 isakmp/oakley (ike) 及 ip 安全性驱动程序。
补充: 协助保护经由网络传送的数据。ipsec 为一重要环节,为虚拟私人网络 (vpn) 中提供安全性,而 vpn 允许组织经由因特网安全地传输数据。在某些网域上也许需要,但是一般使用者大部分是不太需要的
依存: ipsec driver、remote procedure call (rpc)、tcp/ip protocol driver
建议: 手动
logical disk manager (逻辑磁盘管理员)
微软: 侦测及监视新硬盘磁盘,以及传送磁盘区信息到逻辑磁盘管理系统管理服务以供设定。如果这个服务被停止,动态磁盘状态和设定信息可能会过时。如果这个服务被停用,任何明确依存于它的服务将无法启动。
补充: 磁盘管理员用来动态管理磁盘,如显示磁盘可用空间等和使用 microsoft management console(mmc)主控台的功能
依存: plug and play、remote procedure call (rpc)、logical disk manager administrative service
建议: 自动
logical disk manager administrative service (逻辑磁盘管理员系统管理服务)
微软: 设定硬盘磁盘及磁盘区,服务只执行设定程序然后就停止。
补充: 使用 microsoft management console(mmc)主控台的功能时才用到
依存: plug and play、remote procedure call (rpc)、logical disk manager
建议: 手动
messenger (信差)
微软: 在客户端及服务器之间传输网络传送及[alerter]服务讯息。这个服务与 windows messenger 无关。如果停止这个服务,alerter 讯息将不会被传输。如果停用这个服务,所有依存于它的服务将无法启动。
补充: 允许网络之间互相传送提示讯息的功能,如 net send 功能,如不想被骚扰话可关了
依存: netbios interface、plug and play、remote procedure call (rpc)、workstation
建议: 已停用
ms software shadow copy provider
微软: 管理磁盘区阴影复制服务所取得的以软件为主的磁盘区阴影复制。如果停止这个服务,就无法管理以软件为主的磁盘区阴影复制。如果停用这个服务,任何明确依存于它的服务将无法启动。
补充: 如上所说的,用来备份的?#124;西,如 ms backup 程序就需要这个服务
依存: remote procedure call (rpc)
建议: 已停用
net logon
微软: 支持网域上计算机的账户登入事件的 pass-through 验证。
补充: 一般家用计算机不太可能去用到登入网域审查这个服务
依存: workstation
建议: 已停用
netmeeting remote desktop sharing (netmeeting 远程桌面共享)
微软: 让经过授权的使用者可以使用 netmeeting 透过公司近端内部网络,由远程访问这部计算机。如果这项服务停止的话,远程桌面共享功能将无法使用。如果服务停用的话,任何依赖它的服务将无法启动。
补充: 如上说的,让使用者可以将计算机的控制权分享予网络上或因特网上的其它使用者,如果你重视安全性不想多开后门,就关了吧
建议: 已停用
network connections (网络联机)
微软: 管理在网络和拨号联机数据夹中的对象,您可以在此数据夹中检视局域网络和远程联机。
补充: 控制你的网络联机
依存: remote procedure call (rpc)、internet connection firewall (icf) / internet connection sharing (ics)
建议: 手动
network dde (网络 dde)
微软: 为动态数据交换 (dde) 对在相同或不同计算机上执行的程序提供网络传输和安全性。如果这个服务被停止,dde 传输和安全性将无法使用。如果这个服务被停用,任何明确依存于它的服务将无法启动。
补充: 一般人好像用不到
依存: network dde dsdm、clipbook
建议: 已停用
network dde dsdm (网络 dde dsdm)
微软: 讯息动态数据交换 (dde) 网络共享。如果这个服务被停止,dde 网络共享将无法使用。如果这个服务被停用,任何明确依存于它的服务将无法启动。
补充: 一般人好像用不到
依存: network dde
建议: 已停用
network location awareness (nla)
微软: 收集并存放网络设定和位置信息,并且在这个信息变更时通知应用程序。
补充: 如果不使用 icf 和 ics 可以关了它
依存: afd网络支持环境、tcp/ip procotol driver、internet connection firewall (icf) / internet connection sharing (ics)
建议: 已停用
nt lm security support provider (ntlm 安全性支持提供者)
微软: 为没有使用命名管道传输的远程过程调用 (rpc) 程序提供安全性。
补充: 如果不使用 message queuing 或是 telnet server 那就关了它
依存: telnet
建议: 已停用
performance logs and alerts (效能记录文件及警示)
微软: 基于事先设定的排程参数,从本机或远程计算机收集效能数据,然后将数据写入记录或?#124;发警讯。如果这个服务被停止,将不会收集效能信息。如果这个服务被停用,任何明确依存于它的服务将无法启动。
补充: 没什么价值的服务
建议: 已停用
plug and play
微软: 启用计算机以使用者没有或很少的输入来识别及适应硬件变更,停止或停用这个服务将导致系统不稳定。
补充: 顾名思义就是 pnp 环境
依存: logical disk manager、logical disk manager administrative service、messenger、smart card、telephony、windows audio
建议: 自动
portable media serial number
微软: retrieves the serial number of any portable music player connected to your computer
补充: 透过联机计算机重新取得任何音乐拨放序号?没什么价值的服务
建议: 已停用
2004-3-17 07:31 pm                 
ayong9258
版主


积分 2030
发贴 1305
注册 2004-3-12
来自 浙江
状态 在线  print spooler (打印多任务缓冲处理器)
微软: 将档案加载内存中以待稍后打印。
补充: 如果没有打印机,可以关了
依存: remote procedure call (rpc)
建议: 已停用
protected storage (受保护的存放装置)
微软: 提供受保护的存放区,来储存私密金钥这类敏感数据,防止未授权的服务、处理、或使用者进行存取。
补充: 用来储存你计算机上密码的服务,像 outlook、拨号程序、其它应用程序、主从架构等等
依存: remote procedure call (rpc)
建议: 自动
qos rsvp (qos 许可控制,rsvp)
微软: 提供网络讯号及区域流量控制安装功能给可识别 qos 的程序和控制小程序项。
补充: 用来保留 20% 频宽的服务,如果你的网络卡不支持 802.1p 或在你计算机的网域上没有 acs server ,那么不用多说,关了它
依存: afd网络支持环境、tcp/ip procotol driver、remote procedure call (rpc)
建议: 已停用
remote access auto connection manager (远程访问自动联机管理员)
微软: 当程序参照到远程 dns 或 netbios 名称或地址时,建立远程网络的联机。
补充: 有些 dsl/cable 提供者,可能需要用此来处理登入程序
依存: remote access connection manager、telephony
建议: 手动
remote access connection manager (远程访问联机管理员)
微软: 建立网络联机。
补充: 网络联机用
依存: telephony、internet connection firewall (icf) / internet connection sharing (ics)、remote access auto connection manager
建议: 手动
remote desktop help session manager
微软: 管理并控制远程协助。如果此服务停止的话,远程协助将无法使用。停止此服务之前,请先参阅内容对话框中的[依存性]标签。
补充: 如上说的管理和控制远程协助,如果不使用可以关了
依存: remote procedure call (rpc)
建议: disable
remote procedure call (rpc) (远程过程调用,rpc)
微软: 提供结束点对应程序以及其它 rpc 服务。
补充: 一些装置都依存它,别去动它
依存: 太多了,自己去看看
建议: 自动
remote procedure call (rpc) locator (远程过程调用定位程序)
微软: 管理 rpc 名称服务数据库。
补充: 如上说的,一般计算机上很少用到,可以尝试关了
依存: workstation
建议: disable
remote registry (远程登录服务)
微软: 启用远程使用者修改这个计算机上的登录设定。如果这个服务被停止,登录只能由这个计算机上的使用者修改。如果这个服务被停用,任何明确依存于它的服务将无法启动。
补充: 基于安全性的理由,如果没有特别的需求,建议最好关了它,除非你需要远程协助修改你的登录设定
依存: remote procedure call (rpc)
建议: 已停用
removable storage (卸除式存放装置)
微软: none
补充: 除非你有 zip 磁盘驱动器或是 usb 之类可携式的硬件或是 tape 备份装置,不然可以尝试关了
依存: remote procedure call (rpc)
建议: disable
routing and remote access (路由和远程访问)
微软: 提供连到局域网络及广域网络的公司的路由服务。
补充: 如上说的,提供拨号联机到区网或是 vpn 服务,一般用户用不到
依存: remote procedure call (rpc)、netbiosgroup
建议: 已停用
secondary logon
微软: 启用在其它认证下的起始程序。如果这个服务被停止,这类的登入存取将无法使用。如果这个服务被停用,任何明确依存于它的服务将无法启动。
补充: 允许多个使用者处理程序,执行分身等
建议: 自动
security accounts manager (安全性账户管理员)
微软: 储存本机账户的安全性信息。
补充: 管理账号和群组原则(gpedit.msc)应用
依存: remote procedure call (rpc)、distributed transaction coordinator
建议: 自动
server (服务器)
微软: 透过网络为这台计算机提供档案、打印、及命名管道的共享。如果停止这个服务,将无法使用这些功能。如果停用这个服务,所有依存于它的服务将无法启动。
补充: 简单的说就是档案和打印的分享,除非你有和其它计算机分享,不然就关了
依存: computer browser
建议: 已停用
shell hardware detection
微软: 为自动播放硬件事件提供通知。
补充: 一般使用在记忆卡或是cd装置、dvd装置上
依存: remote procedure call (rpc)
建议: 自动
smart card (智慧卡)
微软: 管理这个计算机所读取智能卡的存取。如果这个服务被停止,这个计算机将无法读取智能卡。如果这个服务被停用,任何明确依存于它的服务将无法启动。
补充: 如果你不使用 smart card ,那就可以关了
依存: plug and play
建议: 已停用
smart card helper (智能卡协助程序)
微软: 启用对这个计算机使用的旧版非随插即用智能卡读取头的支持。如果这个服务被停止,这个计算机将不支持旧版读取头。如果这个服务被停用,任何明确依存于它的服务将无法启动。
补充: 如果你不使用 smart card ,那就可以关了
建议: 已停用
ssdp discovery service
微软: 在您的家用网络上启用通用随插即用装置的搜索。
补充: 如上说的,通用随插即用服务 (universal plug and play, upnp) 让计算机可以找到并使用网络上的装置,经由网络联机透过 tcp/ip 来搜索装置,像网络上的扫瞄器、数字相机或是打印机,亦即使用 upnp 的功能,基于安全性没用到的大可关了
依存: universal plug and play device host
建议: 已停用
system event notification (系统事件通知)
微软: 追踪诸如 windows 登入、网络、和电源事件的系统事件。通知这些事件的 com+ 事件系统订阅者。
补充: 如上所说的
依存: com+ event system
建议: 自动
system restore service
微软: 执行系统还原功能。若要停止服务,从我的计算机->内容,[系统还原]中关闭系统还原
补充: 将计算机回复至先前的状态,不使用就关了
依存: remote procedure call (rpc)
建议: 已停用
task scheduler (工作排程器)
微软: 让使用者能够在这个计算机上设定和排定自动的工作。如果停止这个服务,这些工作在它们排定的时间时将不会执行。如果停用这个服务,任何明确依存于它的服务将无法启动。
补充: 设定排定自动的工作,像一些定时磁盘扫瞄、病毒定时扫瞄、更新等等
依存: remote procedure call (rpc)
建议: 自动
tcp/ip netbios helper (tcp/ip netbios 协助程序)
微软: 启用[netbios over tcp/ip (netbt)]服务及 netbios 名称解析的支持。
补充: 如果你的网络不使用 netbios 或是 wins ,你大可关闭
依存: afd 网络支持环境、netbt
建议: 已停用
telephony (电话语音)
微软: 为本机计算机上及经由局域网络连接到正在执行此服务的服务器上,控制电话语音装置和 ip 为主语音联机的程序,提供电话语音 api (tapi) 支持。
补充: 一般的拨号调制解调器或是一些 dsl/cable 可能用到
依存: plug and play、remote procedure call (rpc)、remote access connection manager、remote access auto connection manager
建议: 手动
telnet
微软: 启用一个远程使用者来登入到这台计算机和执行应用程序,以及支持各种 tcp/ip telnet 客户端,包含以 unix 为基本和以 windows 为基本的计算机。如果服务停止了,远程使用者可能无法存取应用程序。如果服务停用了,任何明确地依存于这项服务的其它服务将会启动失败。
补充: 允许远程使用者用 telnet 登入本计算机,一般人会误解关了就无法使用bbs,这其实和bbs无关,基于安全性的理由,如果没有特别的需求,建议最好关了
依存: nt lm security support provider、remote procedure call (rpc)、tcp/ip protocol driver
建议: 已停用
terminal services (终端机服务)
微软: 允许多位使用者互动连接到同一部计算机、桌面的显示器及到远程计算机的应用程序。远程桌面的加强 (包含系统管理员的 rd)、快速切换使用者、远程协助和终端机服务器。
补充: 远程桌面或是远程协助的功能,不需要就关了
依存: remote procedure call (rpc)、fast user switching compatibility、interactivelogon
建议: 已停用
themes
微软: 提供使用者经验主题管理。
补充: 很多人使用布景主题,不过如果没有使用的人,那就可以关闭
建议: 自动
uninterruptible power supply (不断电供电系统)
微软: 管理连接到这台计算机的不断电电源供应 (ups)。
补充: 不断电电源供应 (ups)一般人有用到吗?除非你的电源供应器有具备此功能,不然就关了
建议: 已停用
universal plug and play device host
微软: 提供主机通用随插即用装置的支持。
补充: 用来侦测安装通用随插即用服务 (universal plug and play, upnp)装置,像是数字相机或打印机
依存: ssdp discovery service
建议: 已停用
volume shadow copy
微软: 管理及执行用于备份和其它目的的磁盘区卷影复制。如果这个服务被停止,卷影复制将无法用于备份,备份可能会失败。如果这个服务被停用,任何明确依存于它的服务将无法启动。
补充: 如上所说的,用来备份的?#124;西,如 ms backup 程序就需要这个服务
依存: remote procedure call (rpc)
建议: 已停用
webclient
微软: 启用 windows 为主的程序来建立、存取,以及修改因特网为主的档案。如果停止这个服务,这些功能将无法使用。如果停用这个服务,任何明确依存于它的服务将无法启动。
补充: 使用 webdav 将档案或数据夹上载到所有的 web 服务,基于安全性的理由,你可以尝试关闭
依存: webdav client redirector
建议: 已停用
windows audio
微软: 管理用于 windows 为主程序的音讯装置。如果这个服务被停止,音讯装置和效果将无法正常?#092;作。如果这个服务被停用,任何明确依存于它的服务将无法启动。
补充: 如果你没有声卡可以关了他
依存: plug and play、remote procedure call (rpc)
建议: 自动
windows image acquisition (wia) (windows影像取得程序)
微软: 为扫描仪和数字相机提供影像撷取服务。
补充: 如果扫描仪和数字相机内部具有支持wia功能的话,那就可以直接看到图档,不需要其它的驱动程序,所以没有扫描仪和数字相机的使用者大可关了
依存: remote procedure call (rpc)
建议: 已停用
windows installer (windows 安装程序)
微软: 根据包含在 .msi 档案内的指示来安装,修复以及移除软件。
补充: 是一个系统服务,协助使用者正确地安装、设定、追踪、升级和移除软件程序,可管理应用程序建立和安装的标准格式,并且追踪例如档案群组、登录项目及快捷方式等组件
依存: remote procedure call (rpc)
建议: 手动
windows management instrumentation (wmi)
微软: 提供公用接口及对象模型,以存取有关操作系统、装置、应用程序及服务的管理信息。如果这个服务已停止,大多数的 windows 软件将无法正常?#092;作。如果这个服务已停用,所有依存于它的服务都将无法启动。
补充: 如上说的,是一种提供一个标准的基础结构来监视和管理系统资源的服务,由不得你动他
依存: event log、remote procedure call (rpc)
建议: 自动
windows management instrumentation driver extensions (windows management instrumentation 驱动程序延伸)
微软: 提供系统管理信息给予/取自驱动程序。
补充: windows management instrumentation 的延伸,提供信息用的
建议: 手动
windows time (windows 时间设定)
微软: 维护在网络上所有客户端及服务器的数据及时间同步处理。如果这个服务停止,将无法进行日期及时间同步处理。如果这个服务被停用,所有依存的服务都会停止。
补充: 网络对时校准用的,没必要就关了
建议: 已停用
wireless zero configuration
微软: 为 802.11 适配卡提供自动设定
补充: 自动配置无线网络装置,言下之意就是说,除非你有在使用无线网络适配卡装置,那么你才有必要使用这个网络零管理服务
依存: ndis usermode i/o protocol、remote procedure call (rpc)
建议: 已停用
wmi performance adapter
微软: 提供来自 wmihiperf 提供者的效能链接库信息。
补充: 如上所提
依存: remote procedure call (rpc)
建议: 已停用l
workstation (工作站)
微软: 建立并维护到远程服务器的客户端网络联机。如果停止这个服务,这些联机将无法使用。如果停用这个服务,所有依存于它的服务将无法启动。
补充: 因特网联机中所必要的一些功能
依存: alerter、background intelligent transfer service、computer browser、messenger、net logon、remote procedure call (rpc) locator
建议: 自动

TOP

回复:电脑应用文章(小长城)--系统相关

【windows xp的十则应用技巧】 :
为了让windows xp更好的运行,我们需对它进行一些改造,下面笔者就介绍的一些针对windows xp操作系统的应用技巧。熟练的掌握这些技巧,对你在使用windows xp操作系统的过程中,肯定有所帮助!
  
  一、解决软件与windows xp不兼容问题
  
  windows xp和windows 98的内核有很大的差异,在  
windows 98下可以安装运行的软件,在windows xp下不一定能行。还好windows xp有一个兼容模式来虚拟其他操作系统,它可以模拟windows 95/98/2000等。
  
  方法是:将那些不能安装的软件的安装文件拖拽到windows xp桌面上,然后用鼠标右键单击文件图标,选择“属性”选项,并选择需要的**作系统兼容模式,这样就可以正常安装软件了。
  
  二、改变window xp“命令提式符”的默认目录
  
  在windows xp中一般地,在我们启动“命令提式符”时,其默认的工作目录是:“c:documents ang settings\你机器名>”,要改变其工作目录,只需找到查看其“属性”。在弹出的“命令提式符”窗口里,将“ 工作目录”栏里的路径改变为自已想要的工作目录即可。
  
  三、windows xp中快速复制文件
  
  比起以前的操作系统windows xp“系统中资源管理器”工具栏比其他系统多了两个按钮——“复制到”和“移至”按钮,它们的功能是快速将选中的文件复制移动到指定文件夹。其实我们可以把这两项命令搬到右键菜单中。
  
  在“开始→运行”对话框中输入“regedit”打开注册表,依次展开主键[hkey_classes_root\allfilesystemobjects\shellex\contextmenuhandlers ],右键单击此主键,选择菜单“新建→项”,然后输入名称,名称可自定义,如“复制到”,再左键单击“复制到”主键,双击右窗口的“默认”,在弹出的“编辑字符串”对话框中输入“{c2fbb630-2971-11d1-a18c-00c04fd75d13}”。同法新建项“移至”,“移至”主键的“默认”键值赋值为“{c2fbb631-2971-11d1-a18c-00c04fd75d13}”即可。现在随便右键单击一个文件或者文件夹,你就会发现弹出的菜单多出了“复制到文件夹”和“移动到文件夹”两个菜单项,它们对应的就是“资源管理器”的“复制到”和“移至”功能。
  
  四、改变登录界面的背景色
  
  windows xp在登录时会先显示一个浅蓝色的屏幕,即登录界面的背景色,想不想更改成其它的颜色。用下面的这个方面就可以了。
  
  打开注册表,找到“hkey_users\.default\control panel\color”,在窗口右边找到“background”这个键值,会出现“编辑字符串”对话框,在“数值数据”下的框中输入你想要的颜色键值,“确定”后,重新启动系统即可。(系统默认值是58 110 165,白色为255 255 255,红色为255 0 0,黑色为000)。
  
  五、改变windows xp的登录背景图案
  
  想不想把windows xp的登录背景换成自己喜欢的图案。通过如下步骤就行:打开注册表编辑器,在hkey_users\。default\control panel\desktop子键分支,双击wallpaper,键入你所喜欢的图片路径,单击“确定”,然后找到tilewallpaper,双击输入键值“1”,确定后再重新启动系统,背景图案是不是变了吧。
  
  六、消除windows文档保护功能
  
  为了完全消除windows文档保护功能,打开注册表编辑器,设置键值:hkey_local_machine\ software\microsoft\windows nt\currentversion\winlogon sfcdisable=0xffffff9d
  
  七、取消磁盘空间不够警告提示
  
   windows xp会自动监控磁盘空间剩余量,一旦磁盘空间不足的话,会提示你并挂起系统还原功能。如果要取消的话,就打开注册表编辑器,找到hkey_current_user\software\microsoft\windows\currentversion\policies\explorer,新建一个dword值nolowdiskspacechecks,然后修改为1即可。
  
  八、自动关闭停止响应的程序
  
  windows xp系统中,通过修改注册表,我们可以使windows xp诊测到某个应用程序已经停止响应时就自动关闭它,这样就不需要手工干预了。想要实现这个功能,在注册表编辑器,展开hkey_current_user\control panel\desktop\auto end tasks,将其键值改为1即可。
  
   九、自动关闭电脑
  
  有些windows xp系统在点击关闭电脑之后并不能自动关闭,而需像以前的at电源一样手动关闭。这主要是windows xp未启用高级电源管理。
  
  修正方法:点击“开始→控制面板→性能和维护→电源选项”。在弹出的电源选项属性设置窗口中,点击“高级电源管理”,将“启用高级电源管理支持”打上勾即可。
  
   十、加快启动速度
  
   如果你装的是windows 9x和windows xp双系统,系统启动时显示操作系统列表时间很长。右键单击“我的电脑”→“属性”→“高级”,在“启动和故障恢复”中点击“设置”,可以设置显示操作系统列表的时间,单击“编辑”也可以手动编辑启动选项,将timeout=30改为timeout=6即可。

TOP

回复:电脑应用文章(小长城)--系统相关

【windows xp的十八般武艺】 :
windows xp里有我们常用到的工具如磁盘清理程序等等,那么它们到底叫什么名字,又躲在硬盘的哪个地方呢?笔者这就把它们挖掘出来,以后大家再用这些工具的时候就不用一步一步地去找地方了,直接点击“开始→运行”,再输入程序名就ok了。
1.磁盘清理大师——cleanmgr
用来自动地释放出一部分硬盘空间,并会智能化地进行删除操作。
2.剪贴板查看器——clipbrd
windows xp中的剪贴板查看器程序较原先windows 9x/me的旧版本多出了共享功能,通过设置权限允许其他网上用户将该剪贴板装入使用。
3.控制面板启动器——control
快速启动控制面板。
4.windows xp的诊断医生——drwtsn32
drwtsn32是一个程序错误调试器。运行后会获得并记录系统中程序错误的信息,并创建一个文本文件drwtsn32.log,提供错误原因的详细说明,并给出解决问题的建议性操作。
5.dvd播放器——dvdplay
windows xp提供的一个“免费”的dvd播放器,也就是windows media player。
6.自解压文件制作工具——iexpress
利用iexpress可制作两种自解压文件,一种是标准自解压文件,另一种是安装程序式自解压文件。
7.备份工具——ntbackup
windows xp中内置的备份工具。
8.ip地址侦测器——nslookup
通过这个ip侦测工具ping就可以轻而易举地得到它们的真正ip地址。

9.注册表编辑器增强版——regedt32
用来修改注册表设置的高级工具。
10.windows升级程序——wupdmgr
联上网后,可以通过此程序进行windows的自动升级。
11.共享文件夹设置工具——shrpubw
它的作用与右击一文件夹,选择“共享”基本上等价。
12.microsoft签字验证工具——sigverif
所谓“签署的文件”,就是被授予microsoft数字签署的文件。该签署表明,该文件是原始文件的一模一样的副本。通过microsoft签字验证工具,我们可在计算机上查找已签署和未签署的文件,也可查看签署文件的身份验证,以确认该文件还没有被篡改。
13.音量控制程序——sndvol32
平时双击任务栏上的小喇叭就会出现的音量控制程序。
14.任务管理器——taskmgr
使用任务管理器可快速查看正在运行的程序的状态,或终止已停止响应的程序,也可以查看cpu和内存使用的情况。
15.远程连接程序——telnet
windows自带的纯中文界面的远程连接程序。
16.系统文件检查器——sfc
使用windows难免会出现系统文件损坏或丢失的毛病,而如果为了几个小小的文件就去重装系统,又显得稍微麻烦了一些。通过系统文件检查器sfc.exe,一切都会变得非常简单。
以上16个程序都在系统盘的windows\system32文件夹下。
17.文件转移向导——migwizwindows\system32\usmt文件夹下
通过它,我们就可以实现系统状态的备份与恢复。
18.系统配置程序——msconfigwindows\pchealth\helpctr\binaries文件夹下
和windows中的系统配置程序一样,通过这个程序,我们可对系统的一般、system.ini、win.ini、boot.ini、服务和启动项目进行修改。

这个内容有点老了,估计大家都懂哈~~

TOP

回复:电脑应用文章(小长城)--系统相关

【Java常见问题集锦 】 :
问:   
如何设置java 2(jdk1.2)的环境变量?   

答:   
java 2安装后,需要设置path和java_home环境变量.与jdk1.1不同的是:设置好java_home环境变量后,jvm将自动搜索系统类库以及用户的当前路径.   

java 2环境变量的设置如下例所示:   

solaris平台: setenv java_home java2的安装路径   

setenv path $java_home/bin{;path};   

windows平台: set java_home=java2的安装路径   

set path=$java_homebin;%path%   

问: 哪些java集成开发工具支持java 2?   

答:   
目前流行的java集成开发环境,如inprise的jbuilder,symantec的visual cafe, sybase的powerj,都支持java 2.   

问:   
如果在netscape或ie浏览器中运行java applet时出现了错误,如何确定错误范围?   

答:   
当java applet在浏览器中运行时,使用的是浏览器本身的缺省jvm.而不同浏览器对jdk的支持程度也不尽相同. 因此,在netscape或ie浏览器中运行java applet出现了错误,建议使用jdk提供的工具appletviewer或sun公司的hotjava浏览器来测试该applet,以确定错误的产生是与浏览器相关.   

如果applet在appletviewer或hotjava中运行一切正常,则错误的产生是由于浏览 器不完全兼容jdk而引起的. 此时,解决方法可以是使用hotjava浏览器或者安装 sun公司的java plugin.   

如果applet在hotjava浏览器或appletviewer中运行即发生错误,则应当根据错误 提示检查applet程序.   

问:   
当用jdbc向数据库中插入数据或从数据库中提取数据时,为何有时中文字符会显示为乱码?   

答:   
这个问题的实现通常与各个jdbc driver的实现有关. 目前大多数jdbc driver采用本地编码格式来传输中文字符,例如中文字符'0x4175'会被转成'0x41'和'0x75'进行传输. 因此我们需要对jdbc driver返回的字符以及要发给jdbc driver的字符进行转换.   

当用jdbc driver向数据库中插入数据时,需要先将unicode转成native code; 当 jdbc driver从数据库中查询数据时,则需要将native code转换成unicode. 下面给出了这两种转换的实现:   

string native2unicode(string s) {;   

if (s == null || s.length() == 0) {;   

return null;   

};   

byte[]buffer = new byte[s.length()];   

for (int i = 0; i s.length(); i++) {; if (s.charat(i)>= 0x100) {;   

c = s.charat(i);   

byte[]buf = (''+c).getbytes();   

buffer[j++]= (char)buf[0];   

buffer[j++]= (char)buf[1];   

};   

else {;   

buffer[j++]= s.charat(i);   

};   

};   

return new string(buffer, 0, j);   

};   

除使用以上两个方法之外,有些jdbc driver如果对jdbc driver manager设置了正确 的字符集属性,以上2个方法就不需要了.   

问:   
当用servlet来处理http请求并产生返回的html页面时,如何使html页面中的中文字符能够正常显示?   

答:   
javax.servlet.http.httpresponse类用于产生返回页面.通过httpresponse定义的方法getoutputstream()可以获得servletoutputstream的实例,这样用户就可以利用servletoutputstream.write方法向输出流中写入返回页面的内容. 但是servletoutputstream使用的是缺省的编码方式,如果要使返回页面中的中文字 符能够正常显示,最好显示地指定所用的字符编码方式. 通常需要构造一个 outputstreamwriter , 例程如下:   

public void doget (httpservletrequest req, httpservletresponse res)   

throws servletexception, ioexception   

{;   

res.setcontenttype('text/html');   

servletoutputstream out = res.getoutputstream();   

outputstreamwriter ow = new outputstreamwriter(out,'gb2312');   

ow.write('这是测试');   

ow.flush();   

ow.close();   

};   

问:   
如何设置java webserver的classpath,以包含用户的class文件?   

答:   
有两种方法可以设置java webserver的classpath环境变量,以使用户编写的servlet能够调用用户的class文件.   
将用户的class文件放到 javawebserver_dir/classes目录下,在java webserver 启动时,classes目录被自动加入到classpath环境变量中了.   
修改httpd.nojre文件,将用户class文件所在的路径名加到classpath环境变量中.   

问:   
为什么在windows平台上用naming.lookup来获取远程rmi对象时会很慢?   

答:   
机器的网络设置不正确很可能会引起该问题的发生.   
rmi使用了java网络类,特别是java.net.inetaddress类,它将查询tcp/ip的主机名, 包括ip地址到主机名的映射和主机名到ip地址的映射.在windows平台,这种查询功能 是由本地的windows socket库来实现的. 因此延时是发生在windows库中,而非rmi中.   

如果你的机器设置成使用dns,问题通常是dns服务器查不到主机名,你所发现的延时 是dns查询的延时. 请尝试将rmi通信中涉及到的所有主机名/ip地址加到本地文件 winntsystem32driversetchosts或windowshosts中. 格式如下:   

ip地址 主机名   

如此设置应当可以明显地减少查询所花的时间.   

问: 编写java application时,如何设置proxy的信息,以便访问外部网站?   

答:   
若在java application中访问外部网站,首先应设置proxy信息,样例代码如下:   

import java.util.properties;   

.....   

properties sys = system.getproperties();   

sys.put('proxyset','true');   

sys.put('proxyhost','myhttp.proxyserver.com');   

sys.put('proxyport','80');   

system.setproperties(sys);   

u = new url(website);   

connect = (httpurlconnection)u.openconnection();   

.....   

问: swing组件jlist的列表数据修改了,如何通知jlist改变显示?   

答:   
jlist组件有一个单独的显示模式listmodel来表示jlist的显示数据.   
jlist创建以后,jlist数据元素的值及数据元素的数量可以动态地改变.   
jlist在它的数据模式listmodel中观察数据的改变.因此,一个listmodel 的正确实现应当在每次数据发生改变时,通知事件的监听者.   
当使用构造函数jlist(object[])创建一个jlist的实例时,系统将自动 创建一个defaultlistmodel的实例来存储jlist的显示数据, 可以调用 defaultlistmodel中定义的简便方法来动态地修改jlist的数据,如 removeelementat(index),addelement(object)等. defaultlistmodel 在修改数据的同时,将通知jlist关于数据的改变.   

问:   
在java applet中如何实现一个模式对话框?   

答:   
在java applet中实现模式对话框的关键就是在创建一个对话框的时候 要为该对话框指定一个正确的父窗口.因为applet是panel类的子类,不 可以作为对话框的父窗口,所以首先要获得applet所在的窗口,作为模式 对话框的父窗口. 样例代码如下:   
.....   

dialog d = new dialog( getparentwindow(comp),title);   

// comp为applet上的任意一个组件   

....   
public void getparentwindow(component componapplet,string title){;   
container c = componapplet.getparent();   
while (c != null) {;   
if (c instanceof frame)   
return (frame) c;   
c = c.getparent();   
};   
return null;   
};   

问: 在java applet中如何显示另外一个html页面?   

答:   
通过java.applet.applet.getappletcontext()方法可以获得与该applet相关的appletcontext, appletcontext.showdocument(url)方法就可以使applet所在的浏览器显示另外一个网页.   

问:   
用jdk实现的签名applet,可否在netscape或ie中运行?   

答:   
用jdk实现的签名applet,不可以在netscape或ie中运行,但是可以在hotjava浏览器中运行.   

不同的浏览器提供了不同的签名applet机制,如netscape提供了zigbert工具和 capability api, 而ie则需要使用cab文件. 但是,无论是netscape工具产生的 签名applet,还是用ie产生的签名applet,都不可以在其它的浏览器中运行.   

如果要使jdk产生的签名applet能够在netscape或ie中运行,解决方法是在 netscape或ie中安装java plugin,则用jdk实现的签名applet就可以在这两种 浏览器中运行.   

问:   
用jni技术可以从java应用中调用c程序库,但是如何使该c程序库可以调用另外的c程序库?   

答:   
如果一个被java调用的c程序库c1仍需要调用另外一个c程序库c2,那么在编译c1的时候应当联接程序库c2,步骤如下(solaris平台):   
编写调用c库的java文件,并编译.   
javac java文件名   

产生c程序头文件   
javah -jni java文件名(不带后缀.java)   

编写被java调用的c程序c1.c,以及被c1调用的c2.c,并编译.   
cc -g -iinclude路径名 c2.c -o libc2.so   
cc -g -iinclude路径名 -lc2 c1.c -o libc1.so   

设置环境变量   
setenv ld_library_path libc1.so,libc2.so所在路径   
{;ld_library_path};   

运行java应用   

问:   
在java语言中,如何列出pc机文件系统中的所有驱动器名?   

答:   
在java 2版本中,java.io包中的file类新增加了方法listroots()可以实现这一功能.   

问:   
为什么runtime.exec('ls')没有任何输出?   

答:   
调用runtime.exec方法将产生一个本地的进程,并返回一个process子类的实例,该实例可用于控制进程或取得进程的相关信息. 由于调用runtime.exec方法所创建的子进程没有自己的终端或控制台,因此该子进程的标准io(如stdin,stdou,stderr)都通过process.getoutputstream(),process.getinputstream(), process.geterrorstream()方法重定向给它的父进程了.用户需要用这些stream来向 子进程输入数据或获取子进程的输出. 所以正确执行runtime.exec('ls')的例程如下:   

try   

{;   

process = runtime.getruntime().exec (command);   

inputstreamreader ir=newinputstreamreader(process.getinputstream());   

linenumberreader input = new linenumberreader (ir);   

string line;   

while ((line = input.readline ()) != null)   

system.out.println(line);   

};   

catch (java.io.ioexception e){;   

system.err.println ('ioexception ' + e.getmessage());   

};   

问:   
如何产生签名applet,以使applet能够访问本地资源?   

答:   
在jdk1.1中,可以使用javakey命令来产生公钥,私钥,证书和签名的jar文件,详细资料 请参考: http://java.sun.com/security/usingjavakey.html而java 2对签名机制做了比较大的改进,允许用户更灵活地设置安全权限.java 2提供了三个工具:keytool,policytool和jarsigner来实现签名applet.例如,joe编写了一个签名applet:signedapplet.java,那么产生一个简单的签名applet的过程如下:   

//产生密钥,密钥别名为joe,口令为sign12,存放在密钥库joestore中   

keytool -genkey -alias joe -keypass sign12 -keystore joestore   

//将signedapplet.class及相关文件打包成jar文件   

jar cvf signedappletdemo.jar   

//利用keytool生成的自签名的证书产生签名applet(jar文件)   

jarsigner -keystore joestore -signedjar joe.jar signedappletdemo.jar joe   

//将自签名证书从keystore中输出到文件   

keytool -export -keystore joestore -alias joe -file joe.cer   

而对于签名applet的接受方susan,需要通过如下步骤来安全地执行   

joe编写的签名applet:   

//得到joe的证书并将之读入到密钥库中susanstore中   

keytool -import -alias joe -file joe.cer -keystore susanstore   

//运行policytool产生满足susan要求的policy文件   

policytool   

//用appletviewer运行之,或在浏览器中安装java plugin来运行之.   

关于签名applet在java plugin中的部署请参考以下网页:   

http://java.sun.com/security/signexample12/   

注:以上的例子为简单起见,使用了keytool产生的自签名证书.其实,用户也可以   

使用keytool -certreq向商业ca中心申请电子证书.   

问:   
若通过objectoutputstream向一个文件中多次以追加方式写入object,为什么用objectinputstream读取这些object时会产生streamcorruptedexception?   

答:   
使用缺省的serializetion的实现时,一个objectoutputstream的构造和一个objectinputstream的构造必须一一对应.objectoutputstream的构造函数会向输出流中写入一个标识头,而objectinputstream会首先读入这个标识头.因此,多次以追加方式向一个文件中写入object时,该文件将会包含多个标识头.所以用objectinputstream来deserialize这个objectoutputstream时,将产生streamcorruptedexception.一种解决方法是可以构造一个objectoutputstream的子类,并覆盖writestreamheader()方法.被覆盖后的writestreamheader()方法应判断是否为首次向文件中写入object,羰?则调用super.writestreamheader();若否,即以追加方式写入object时,则应调用objectoutputstream.reset()方法.   

问:   
对象的序列化(serialization)类是面向流的,应如何将对象写入到随机存取文件中?   

答:   
目前,没有直接的方法可以将对象写入到随机存取文件中.   
但是可以使用bytearray输入/输出流作为中介,来向随机存取文件中写入或从随机存取文件中读出字节,并且可以利用字节流来创建对象输入/输出流,以用于读写对象.需要注意的是在字节流中要包含一个完整的对象,否则读写对象时将发生错误. 例如,java.io.bytearrayoutputstream可用于获取objectoutputstream的字节流,从中可得到byte数组并可将之写入到随机存取文件中.相反,我们可以从随机存取文件中读出字节数组,利用它可构造bytearrayinputstream,进而构造出objectinputstream,以读取对象.   

问:   
运行rmi应用时,可不可以不手工启动名字服务rmiregistry,而是从程序中启动之?   

答:   
可以. java.rmi包中提供了类java.rmi.registry.locateregistry,用于获取名字服务或创建名字服务.调用locateregistry.createregistry(int port)方法可以在某一特定端口创建名字服务,从而用户无需再手工启动rmiregistry.此外,locateregistry.getregistry(string host,int port)方法可用于获取名字服务.   

问:   
使用类printjob进行打印操作时,应如何设置打印机名等打印属性?   

答:   
使用如下方法可以获得printjob的实例用于控制打印操作:   

toolkit.getprintjob(frame f, string jobtitle, properties prop)   

那么对于打印属性的设置可以通过对prop的属性设置来实现,打印属性包括:   

awt.print.destination: 可以是'printer'或'file'   

awt.print.printer: 打印机名   

awt.print.filename: 打印文件名   

awt.print.numcopies: 打印份数   

awt.print.options: 打印命令的打印选项   

awt.print.orientation: 打印方向,可以是'portrait'或'landscape'   

awt.print.papersize: 纸张大小,可以是'letter','legal','executive'或'a4'   

问:   
在jdk1.1中thread类定义了suspend()和resume()方法,但是在jdk1.2中已经过时,应使用什么方法来替代之?   

答:   
thread.suspend本身易于产生死锁.如果一个目标线程对某一关键系统资源进行了加锁操作,然后该线程被suspend,那么除非该线程被resume,否则其它线程都将无法访问该系统资源.如果另外一个线程将调用resume,使该线程继续运行,而在此之前,它也需要访问这一系统资源,则将产生死锁.   

因此,在java 2中,比较流行的方式是定义线程的状态变量,并使目标线程轮询该状态变量,当状态为悬挂状态时,可以使用wait()方法使之处于等待状态.一旦需要该线程继续运行,其它线程会调用notify()方法来通知它.   

问:   
使用jdbc编程,应如何控制结果集resultset的指针,使之能够上下移动,以及移动到结果集的第一行和最后一行?   

答:   
在jdk1.1中,resultset类中只定义了next()方法支持数据指针的下移.但在java 2中,resultset类增加了如下方法支持数据指针的移动,包括:   

resultset.first():将数据指针移到结果集的第一行   

resultset.last(): 将数据指针移到结果集的最后一行   

resultset.previous(): 将数据指针上移一行   

以上的方法定义在jdbc2.0的规范中,所有支持jdbc 2.0的jdbc驱动程序都可以支持上述方法.目前intersolv和openlink等jdbc驱动程序厂商均有产品支持jdbc 2.0 .   

问:   
哪几种web server支持servlet?如何使iis支持servlet?   

答:   
目前,支持servlet的服务器端产品主要有: sun公司的java webserver,lotus dominogo webserver,bea weblogic tengah server,jigsaw,netforge,acmeserver和mot bays jetty等.   

此外,一些第三方厂商也开发了servlet engine,以使其它webserver(如netscape web server,iis等)能够运行servlet,如livesoftware的jrun(http://www.livesoftware.com/ products/jrun/)等.   

问:   
如何在java应用中将图像存储到图像文件中?   

答:   
java advanced imaging api(包含在java media api中)允许在java应用中执行复杂的,高性能的图像处理.jai api提供了存储图像的能力.目前,jai api支持以下几种图像文件格式:bmp,jepg,png,pnm,tiff.下面给出了将图像存储到bmp文件的一段代码:   

outputstream os = new fileoutputstream(filetowriteto);   

bmpencodeparam param = new bmpencodeparam();   

imageencoder enc = imagecodec.createimageencoder('bmp', os, param);   

enc.encode(img);   

os.close();   

有关存储图像文件的编程指南请参考以下网页:   

http://java.sun.com/products/java-media/jai/fordevelopers/jai-guide/   

问:   
如何用java语言向串口读写数据? font>   

答:   
sun公司的java communication api2.0可用于读写串口,它支持rs232串口和ieee 1284 并口,提供了一种与平台无关的串/并口通信机制.   

TOP

回复:电脑应用文章(小长城)--系统相关

【DOS初步】 :
重点及难点分析:掌握dos的常用命令的灵活使用。
  dos是单用户、单任务的磁盘操作系统,windows是多任务、用于管理微机的各种软、硬件资源。
   
dos命令
1.dos命令分两种:内部命令和外部命令,掌握两种命令的区别。
2.dos命令的使用:
  ⑴盘符及转换磁盘操作:(内部命令)
     ①a:\>d:
     ②c:\>a:
     ③c:\>d:
     ④c:\>f:
       按回车键后,屏幕显示:
       invalid drive specification  表示指定了无效的驱动器标识符。
  ⑵建立子目录命令mkdir(md)
    ①命令格式:mkdir[d:][path]〈子目录名〉或 md[d:][path]〈子目录名〉
②c:\>md student
③c:\>md student\student
④c:\student>md  teacher
    ⑤a:\>md  boy
    ⑥a:\>md boy\888
   ①②③④⑤⑥⑦⑧
   ①②③④⑤⑥⑦⑧
  ⑶显示文件目录命令dir
①c:\>dir
②a:\>dir
③c:\>dir/s/w
④d:\>dir  c:\/s/w/p
⑤c:\windows>dir d:\/s
⑥c:\windows>dir d:\/w
⑦ d:\>dir c:\windows/s/p
  ⑷改变当前目录命令chdir(cd)
   ①命令格式: chdir [d:][path]或cd[d:][path]
   ②c:\>cd windows
   ③c:\>cd windows\system
   ④c:\windows\system>cd..
     c:\windows>
   ⑤c:\windows\system\command>cd\
     c:\>
   ⑥c:\windows\system>cd
     c:\windows\system>
  ⑸删除子目录命令rmdir(rd)
   ①rmdir[d:][path]〈子目录名〉或rd[d:][path]〈子目录名〉
   ②注意:一.根目录不能删除.
           二.必须保证该目录为空,即该目录下没有任何文件和子目录.
           三.当前目录下不能删除当前目录.
   ③c:\>rd c:\ (错误)
   ④a:\>rd a:\ (错误)
   ⑤c\:student>del *.*
     c:\>rd student
   ⑥c:\windows>rd windows (错误)
   ⑦d:\>rd c:\student
   ⑧a:\>rd c:\student
   ①②③④⑤⑥⑦⑧⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂⒃⒄⒅⒆
   ①②③④⑤⑥⑦⑧
   ①②③④⑤⑥⑦⑧
  ⑹删除子目录及其文件命令deltree
2                       命令格式: deltree [d:][path]
3                       c:\windows\command>deltree  ab
③c:\dos>deltree   a:\888\999
  ⑺文件拷贝命令copy
    ①命令格式: copy [d:][path]   [d:][path]
②注意: i .filename.ext1:待拷贝的源文件名,它前面是该文件的盘符和路径.
       ii . filename.ext2:复制的目标文件名字,它是可选项.
       copy命令可以写成以下3种常用格式:
a:命令格式: copy  [path1]    d:[path2]
     i .c:\dos>copy  command.com     a:\
     ii .a:\>copy   *.*  c:\
     iii .c:\>copy   *.com   d:\
b. 命令格式: copy  [path1]    d:[path2]
filename.ext2:复制的目标文件名字,它是可选项.
   ①c:\dos>copy  *.com   d:\*.exe
   ②a:|>copy 568.*   c:\888.*
   c:文件合并命令:
     a:命令格式: copy  d:[path1]+ d:[path2]    d:[path3]
        注意: d:[path3] 是可选项
        ①c:\>copy  a:\1.txt+c:\2.txt+d:\3.txt      d:\4.txt
        ②c:\>copy  a:\1.txt+c:\2.txt+d:\3.txt      
  ⑻文件易名命令rename(ren)
       命令格式: rename [d:][path]      
       注意:目标文件名前不允许带盘符和路径.
     ①c:\>ren  a:\keycai\*.dat      a:\keycai\*.txt(错误)
     ②c:\>ren  a:\keycai\*.dat      c:\cai\*.txt(错误)
     ③c:\>ren  a:\keycai\*.dat      *.txt
     ④a:\>ren  a:\keycai\*.dat      *.txt
  ⑼删除文件erase(del)
      命令格式: del  [d:][path]
     ①c:\>del *.com
     ②c:\>del c:\ty\tt\*.com
     ③c:\>del a:\kv300\kv300.com
     ④c:\>del d:\windwows\ *.exe
     ⑤c:\>del *.*
  ⑽显示文本文件内容命令type
      命令格式: type  [d:][path]
    注意:每次只能显示一个文本文件.
    ①c:\>type     c:\tt\a.bat
②c:\>type    c:\ty\tt\568.txt
③c:\>type  c:\ty\tt\*.com(错误)
④d: \>type   c:\windwos\*.*(错误)
⑤c:\>type    a:\yes.exe(错误)
  ⑾清屏命令cls
     ①c:\>cls
②a:\tt>cls
     ③d:\>cls
  ⑿显示dos版本号命令ver
      ①c:\>ver
  ②a:\8898>ver
练 习 题:
⒈删除文件的命令是     ,显示当前目录的命令是    。
⒉将文件1.txt、2.txt、3.txt、4.txt合并成5.txt命令是          .
⒊磁盘上的文件以     型结构存在于磁盘上。
⒋有如下目录树:
                c:\    ta
                        tb  tc   2.txt
                            1.txt
写出如何清除目录tb的命令.
⒌     路径是从当前目录开始但不包括当前目录.

TOP

回复:电脑应用文章(小长城)--系统相关

【DEBUG的主要命令 二】 :
下面是对寄存器的简单介绍:
数据存储器
在本类中,一般讲的ah就是ax的前八位,al就是ax的后八位,后面的以此类推。
ax accumulator;作为累加器,所以它是算术运算的主要寄存器。另外所有的i/o指令都使用这一寄存器与外部设备传送信息。
bx base register;可以作为通用寄存器使用,此外在计算存储器地址时,它经常用作基地址寄存器。
cx counting register;可以作为通用寄存器使用,此外在循环(loop)和串处理指令中作隐含的计数器。
dx data register;可以作为通用寄存器使用,一般在作双字长运算时,把dx和ax组合在一起存放一个双字长数,dx用来存放高位字。此外,对某些i/o操作,dx可用来存放i/o的端口地址。
指针及变址寄存器
bp base pointers register ;机制指针寄存器
si source index register ;堆栈指针寄存器
di destiny index register ;目的变址寄存器
sp battery pointer register ;堆栈指针寄存器
段寄存器
cs code segment register ;代码段寄存器,存放正在运行的程序指令
ds data segment register ;数据段寄存器,存放当前运行程序所用的数据
ss battery segment register ;堆栈段寄存器,定义了堆栈所在区域
es extra segment register ;附加段寄存器,存放附加的数据,是一个辅助性的数据区,
控制寄存器
ip next instruction pointer register;指令指针寄存器,它用来存放代码段中的偏移地址,在程序运行的过程中,它始终指向下一条指令的首地址,它与cs寄存器联用确定下一条指令的物理地址
f flag register;标志寄存器 'nv up ei pl nz na po nc'就是了,也有人称之为psw program status wold程序状态寄存器
(这里有一点必须讲明白的现在在,其实从奔腾开始这些寄存器(除了所有段寄存器,标志寄存器 )都是32位的。并且加多了两个16位段寄存器fs,gs。dos下面看到这些寄存器是16位的。要看32位寄存器可以使用soft-ice。对于fs,gs的作用我也不是很清楚,希望有高手指点,谢谢。)
返回目录
2004-5-26 09:45                 
iceme
正式会员


积分 170
发贴 305
注册 2004-3-15
来自 紫色星云
状态 离线  5)我们来编写我们的第一个用机械语言编写的程序-打印一个字符
(这里用机械语言的主要原因是考虑到有一些用户不懂汇编命令,现在就要让他有一个认识计算机程序实质是一些数字)
prompt> debug
-e 100 (在偏移地址为100的地方输入机械指令程序)
b402 (在ax寄存器的前八位存入02)
b241 (在dx寄存器的后八位存入41h,41h就是大写a的ascii码,身边有ascii表的朋友可以对着表改改数字试一试)
cd21 (当ah=02时这是dos显示输出的中断号)
cd20 (退出dos)
-g (程序运行,并在屏幕上显示出'a')
程序运行完以后你将看到'program terminated normally'(程序正常结束了).
-u 100 (我们把它反汇编,就是把机械命令变为汇编语言指令)
107f:0100 b402 mov ah,02
:0102 b2 mov dl,41
:0104 cd21 int 21
:0106 cd20 int 20
(下面会有一堆无用的东西)
(对了,你的段地址可能与我的段地址cs=107f不同哦)
-r (让我们来看看寄存器的值; ip==100h, ax==0000h, dx==0000h)
好极了,我们看到电脑又做好了准备下一次运行程序了。
-t (执行第一步操作... ip=>102h, ax=>0200h,指令指针寄存器指向下一条命令,ax的值被改变。
-t (执行第二步操作... ip=>104h, , dx=>0041h,指令指针寄存器指向下一条命令,dx的值被改变。
-p (继续执行 int 21,ip=>106h, ax=>02h,)
-p (继续执行int 20)
-q (退出debug)
(注意:你必须小心使用't'.因为如果你在程序完结以后继续执行这条命令,因为我们无法预知下面的指令是什么,所以我们也无法预知它可能带来的后果)
c:\windows>debug
-e 100
127c:0100 b4.b4 02.02 b2.b2 41.41 cd.cd 21.21 cd.cd 20.20
-g
a
program terminated normally
-u 100
127c:0100 b402 mov ah,02
127c:0102 b241 mov dl,41
127c:0104 cd21 int 21
127c:0106 cd20 int 20
127c:0108 c706f1e30900 mov word ptr[e3f1],0009
127c:010e eb59 jmp 0169
127c:0110 57 push di
127c:0111 bff1e3 mov di,e3f1
127c:0114 8bdf mov bx,di
127c:0116 06 push es
127c:0117 0e push cs
127c:0118 07 pop es
127c:0119 32d2 xor dl,dl
127c:011b eb34 jmp 0151
127c:011d 006b12 add[bp+di+12],ch
-r
ax=0000 bx=0000 cx=0000 dx=0000 sp=ffee bp=0000 si=0000 di=0000
ds=127c es=127c ss=127c cs=127c ip=0100 nv up ei pl nz na po nc
127c:0100 b402 mov ah,02
-t
ax=0200 bx=0000 cx=0000 dx=0000 sp=ffee bp=0000 si=0000 di=0000
ds=127c es=127c ss=127c cs=127c ip=0102 nv up ei pl nz na po nc
127c:0102 b241 mov dl,41
-t
ax=0200 bx=0000 cx=0000 dx=0041 sp=ffee bp=0000 si=0000 di=0000
ds=127c es=127c ss=127c cs=127c ip=0104 nv up ei pl nz na po nc
127c:0104 cd21 int 21
-p
a
ax=0241 bx=0000 cx=0000 dx=0041 sp=ffee bp=0000 si=0000 di=0000
ds=127c es=127c ss=127c cs=127c ip=0106 nv up ei pl nz na po nc
127c:0106 cd20 int 20
-p
program terminated normally
-q
c:\windows>
返回目录
6) 我们现在用汇编语言指令来做和例5一样的事情
prompt> debug
-a 100 (在偏移地址为100的地方输入汇编语言程序)
mov ah,02 (选用dos的02号功能调用,显示输出)
mov dl, (在dx寄存器的后八位存入41h,41h就是大写a的ascii码,身边有ascii表的朋友可以对着表改改数字试一试)
int 21 (当ah=02时这是dos显示输出的中断号,显示'a')
int 20 (退出dos)
(结束汇编语言编程状态,回到debug命令状态)
-g =100 (运行程序,其实可以不要'=100'因为一般默认启始位置是100)
-q (退出debug)

c:\windows>debug
-a 100
127c:0100 mov ah,02
127c:0102 mov dl,41
127c:0104 int 21
127c:0106 int 20
127c:0108
-g
a
program terminated normally
-q
返回目录
7) 现在,我们不但要编写一个汇编程序,而且我们还要把它存盘
(下面这个程序就要比原来的程序复杂一点了-显示输出:'abc')
prompt> debug(运行debug程序;系统默认启始ip寄存器值为100h)
-a 100 (用汇编语言编写一个程序,启始地址是100h)
mov ah,02 (选择dos的02号功能调用, 显示输出)
mov dl, (在dx寄存器的后八位存入41h,41h就是大写a的ascii码)
int 21 (当ah=02时这是dos显示输出的中断号,显示'a')
mov dl,42 (在dx寄存器的后八位存入41h,41h就是大写b的ascii码)
int 21 (当ah=02时这是dos显示输出的中断号,显示'b')
mov dl,43 (在dx寄存器的后八位存入41h,41h就是大写c的ascii码)
int 21 (当ah=02时这是dos显示输出的中断号,显示'c')
int 20 (程序结束,退出debug)
(结束汇编命令输入,回到debug命令输入)
-r bx (查看寄存器bx的值)
:0000 (设置bx为0000h,这是程序的结尾地址是bx:cx)
(注意,只要bx = 0000, 文件的大小就小于 < 64 kb.)
-r cx (设置cx为fh,这是程序的长度:16位)
:0010 (现在我们可以把这个16字节的程序写入硬盘了)
-n printabc.com (将要存盘的程序命名)
-w (把这十六字节写到文件里面)
-q (退出debug)
prompt> dir printabc.com
这里将会报告这个文件的大小是16字节 (10h 字节).
prompt> printabc.com
会马上在屏幕上打印出'abc'
c:\windows>debug
-a 100
127c:0100 mov ah,02
127c:0102 mov dl,41
127c:0104 int 21
127c:0106 mov dl,42
127c:0108 int 21
127c:010a mov dl,43
127c:010c int 21
127c:010e int 20
127c:0110
-r
ax=0000 bx=0000 cx=0000 dx=0000 sp=ffee bp=0000 si=0000 di=0000
ds=127c es=127c ss=127c cs=127c ip=0100 nv up ei pl nz na po nc
127c:0100 b402 mov ah,02
-r bx
bx 0000
:
-r cx
cx 0000
:0010
-n printabc.com
-w
writing 00010 bytes
-q
c:\windows>dir printabc.com
volume in drive c has no label
volume serial number is 28fb-70ba
directory of c:\windows
printabc com 16 03-21-01 11:02 printabc.com
1 file(s) 16 bytes
0 dir(s) 557,711,360 bytes free
c:\windows>printabc
abc
c:\windows>
这里可以有人告诉我,为什么要存入是bx:cx代表程序长度吗?(写信给译者,谢谢)
返回目录
8) 现在,我们试一试查看一个已经编好的程序:
prompt> debug(运行debug程序在cs:ip = cs:0100h)
-n printabc.com (告诉电脑你想装载的程序名)
-l (装载那个名字的程序进入内存)
-u 100 l 10 (从偏移地址100开始反汇编16位字节)
-r (现在看看寄存器里面的内容)
注意:debug本身是没有自动纪录文件大小的。
-g (运行被命名的程序,打印'abc')
你将看到'abc',然后是'program terminated normally')
c:\windows>debug
-n printabc.com
-l
-u 100 l 10
12a4:0100 b402 mov ah,02
12a4:0102 b241 mov dl,41
12a4:0104 cd21 int 21
12a4:0106 b242 mov dl,42
12a4:0108 cd21 int 21
12a4:010a b243 mov dl,43
12a4:010c cd21 int 21
12a4:010e cd20 int 20
-r
ax=0000 bx=0000 cx=0010 dx=0000 sp=fffe bp=0000 si=0000 di=0000
ds=12a4 es=12a4 ss=12a4 cs=12a4 ip=0100 nv up ei pl nz na po nc
12a4:0100 b402 mov ah,02
-g
abc
program terminated normally
返回目录
2004-5-26 09:45                 
iceme
正式会员


积分 170
发贴 305
注册 2004-3-15
来自 紫色星云
状态 离线  9)你可以用debug的计算功能计算程序的长度。
一开始的时候你的程序初始地址是在0100h:
107f:0100 mov ah,02  debug
-e 200 (从偏移地址200开始。输入'hello,world')
4865 (输入48h (h)和65h (e))
6c6c (输入6ch (l)和6ch (l))
6f2c (输入6fh (o)和2ch (,))
576f (输入57h (w)和6fh (o))
726c (输入72h (r)和6ch (l))
6424 (输入64h (d)和24h ($))
('hello,world' 已经输入完毕)
-d 200 (显示你刚刚输入的内容:
48 65 6c 6c 6f 2c 57 6f-72 6c 64 24 ... hello,world$...)
-a 100 (用汇编语言写一个新程序在ip-100h处开始)
mov ah,09 (选择dos的09号功能调用,显示字符串)
mov dx,0200 (把输出地址(200h),放进寄存器)
int 21 (执行dos功能调用,显示'hello,world')
int 20 (退出程序回到dos状态)
(结束汇编语言输入,回到debug输入状态)
-g (从 cs:ip开始运行程序, 就是从107f:0100h开始执行程序)
现在,我们可以把这个程序保存进一硬盘
-d 100 (纪录:程序的起始点在100h)
-d 200 (纪录:程序数据单元的结束点是在020bh)
-h 20b 100 (运算 20bh-100h=10bh;程序长度267字节)
-r bx (检查bx寄存器的值)
:0000 (设置bx为0000h,程序的长度是bx:cx,实际上你可以把和cx写到一起,即实际长度为:0000010bh,这样些的目的是使你可以计算更大的程序的长度)
-r cx (设置cx 为010bh, 这就是这个程序的长度了)
:010b (现在你可以把这个108字节的程序写入硬盘了)
-n printhw.com (将要写入硬盘的程序命名)
-w (把这10bh 即267个字节写入文件)
-q (退出debug)
prompt> dir printhw.com
将会汇报程序的长度是267字节(10bh字节).
prompt> printhw.com
运行这个程序,这将会在屏幕上显示出'hello,world' :
c:\windows>debug
-e 200
127c:0200 2c.48 d5.65 ba.6c ff.6c ff.6f b8.2c 00.57 ae.6f
127c:0208 cd.72 2f.6c 3c.64 00.24 c3.
-d 200
127c:0200 48 65 6c 6c 6f 2c 57 6f-72 6c 64 24 c3 a0 ed e3 hello,world$
127c:0210 0a c0 74 09 56 57 e8 84-21 5f 5e 73 0a b9 04 01 ..t.vw..!_^s
127c:0220 fc 56 57 f3 a4 5f 5e c3-50 56 33 c9 33 db ac e8 .vw.._^.pv3.
127c:0230 c3 23 74 19 3c 0d 74 15-f6 c7 20 75 06 3a 06 1e .#t. printhw5.com
将在屏幕上显示五次'hello world'
返回目录
12)我们现在把两个程序连接起来。
我们现在把printhw.com做为修补程序 写进printhw5.com, 新版本的printhw5 将先执行原来的printhw.com再执行原来的printhw5.com
prompt> copy printhw5.com printhw5.bak
首先,备份printhw5.com,以后可以用于比较
prompt> dir printhw5.com
现在,查看到得仍然是以前的54字节(36h 字节)
prompt> debug printhw5.com
-r (现在查看仍然是bx:cx=0000 0036h bytes)
-u 100 (查看到最后的是 eb 23 (jmp 0125))
-h 100 36 (最后的指令是在 100h+36h=136h)
-h 136 1 (下一个可用的存储器位置是136h+1h=137h)
现在你拥有足够的资料,去修补那个程序
-e 110 (把'hello,world'输入内存)
4865 (输入48h (h)和65h (e))
6c6c (输入6ch (l)和6ch (l))
6f2c (输入6fh (o)和2ch (,))
576f (输入57h (w)和6fh (o))
726c (输入72h (r)和6ch (l))
6424 (输入64h (d)和24h ($))
(停止输入'hello,world')
-d 110 (显示更才输入内存的数据:
48 65 6c 6c 6f 2c 57 6f-72 6c 64 24 ...hello,world$...)
-a 100 (在ip地址的(100h)开始夺取原来的程序的控制权,原来这里是'jmp 125')
jmp 137 (代替原来运行的程序首先运行我们现在的修补程序)
(结束汇编命令输入,回到debug命令输入)
-a 137 (在下面的可用通奸编译这个修补程序)
mov ah,09 (选择dos的09号功能调用,显示输出)
mov dx,110 (把我们要输出的字段的首地址(110h)给dx寄存器)
int 21 (执行dos 的功能调用,显示'hello,world')
jmp 0125 (这里用跳转到原程序来代替退出到dos命令(int 20))
(结束汇编命令输入,回到debug命令输入)
-u 125 (确认一下源程序没有被我们误改了,如果无改了就马上退出debug重新来过)
-u 100 l 1 (确认已经使程序跳转到我们的修补程序地址137h)
-d 110 l c (确认数据区已经有了我们想要的数据)
-u 137 (确认我们的新程序已经输入了)
现在我们可以把这个小程序存入硬盘了:
(注意:在现在整个程序的最后一条命令'jmp 0125' 的后面一条的地址是0140h)
-h 0140h 100 (计算140h-100h=40h; 答案是我们现在有一个长度为64字节的小程序)
-rbx (检查bx寄存器的值是否为'0')
: (如果bx是0000h那么就不需要改动啦)
-rcx (要把cx改为40h。这是我们的程序的长度)
:40 (现在你可以把这0000:0040h个字节的小程序放入硬盘啦)
-w (覆盖我们的原程序)
-g (尝试运行我们的新程序)
-q (退出debug回到dos)
prompt> dir printhw5.com
现在你再看就发现文章大小不再是54字节, 变成了64字节.
prompt> printhw5.com
现在是首先在屏幕上打印 'hello,world'一次,然后再打印'hello,world' 5 次(译者注:这里其实可以在编程的时候换一换内容试一试.
返回目录
13) 让我们逐步运行这个刚刚修补的程序:
prompt> debug printhw5.com
-r (第1步:地址0100h内容是 eb35 'jmp 0137')
-t (第2步:地址0137h内容是b409 'mov ah,09')
-t (第3步:地址0139h内容是ba1001 'mov dx,0110')
-t (第4步:地址0139h内容是cd21 'int 21')
-p (运行第5:'hello,world'地址013eh内容是ebe5 'jmp 0125')
-t (到这里控制权已经回到了原程序)
如果你想的话,你可以一步一步的执行完全部程序;方法就是一直按't',直至到达下一个功能调用运行完成后。到那时按一个'p'就可以继续按't'.
返回目录
14)如果一开始的命令不是跳转命令,那么可能就要用这种方法了:
例如:如果我们想叫程序printhw 先打印'abc',就要获取控制权了。然后打印'abc'的程序把控制权给回原来的printhw.
在这个事例里 ,printhw在100h的地址有两字节的程序;
不能象上面那样简单的替代(一个jmp代替另一个jmp)就完事。
解决办法就是使用nop命令。

prompt> dir printhw.com
将汇报程序的长度为267字节(10bh 字节).
prompt> debug printhw.com
-r (ip=100h 并且printhw's 的文件大小=bx:cx=0000:010bh)
-u 100 (第一条指令b4 09 (mov ah,09)是两个字节的)
(第二条命令是三个字节的 ba 00 02 (mov dx,0200))
-h 100 10b (最后一条printhw的指令是在100h+10bh=20bh)
(dos的int 21功能调用是在105h开始的)
现在你有足够的资料输入你的程序了!
-a 100 (要在printhw 的ip开始位置就夺取程序的控制权)
jmp 20b (跳到20bh增加一个程序)
nop (用空指令填充直至你去到下一条完整的指令)
nop (你可以用它来覆盖你不想只执行的原程序命令 ,而不改变原来的地址。但是在这里我们只需要两个nop)
译者注:为了使大家更加明白所以我将各条命令对应的机械命令的长度写在下面
b409 mov ah,09
ba0002 mov dx,0200
e90301 jmp 020b
90 nop
这样我们就很清楚的看到jmp 020b的长度比mov ah,09多了1个字节,但是mov dx,0200有是3个字节,而nop是空指令,是不执行任何操作的,它只是占1个字节。所以我们现在把前两条指令用一个jmp 020b和两个nop代替。后面再加上去。
(结束汇编命令回到debug命令输入)
-u 100 (看一看前面我们做了些什么)
(注意dos int 21中断任然是在 ip=105h的地方开始)
-a 20b (现在把我们的原程序写在后面)
mov ah,02 (选择dos 的 2号功能调用, 字符显示输出)
mov dl,41 (在dl寄存器存入'a'的ascii码41h)
int 21 (执行dos 的功能调用,显示字符'a')
mov dl,42 (在dl寄存器存入'b'的ascii码42h)
int 21 (执行dos 的功能调用,显示字符'b')
mov dl,43 (在dl寄存器存入'c'的ascii码43h)
int 21 (执行dos 的功能调用,显示字符'c')
mov ah,09 (现在重新输入原来在100h的程序指令)
mov dx,0200 (现在要打扫寄存器了,还原原来的200h的值)
jmp 105 (跳到int 21指令的位置105h)
(请注意一下你这里最后的地址是0221h)
-h 221 100 (计算221h-100h=121h 就是289字节的程序)
-r cx (把cx的值设为121h, 这就设定了程序的新长度)
:0121 (现在用121h (也就是289字节)覆盖原值)
-w (把这289个字节写回原程序)
-q (退出debug)
prompt> dir printhw.com
现在在看就会是新程序的长度289字节而不是,267字节)
现在在屏幕上先出现'abc'再出现'hello,world'


TOP

回复:电脑应用文章(小长城)--系统相关

【DEBUG的主要命令 一】 :
debug是为汇编语言设计的一种高度工具,它通过单步、设置断点等方式为汇编语言程序员提供了非常有效的调试手段。
一、debug程序的调用
在dos的提示符下,可键入命令:
c:\debug[d:][path][filename[.ext]][parm1][parm2]
其中,文件名是被调试文件的名字。如用户键入文件,则debug将指定的文件装入存储器中,用户可对其进行调试。如果未键入文件名,则用户可以用当前存储器的内容工作,或者用debug命令n和l把需要的文件装入存储器后再进行调试。命令中的d指定驱动器path为路径,parm1和parm2则为运行被调试文件时所需要的命令参数。
在debug程序调入后,将出现提示符,此时就可用debug命令来调试程序。
二、debug的主要命令
1、显示存储单元的命令d(dump),格式为:
_d[address]或_d[range]
例如,按指定范围显示存储单元内容的方法为:
-d100 120
18e4:0100 c7 06 04 02 38 01 c7 06-06 02 00 02 c7 06 08 02 g...8.g.....g...
18e$:0110 02 02 bb 04 02 e8 02 00-cd 20 50 51 56 57 8b 37 ..;..h..m pqvw.
7
18e4:0120 8b
其中0100至0120是debug显示的单元内容,左边用十六进制表示每个字节,右边用ascii字符表示每个字节,·表示不可显示的字符。这里没有指定段地址,d命令自动显示ds段的内容。如果只指定首地址,则显示从首地址开始的80个字节的内容。如果完全没有指定地址,则显示上一个d命令显示的最后一个单元后的内容。
2、修改存储单元内容的命令有两种。
·输入命令e(enter),有两种格式如下:第一种格式可以用给定的内容表来替代指定范围的存储单元内容。命令格式为:
-e address

    例如,-e ds:100 f3'xyz'8d
    其中f3,'x','y','z'和各占一个字节,该命令可以用这五个字节来替代存储单元ds:0100到0104的原先的内容。
    第二种格式则是采用逐个单元相继修改的方法。命令格式为:
    -e address
    例如,-e ds:100
    则可能显示为:
    18e4:0100 89.-
    如果需要把该单元的内容修改为78,则用户可以直接键入78,再按'空格'键可接着显示下一个单元的内容,如下:
    18e4:0100 89.78 1b.-
    这样,用户可以不断修改相继单元的内容,直到用enter键结束该命令为止。
    ·填写命令f(fill),其格式为:
    -f range list
    例如:-f 4ba:0100 5 f3'xyz'8d
    使04ba:0100~0104单元包含指定的五个字节的内容。如果list中的字节数超过指定的范围,则忽略超过的项;如果list的字节数小于指定的范围,则重复使用list填入,直到填满指定的所有单元为止。
    3)检查和修改寄存器内容的命令r(register),它有三种格式如下:
    ·显示cpu内所有寄存器内容和标志位状态,其格式为:
    -r
    例如,-r
    ax=0000 bx=0000 cx=010a dx=0000 sp=fffe bp=0000 si=0000 di=0000
    ds=18e4 es=18e4 ss=18e4 cs=18e4 ip=0100 nv up di pl nz na po nc
    18e4:0100 c70604023801 mov word ptr[0204],0138 ds:0204=0000
    ·显示和修改某个寄存器内容,其格式为:
    -r register name
    例如,键入
    -r ax
    系统将响应如下:
    ax f1f4

    即ax寄存器的当前内容为f1f4,如不修改则按enter键,否则,可键入欲修改的内容,如:
    -r bx
    bx 0369
    :059f
    则把bx寄存器的内容修改为059f。
    ·显示和修改标志位状态,命令格式为:
    -rf系统将响应,如:
    ov dn ei ng zr ac pe cy-
    此时,如不修改其内容可按enter键,否则,可键入欲修改的内容,如:
    ov dn ei ng zr ac pe cy-ponzdinv
    即可,可见键入的顺序可以是任意的。
    4)运行命令g,其格式为:
    -g[=address1][address2[address3…]]
    其中,地址1指定了运行的起始地址,如不指定则从当前的cs:ip开始运行。后面的地址均为断点地址,当指令执行到断点时,就停止执行并显示当前所有寄存器及标志位的内容,和下一条将要执行的指令。
    5)跟踪命令t(trace),有两种格式:
    ·逐条指令跟踪
    -t[=address]
    从指定地址起执行一条指令后停下来,显示所有寄存器内容及标志位的值。如未指定地址则从当前的cs:ip开始执行。
    ·多条指令跟踪
    -t[=address][value]
    从指定地址起执行n条指令后停下来,n由value指定。
    6)汇编命令a(assemble),其格式为:
    -a[address]
    该命令允许键入汇编语言语句,并能把它们汇编成机器代码,相继地存放在从指定地址开始的存储区中。必须注意:debug把键入的数字均看成十六进制数,所以如要键入十进制数,则其后应加以说明,如100d。
    7)反汇编命令u(unassemble)有两种格式。
    ·从指定地址开始,反汇编32个字节,其格式为:
    -u[address]
    例如:
    -u100
    18e4:0100 c70604023801 mov word ptr[0204],0138
    18e4:0106 c70606020002 mov word ptr[0206],0200
    18e4:010c c70606020202 mov word ptr[0208],0202
    18e4:0112 bbo4o2 mov bx,0204
    18e4:0115 e80200 call 011a
    18e4:0118 cd20 int 20
    18e4:011a 50 push ax
    18e4:011b 51 push cx
    18e4:011c 56 push si
    18e4:011d 57 push di
    18e4:011e 8b37 mov si,[bx]
    如果地址被省略,则从上一个u命令的最后一条指令的下一个单元开始显示32个字节。
    ·对指定范围内的存储单元进行反汇编,格式为:
    -u[range]
    例如:
    -u100 10c
    18e4:0100 c70604023801 mov word ptr[0204],0138
    18e4:0106 c70606020002 mov word ptr[0206],0200
    18e4:010c c70606020202 mov word ptr[0208],0202

    -u100 112
    18e4:0100 c70604023801 mov word ptr[0204],0138
    18e4:0106 c70606020002 mov word ptr[0206],0200
    18e4:010c c70606020202 mov word ptr[0208],0202
    可见这两种格式是等效的。
    8)命名命令n(name),其格式为:
    -n filespecs[filespecs]
    命令把两个文件标识符格式化在cs:5ch和cs:6ch的两个文件控制块中,以便在其后用l或w命令把文件装入存盘。filespecs的格式可以是:
    [d:][path]filename[.ext]
    例如,
    -n myprog
    -l
    -
    可把文件myprog装入存储器。
    2004-5-26 09:44                 
    iceme
    正式会员


    积分 170
    发贴 305
    注册 2004-3-15
    来自 紫色星云
    状态 离线  9)装入命令(load),有两种功能。
    ·把磁盘上指定扇区范围的内容装入到存储器从指定地址开始的区域中。其格式为:
    -l[address[drive sector sector]
    ·装入指定文件,其格式为:
    -l[address]
    此命令装入已在cs:5ch中格式化了文件控制块所指定的文件。如未指定地址,则装入cs:0100开始的存储区中。
    10)写命令w(write),有两种功能。
    ·把数据写入磁盘的指定扇区。其格式为:
    -w address drive sector sector
    ·把数据写入指定的文件中。其格式为:
    -w[address]
    此命令把指定的存储区中的数据写入由cs:5ch处的文件控制块所指定的文件中。如未指定地址则数据从cs:0100开始。要写入文件的字节数应先放入bx和cx中。
    11)退出debug命令q(quit),其格式为:
    -q
    它退出debug,返回dos。本命令并无存盘功能,如需存盘应先使用w命令。
    问题:初学者问一个低级问题,执行debug-a后,如果有一行输入错误,如何更改这一行?
    回答:
    加入进行如下输入:
    d:\pwin95\desktop>debug
    -a
    2129:0100movax,200
    2129:0103movbx,200
    2129:0106movcx,200
    2129:0109
    此时,发现movbx,200一句错误,应为movbx,20,可以敲回车返回'-'状态,然后输入:
    -a103
    2129:0103movbx,20
    如果多或者少若干行,不必重新输入,可以用m命令移动后面的程序来去掉或者增加程序空间。
    如何除错和汇编你的第一个pc x86汇编语言程序呢?
    以下这些简单的解释可以让一个汇编语言新手使用debug:
    0)在使用时,如何快速获得debug的使用帮助呢。
    1)让我们开始工作吧,例如:显示bios的日期。
    2)在你的电脑的commang.com文件里搜寻'ibm'这几个字符。
    3) 一位十六进制数的运算。
    4) 检查 x86寄存器内容。
    5)我们来编写我们的第一个用机械语言编写的程序-打印一个字符。
    6) 我们现在用汇编语言指令来做和例5一样的事情。
    7)现在,我们不但要编写一个汇编程序,而且我们还要把它存盘。
    8) 现在,我们试一试查看一个已经编好的程序。
    9)你可以用debug的计算功能计算程序的长度。
    10)另一种显示在屏幕上字符串的方法。
    11)让我们试一试反复输出。
    12)我们现在把两个程序连接起来。
    13) 让我们逐步运行这个刚刚修补的程序。
    14)如果一开始的命令不是跳转命令,那么可能就要用这种方法了。
    以下所有的命令都是可以运行在win9x的ms-dos方式下的。
    进入ms-dos的方式有:
    [开始][程序][ms-dos方式]
    [开始][运行][打开]command[确定]
    或者你可以双击它:
    c:\windows\command.com
    0)在使用时,如何快速获得debug的使用帮助呢
    以下prompt>表示目录提示符:一般为:c:\windows\command\
    prompt> debug /?
    怎样?出错了吧。显示如下
    c:\windows>debug/?
    runs debug, a program testing and editing tool.
    debug[[drive:][path]filename[testfile-parameters]]
    [drive:][path]filename specifies the file you want to test.
    testfile-parameters specifies command-line information required by
    the file you want to test.
    after debug starts, type ? to display a list of debugging commands.
    因为错了所以它给你显示一些提示。留意到最后一句了吗?

    现在我们再来试一试:
    prompt> debug (注意, debug程序的命令是在一条横线'-'后出现的。)
    -? (下面的内容是按字母顺序排列的)
    (注意:note: don't type the dash or comments -- just the ?)
    显示如下,但是没有中文的哦,中文是我加上去的。

    汇编assemble a[address]
    比较compare c range address
    倾倒dump d[range]
    进入enter e address

      填充fill f range list
      进行go g[=address][addresses]
      十六进制hex h value1 value2
      输入input i port
      装载load l[address][drive][firstsector][number]
      移动move m range address
      命名name n[pathname][arglist]
      输出output o port byte
      进行proceed p[=address][number]
      离开quit q
      纪录register r[register]
      搜寻search s range list
      描述trace t[=address][value]
      反汇编unassemble u[range]
      写write w[address][drive][firstsector][number]
      分配扩展内存allocate expanded memory xa[#pages]
      释放扩展内存deallocate expanded memory xd[handle]
      map expanded memory pages xm[lpage][ppage][handle]
      display expanded memory status xs
      -q (这是退出debug回到dos状态)this quits out of debug, returning to the dos prompt)
      tested examples below walk the user thru the following debug examples:
      在下面的例子里读者必须明白以下几条debug命令。
      -d 显示一定范围内存的内容display the contents of an area of memory
      -q 退出debug程序quit the debug program
      -s 搜寻search for whatever
      -h 十六进制的运算hex arithmatic
      -r 显示或者改变一个或者多个寄存器的内容display or change the contents of one or more registers
      -e 输入数据进入内存,在一个详细的地址里enter data into memory, beginning at a specific location
      -g 运行现在在内存里的程序。go run the executable program in memory
      -u 反汇编,把我们不认识的机械代码变为我们可以认识汇编语言符号unassemble machine code into symbolic code
      -t 描述一条指令的用法。trace the contents of one instruction
      -p 进行或者执行一个相关的指令proceed, or execute a set of related instructions
      -a 编译,把汇编命令变为机械代码assemble symbolic instructions into machine code
      -n 命名一个程序name a program
      -w 把一个已经命名的程序写进磁盘write the named program onto disk
      -l 把程序装载进内存load the named program back into memory
      返回目录
      1)让我们开始工作吧,例如:显示bios的日期
      (以下prompt>表示目录提示符:一般为:c:\windows\command\)
      prompt> debug
      -d ffff:0006 l 8 (显示 ffffh, 偏移地址 6h, 长度 8 bytes)
      在作者的电脑上这里显示为 '1/10/96.'
      译者的电脑显示' ffff:0000 37 2f-30 36 2f 30 30 00 7/06/00.'相信作者的电脑里也是用这种格式显示的。这里显示出来的是使用者bios的日期,有兴趣的话可以重新开机看看,注意开机时的显示。
      -q (退出debug)


      2)在你的电脑的commang.com文件里搜寻'ibm'这几个字符
      下面的'c:\win95\'是根据每不电脑不同的。像译者的电脑里就是'c:\windows'
      prompt> debug c:\win95\command.com
      -s 0 l ffff 'ibm'(从0开始搜寻'ibm',搜寻ffffh多个单元格)
      -q (退出debug)
      以下是译者做的:
      c:\windows>debug c:\windows\command.com
      -s 0 l ffff 'ibm'
      -s 0 l ffff 'command'
      12a7:008d
      12a7:04f7
      12a7:3870
      12a7:38be
      12a7:38dd
      -s 0 l ffff 'path'
      12a7:38ad
      12a7:ccb7
      12a7:cf55
      -s 0 l ffff 'comspec'
      12a7:38d4
      12a7:3a4d
      12a7:ccc4
      -q
      c:\windows>
      (注意:搜寻是要区分大小写的)
      (你可以看到上面是没有找到'ibm'的, 可以试一试'path' , 'comspec' , 'command')
      (注意: 这种方法用在查找加密资料和已被删除的资料等方面时是十分有用的)
      返回目录
      3) 一位十六进制数的运算:
      prompt> debug
      -h 9 1 (加减两个十六进制的数, 9h+1h=ah & 9h-1h=8h)
      结果是显示: 000a 0008
      -q (退出debug)
      c:\windows>debug
      -h 9 1
      000a 0008
      -q
      c:\windows>
      返回目录
      4) 检查x86寄存器内容
      prompt> debug
      -r (显示x86寄存器内容)
      -q (退出debug)
      c:\windows>debug
      -r
      ax=0000 bx=0000 cx=0000 dx=0000 sp=ffee bp=0000 si=0000 di=0000
      ds=127c es=127c ss=127c cs=127c ip=0100 nv up ei pl nz na po nc
      127c:0100 043c add al,3c
      -q

TOP

回复:电脑应用文章(小长城)--系统相关

【Debug-PC之开山老祖  】 :
debug 原意是杀虫子。这里是机器调试工具。   
  其实,debug的由来,还有一则趣闻,在早期美国的一计算机房中,科学家正在紧张的工作。同时,许多台大型的计算机也在不停的运行着。大概是由于,机器过热,引来许的小虫子,以至于,计算机无法正常运行。科学们,只好停下来,捉虫子...虫子捉完了,计算机运行也正常了,后来,这个名词就沿用至今了....   
虽然,现在好的软件越来越多了,但是有些,我们只需动手,用debug就可解决,且快而好!接下来,我们就一起学习debug在各方面的运用吧!(在杀毒、加解密、系统...)下面我和大家一起学习一些,debug的用法,虽然,现在好的软件越来越多了,但是有些,我们只需动手,用debug就可解决,且快而好!   
debug常用命令集   
   
名称 解释 格式   
a (assemble) 逐行汇编 a[address]  
c (compare) 比较两内存块 c range address   
d (dump) 内存16进制显示 d[address]或 d[range]   
e (enter) 修改内存字节 e address
      
    f (fin) 预置一段内存 f range list   
    g (go) 执行程序 g[=address][address...]  
    h (hexavithmetic) 制算术运算 h value value   
    i (input) 从指定端口地址输入 i pataddress   
    l (load) 读盘 l[address[driver seetor>   
    m (move) 内存块传送 m range address   
    n (name) 置文件名  n filespec[filespec...]  
    o (output) 从指定端口地址输出 o portadress byte   
    q (quit) 结束  q   
    r (register) 显示和修改寄存器 r[register name]  
    s (search) 查找字节串  s range list   
    t (trace) 跟踪执行  t[=address][value]  
    u (unassemble) 反汇编 u[address ]或range   
    w (write) 存盘  w[address[driver sector secnum>   
    ? 联机帮助 ?   
    debug小汇编a命令   
    debug小汇编a命令是一个很有用的功能,许多的小程序都要他来做。   
    编一些小程序比汇编要来得方便,快洁。   
    在debug中,中断是非常有用的,首先,让我们先了解一下中断。   
      所谓中断,其实,就是,当你做某事时,有人过来找你有其他事,你先放下手中的事(计算机中,称为保护现场)   
    ,再去与叫你的那个人办事去,等完了,你又回,接着做刚才的事。这是个很通俗的讲法。   
      计算机在运行时,也会出现这种情况,我们叫之中断。   
      下面是他的一些常用中断向量的入口值详解:(记住哦,很用的...呵呵)   

    ibm pc 中断 int10   
    ooh 屏幕方式设置   
    入口:ah=0,al=显示方式代码(0--6)   
       0:40*25 黑白     
       1:40*25 彩色   
       2:80*25 黑白   
       3:80*25 彩色文本   
       4:320*200 彩色   
       5:320*200 黑白   
       6:640*200 黑白图形模式   
       7:80*25 单色字符(单色显示器)    
    0bh 色彩设置   
    入口:ah=0b,bl=0 设背景色,bh=0--15  bl=1 设调色码,bh=0--1   
    0ch 写图形点   
    入口:ah=0c,cx:dx=列号:行号,al=颜色   
    odh 读图形点   
    入口:ah=0d,cx:dx=列号:行号   
    返回:al=颜色   
    0eh 在当前页、当前光标处写字符   
    入口:ah=0e,al=字符的ascii码,bl=前景色   
    ofh 显示器状态   
    入口:ah=0f   
    返回:al=当前显示器方式,ah=屏幕列数,bh=当前页号   
    01h 光标设置   
    入口:ah=1,ch=光标起始行号(00--0c),cl=光标结束行号(00--0c)   
    注:ch > cl   
    02h 光标定位   
    入口:ah=2,bh=页号,dh:dl=起始行:列   
    03h 读光标位置   
    入口:ah=3,bh=页号。   
    返回:dh:dl=起始行:列   
    06h 窗口上卷   
    入品:ah=6,al=窗口上卷行数,ch:cl-dh:dl 窗口坐标   
    注:al=0 卷动整个窗口   
    07h 窗口下卷   
    入口:ah=7,al=窗口下卷行数,ch:cl-dh:dl 窗口坐标   
    08h 读当前光标处字符和属性   
    入口:ah=8,bh=页号。   
    返回:ah:al=字符的颜色:字符的ascii码   
    注:颜色代码见下对照表   
    09h:在当前光标处写字符和属性   
    注:光标不下移   
    入口:ah=9,bh=页号,bl:al=字符的颜色:字符的ascii码,cx=重复次数   
    1 2 3 4 5 6 7 8   
    bl r g b i r g b   
    闪烁 字符底色 加亮 字符颜色   
    中断向量号表   
    中断号 解释 中断号 解释   
    0 除数为0错 19 引导装入程序   
    1 音步中断 1a 日时调用   
    2 不可屏蔽中断nmi 1b 键盘阻断时得到控制权   
    3 断电中断(cch) 1c