Windows下查看端口被程序占用和释放的方法

 

有时安装程序时,会出现XX端口被占用的情况,可以通过CMD命令查看什么程序占用
1. netstat -ano 查看相应端口对应程序的PID
例如:
C:\>netstat -ano
Active Connections
Proto Local Address          Foreign Address        State           PID
TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       1760
TCP    0.0.0.0:445            0.0.0.0:0              LISTENING       4
TCP    0.0.0.0:2967           0.0.0.0:0              LISTENING       660
TCP    0.0.0.0:3389           0.0.0.0:0              LISTENING       1712
TCP    0.0.0.0:3934           0.0.0.0:0              LISTENING       728
TCP    0.0.0.0:10700          0.0.0.0:0              LISTENING       4920
TCP    10.186.20.116:21       0.0.0.0:0              LISTENING       272
TCP    10.186.20.116:80       0.0.0.0:0              LISTENING       4516

可查看到占用21端口的进程PID为272
2. tasklist查看相应的PID号的程序
   tasklist /fi "pid eq PID"
例,
C:\tasklist /fi "pid eq 272"
图像名                       PID 会话名           会话#       内存使用
========================= ====== ================ ======== ============
ServUDaemon.exe              272 Console                 0      3,980 K
3. 如果要释放该端口 用tskill PID 命令
例,如要释放21端口
tskill 272

 
如果想让自己的应用程序在2003服务器登录前运行,除了写底层的vxd驱动外,似乎只能做成系统服务。而默认安装好的Windows 2003又没有提供制作成系统工具的服务器。如果强行修改注册表加入,很有可能启动失败。怎么办,当然是Google一下。
原来微软提供了一个名为Windows 2003 Resource Kits的包,里面有各式各样奇奇怪怪的小工具,其中有两个就是用来将普通程序变成系统服务器的。一个称为instsrv.exe,另一个唤作srvany.exe。
下面开工,先装好资源包。假设我们的程序名为chatServer.exe,我需要它成为系统服务器,在系统启动但是未登录的情况下运行……
控制台下键入命令
1
instsrv chatServer d:\chat\chatServer.exe
将其注册为系统服务,进入管理工具的服务中查看,多了一项chatServer。尝试启动,如果你能正常启动它,OK。如果启动失败,则表明我们的程序不太适应系统服务这种东西。没关系,微软提供了一个srvany.exe的东东,从名字就看得出来,它可以将任何程序变成系统服务。
1.进入注册表,找到HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\chatServer,把ImagePath的内容改为指向srvany.exe,如“d:\tools\srvany.exe”
2.新建Parameters项目,添加application子键,内容为应用程序的路径,如:d:\chat\chatServer.exe
3.回到进入管理工具的服务中,启动chatServer, All done。
4.别忘了将该服务器改为自启动。
如果你仍然搞不定的话,推荐一个专干这个事情的软件Firedaemon.com,咱也是失败了很多次,后来用这个软件搞定的,囧。不过公司的服务器都是Linux和FreeBSD了,哪天有钱买服务器后CoCo也把自己的服务器搞成Linux,windows的服务器实在是太不好用了……
 
下载上面的工具包安装后,再在 Command Shell窗口执行上述命令即可。
 
