關閉佔用特定埠的程序的方法
阿新 • • 發佈:2019-02-15
使用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。