1. 程式人生 > >關閉佔用特定埠的程序的方法

關閉佔用特定埠的程序的方法

使用ftp上傳檔案失敗,究其原因是由於ftp server程式使用的控制埠21被佔用,所以在啟動ftp server程式之前做如下工作:

1.檢查防火牆是否關閉;

2.檢查ftp控制埠21是否被佔用。

實現方法:

1.在Windows XP環境下,通過程式碼查詢登錄檔:SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile下的EnableFirewall的值,1防火牆開啟,0防火牆關閉。如果防火牆開啟,提示使用者關閉防火牆。

2.通過呼叫批處理檔案,關閉佔用埠21的程序。

批處理檔案kill21.bat的內容如下:

@echo off
setlocal enabledelayedexpansion
for /f "delims=  tokens=1" %%i in ('netstat -aon ^| findstr "21"') do (
set a=%%i
goto js
)
:js
taskkill /pid "!a:~71,5!"

如果單存呼叫批處理檔案,會顯示命令提示視窗的黑框,為了不顯示提示串列埠,需要使用run.vbs檔案呼叫批處理檔案kill21.bat,run.vbs檔案內容如下:

Set ws = CreateObject("Wscript.Shell")     
ws.run "cmd /c Kill21.bat",0

在程式碼中,ShellExecute(NULL,L"open",L"run.vbs" ,NULL, NULL, SW_SHOWNORMAL);呼叫run.vbs檔案,就不會顯示命令列視窗。需要包含標頭檔案shellapi.h。