Windows XP Professional 共用印表機,超過 10 台電腦連線後,新連線出現:「超過伺服器的最大連線數」或「無法連線,已達最大連線數」錯誤。先連線的使用者列印完成後,Session 不自動釋放,導致連線槽位耗盡。
XP Professional (工作站版) 內建 SMB 連線上限 = 10 (同時連線的不同電腦數),包含檔案共用、印表機共用、IPC$、命名管道等所有 SMB 連線總和。Server 版無此限制。
delay.vbsWScript.Sleep 600000 ' 600,000 毫秒 = 10 分鐘
儲存為 C:\Scripts\delay.vbs (路徑自訂)。
clean_sessions.bat@echo off
:loop
net session /delete /y
cscript //nologo "C:\Scripts\delay.vbs"
goto loop
儲存為 C:\Scripts\clean_sessions.bat。
clean_sessions.bat 捷徑放入 C:\Documents and Settings\All Users\Start Menu\Programs\Startup。reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v CleanSessions /t REG_SZ /d "C:\Scripts\clean_sessions.bat" /f。clean_sessions.bat,最高權限。| 指令 | 參數 | 作用 |
|---|---|---|
net session | /delete /y | 刪除所有對本機的 SMB Session,/y 免確認 |
cscript | //nologo | 以 WSH 執行 .vbs,不顯示版權資訊 |
WScript.Sleep | 600000 | 暫停 10 分鐘 (毫秒),避免 CPU 佔用 100% |
start /min cmd /c clean_sessions.bat。>>"C:\Logs\clean_session.log" echo %date% %time% cleaned 追蹤執行情況。net session 列出 Session,解析閒置時間 (需更複雜腳本/工具),再選擇性刪除。| 方案 | 成本 | 效果 | 備註 |
|---|---|---|---|
| 升級為 Windows Server / Linux (Samba/CUPS) | 高 | 徹底解決,無連線數限制 | 企業環境首選 |
| 網路印表機 (內建網卡/列印伺服器) | 中 | 直接 IP 列印,不經 XP 共用 | 現代標準做法 |
| 修改登錄 MaxMpxCt / MaxWorkItems (不可靠) | 0 | 理論上可調大但 XP 核心硬性限制 10,實測多無效 | 不建議 |
| 第三方列印管理軟體 (Print Manager Plus 等) | 低~中 | 隊列管理、配額、釋放 | 需評估相容性 |