小知识 什么是服务
  服务是一种应用程序类型,它在后台运行。要管理系统服务,请运行services.msc,打开“服务”对话窗口,这里可以看到当前系统中的所有服务。双击某一服务,在弹出的“属性”对话框的“常规”选项页中的“服务状态”栏可以看到此服务当前状态。单击“启动类型”下拉菜单,可以将该服务设置为自动启动、手动启动或禁用。
    用instsrv.exe程序设置成服务启动
  Windows的“服务”工具是不能添加/删除服务的,但可以利用Windows提供的资源工具包中的Instsrv.exe和Srvany.exe来实现。其中,Instsrv.exe可以给系统安装和删除服务,Srvany.exe可以让程序以服务的方式运行。
  ★设置方法
  第一步:报户口——注册服务名称
  这里就以建立一个名为explorer的服务为例来说明,首先将Instsrv.exe和Srvany.exe存放到一个比较方便的地方,建议放到系统安装目录中(笔者的Windows XP安装目录为D:\Windows)。运行cmd.exe,进入“命令提示符”窗口,执行命令:cd d:\Windows,进入系统安装目录。运行命令:
  Instsrv explorer d:\Windows\srvany.exe
  好了,这条命令的成功运行,已经在系统中注册了一个名叫explorer的服务,快到“服务”中看看一下检验检验吧!
  小提示
  ★注册服务:instsrv :这里的可任意取名,前面必须带上该文件的绝对路径,如:D:\Windows\srvany.exe。
  ★删除服务:instsrv remove
  第二步:找关联
  要让explorer服务正常运行,还必须在注册表中指定该服务对应的应用程序。运行Regedit.exe,打开“注册表编辑器”,依次展开如下子键:[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services],在该子键下找到并右击explorer(对应前面建立的服务名),选择“新建”下的“项”,将其命名为Parameters。单击选定它,在右侧窗口中新建一个名为Application的字符串值,将其数值数据设置为explorer服务对应的应用程序绝对路径,比如:d:\Windows\gboor.exe。接着再新建两个字符串值:AppDirectory和AppParameters,AppDirectory指定程序所在的目录,AppParameters指明程序运行的参数(注意:可以不用设值),如图1所示,最后关闭注册表编辑器。
点击放大此图片
  接下来打开“服务”窗口,找到刚添加的explorer服务,打开其属性对话框,单击切换到“登录”选项页,在“登录身份”中选中“本地系统账户”,如图2,如果不想让服务在运行的时候弹出状态窗口,请不要勾选“允许服务与桌面交互”复选项,单击“确定”返回。至此,explorer服务已经全部配置好了。
  最后,右击该服务,选择“启动”,这样该程序就会启动,而且以后也会在系统启动时自动以服务形式运行!

解决"ActiveX部件不能创建对象"错误

asp中,出现下列错误提示:

Microsoft VBscrīpt 运行时错误 错误 '800a01ad'
ActiveX 部件不能创建对象

这个错误是asp组件未注册,而导致。解决方法如下:
1、如果是你自己开发的组件,请使用
   regsvr32 路径/组件.dll 进行注册。

2、可能是IIS自带的常用组件,由于系统问题、或杀毒等原因,导致组件出现问题,则请用下列两个cmd命令试一下。

 

regsvr32 scrrun.dll

重新注册FSO文件管理。

regsvr32 "C:\Program Files\Common Files\System\ado\msado15.dll"

重新注册ADODB.Stream组件

如果上述两法仍未解决,则可能是其它原因,不仿试试下面bat批处理代码。将下面代码复制到记事本,另存为 cmd.bat,双击运行就可以了。
 

echo 正在修复,这个过程可能需要几分钟,请稍候……
rundll32.exe advpack.dll /DelNodeRunDLL32 %systemroot%\System32\dacui.dll
rundll32.exe advpack.dll /DelNodeRunDLL32 %systemroot%\Catroot\icatalog.mdb
regsvr32 /s comcat.dll
regsvr32 /s asctrls.ocx
regsvr32 /s oleaut32.dll
regsvr32 /s shdocvw.dll /I
regsvr32 /s shdocvw.dll
regsvr32 /s browseui.dll
regsvr32 /s browseui.dll /I
regsvr32 /s msrating.dll
regsvr32 /s mlang.dll
regsvr32 /s hlink.dll
regsvr32 /s mshtml.dll
regsvr32 /s mshtmled.dll
regsvr32 /s urlmon.dll
regsvr32 /s plugin.ocx
regsvr32 /s sendmail.dll
regsvr32 /s mshtml.dll /i
regsvr32 /s scrobj.dll
regsvr32 /s corpol.dll
regsvr32 /s jscrīpt.dll
regsvr32 /s msxml.dll
regsvr32 /s imgutil.dll
regsvr32 /s cryptext.dll
regsvr32 /s inseng.dll
regsvr32 /s iesetup.dll /i
regsvr32 /s cryptdlg.dll
regsvr32 /s actxprxy.dll
regsvr32 /s dispex.dll
regsvr32 /s occache.dll
regsvr32 /s iepeers.dll
regsvr32 /s urlmon.dll /i
regsvr32 /s cdfview.dll
regsvr32 /s webcheck.dll
regsvr32 /s mobsync.dll
regsvr32 /s pngfilt.dll
regsvr32 /s licmgr10.dll
regsvr32 /s hhctrl.ocx
regsvr32 /s inetcfg.dll
regsvr32 /s trialoc.dll
regsvr32 /s tdc.ocx
regsvr32 /s MSR2C.DLL
regsvr32 /s msident.dll
regsvr32 /s msieftp.dll
regsvr32 /s xmsconf.ocx
regsvr32 /s ils.dll
regsvr32 /s msoeacct.dll
regsvr32 /s wab32.dll
regsvr32 /s wabimp.dll
regsvr32 /s wabfind.dll
regsvr32 /s oemiglib.dll
regsvr32 /s directdb.dll
regsvr32 /s inetcomm.dll
regsvr32 /s msoe.dll
regsvr32 /s oeimport.dll
regsvr32 /s msdxm.ocx
regsvr32 /s dxmasf.dll
regsvr32 /s laprxy.dll
regsvr32 /s l3codecx.ax
regsvr32 /s acelpdec.ax
regsvr32 /s mpg4ds32.ax
regsvr32 /s danim.dll
regsvr32 /s Daxctle.ocx
regsvr32 /s lmrt.dll
regsvr32 /s datime.dll
regsvr32 /s dxtrans.dll
regsvr32 /s dxtmsft.dll
regsvr32 /s wshom.ocx
regsvr32 /s wshext.dll
regsvr32 /s vbscrīpt.dll
regsvr32 /s scrrun.dll mstinit.exe /setup
regsvr32 /s msnsspc.dll /SspcCreateSspiReg
regsvr32 /s msapsspc.dll /SspcCreateSspiReg
echo.
echo.
echo 修复成功!任意键退出!
pause>nul

案例:

以下是无组件上传upload.asp页面的部分代码:

  Set Form = Server.CreateObject ("scrīpting.Dictionary")
  Form.CompareMode = 1
  Set File = Server.CreateObject ("scrīpting.Dictionary")
  File.CompareMode = 1
  'A处 
  Set tStream = Server.CreateObject ("ADODB.Stream")
  Set ōUpFileStream = Server.CreateObject ("ADODB.Stream")
  'B处

整个程序以前均可用,但后来由于计算机染毒,重装系统并杀毒之后,发现这个页面程序出现
 

Microsoft VBscrīpt 运行时错误 错误 '800a01ad'
ActiveX 部件不能创建对象

错误,使用
 

   response.write "zuoyefeng调试"
   response.end


放在A处和B处调试,发现是
 Set tStream = Server.CreateObject ("ADODB.Stream")
这块的问题。可见,是组件的问题,于是使用上面命令重注了一上,OK,问题解决了。
 

Picasa相册的HOSTS文件

上传了一些以前的照片到Google的Picasa网络相册发现有一些图片无法显示,通过修改HOSTS的方法才能正常显示,修改的方法如下:

203.208.39.104 lh1.ggpht.com
203.208.39.104 lh2.ggpht.com
203.208.39.104 lh3.ggpht.com
203.208.39.104 lh4.ggpht.com
203.208.39.104 lh5.ggpht.com
203.208.39.104 lh6.ggpht.com

如果不行的话,使用203.208.39.99这个IP也可以。

hosts文件位于C:\WINDOWS\system32\drivers\etc文件夹中。

加载安装组件时遇到问题

删除/升级 VS2008时出现:“加载安装组件时遇到问题。”的解决办法

如果你已经安装Windows Installer 3.1,但还不能删除VS2008,是因为VS 2008打了补丁,导致没法删除,可以在“添加/删除程序”面板中,选中上方的“显示更新”,然后找到VS 2008,下面多多少少会挂了几个更新或者补丁,全部先删掉,然后再删VS 2008,熟悉的维护界面又回来了