Print Spooler 服务无法启动,先运行下 PowerShell 一键自动化操作,清空 PRINTERS 文件夹,重置 Spooler 的依赖项为 RPCSS。
以管理员身份运行 PowerShell,直接复制粘贴整段命令执行(无需换行),执行后无效可跳过下方第一、二步:
Stop-Service -Name Spooler -Force; Start-Sleep -Seconds 2; Remove-Item -Path "$env:WINDIR\System32\spool\PRINTERS\*" -Force -ErrorAction SilentlyContinue; reg add "HKLM\SYSTEM\CurrentControlSet\Services\Spooler" /v DependOnService /t REG_MULTI_SZ /d RPCSS /f | Out-Null; Set-Service -Name Spooler -StartupType Automatic; Start-Service -Name RpcSs; Start-Service -Name DcomLaunch; Start-Service -Name http -ErrorAction SilentlyContinue; Start-Service -Name Spooler
以管理员身份运行 CMD,依次执行以下命令:
net stop spooler del c:\windows\system32\spool\printers\*.* /Q /F net start spooler
方法1(CMD 命令)
管理员身份运行 CMD,执行命令:
sc config spooler depend=RPCSS
方法2(注册表修改)
定位注册表路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Spooler
找到右侧 DependOnService 项,双击编辑
仅保留单行数值:RPCSS,删除其他内容
1、打开路径:C:\Windows\System32\spool
2、右键该文件夹 → 属性 → 安全 → 高级
3、确保 SYSTEM 和 Administrators 组均拥有完全控制权限
管理员身份运行 CMD,执行命令:
sc config Spooler Binpath=“%SystemRoot%\System32\spoolsv.exe”
1、打开 控制面板 → 程序和功能 → 启用或关闭 Windows 功能
2、取消勾选”打印和文件服务“,点击确定,重启电脑
3、重启后重复上述步骤,勾选”打印和文件服务“,再次点击确定并重启
管理员身份运行 CMD,依次执行以下命令(执行时间较长,请勿中断):
# 第一步:DISM 修复系统映像
DISM /Online /Cleanup-Image /RestoreHealth
# 第二步:SFC 修复受保护的系统文件
sfc /scannow
Win11
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Spooler] "DependOnService"=hex(7):52,00,50,00,43,00,53,00,53,00,00,00,68,00,74,00,74,00,\ 70,00,00,00,00,00 "Description"="@%systemroot%\\system32\\spoolsv.exe,-2" "DisplayName"="@%systemroot%\\system32\\spoolsv.exe,-1" "ErrorControl"=dword:00000001 "FailureActions"=hex:10,0e,00,00,00,00,00,00,00,00,00,00,03,00,00,00,14,00,00,\ 00,01,00,00,00,88,13,00,00,01,00,00,00,88,13,00,00,00,00,00,00,00,00,00,00 "Group"="SpoolerGroup" "ImagePath"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\ 74,00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,\ 00,70,00,6f,00,6f,00,6c,00,73,00,76,00,2e,00,65,00,78,00,65,00,00,00 "ObjectName"="LocalSystem" "RequiredPrivileges"=hex(7):53,00,65,00,54,00,63,00,62,00,50,00,72,00,69,00,76,\ 00,69,00,6c,00,65,00,67,00,65,00,00,00,53,00,65,00,49,00,6d,00,70,00,65,00,\ 72,00,73,00,6f,00,6e,00,61,00,74,00,65,00,50,00,72,00,69,00,76,00,69,00,6c,\ 00,65,00,67,00,65,00,00,00,53,00,65,00,41,00,75,00,64,00,69,00,74,00,50,00,\ 72,00,69,00,76,00,69,00,6c,00,65,00,67,00,65,00,00,00,53,00,65,00,43,00,68,\ 00,61,00,6e,00,67,00,65,00,4e,00,6f,00,74,00,69,00,66,00,79,00,50,00,72,00,\ 69,00,76,00,69,00,6c,00,65,00,67,00,65,00,00,00,53,00,65,00,41,00,73,00,73,\ 00,69,00,67,00,6e,00,50,00,72,00,69,00,6d,00,61,00,72,00,79,00,54,00,6f,00,\ 6b,00,65,00,6e,00,50,00,72,00,69,00,76,00,69,00,6c,00,65,00,67,00,65,00,00,\ 00,53,00,65,00,4c,00,6f,00,61,00,64,00,44,00,72,00,69,00,76,00,65,00,72,00,\ 50,00,72,00,69,00,76,00,69,00,6c,00,65,00,67,00,65,00,00,00,00,00 "ServiceSidType"=dword:00000001 "Start"=dword:00000002 "Type"=dword:00000110 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Spooler\Performance] "Close"="PerfClose" "Collect"="PerfCollect" "Collect Timeout"=dword:000007d0 "Library"="C:\\Windows\\System32\\winspool.drv" "Object List"="1450" "Open"="PerfOpen" "Open Timeout"=dword:00000fa0 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Spooler\Security] "Security"=hex:01,00,14,80,78,00,00,00,84,00,00,00,14,00,00,00,30,00,00,00,02,\ 00,1c,00,01,00,00,00,02,80,14,00,ff,01,0f,00,01,01,00,00,00,00,00,01,00,00,\ 00,00,02,00,48,00,03,00,00,00,00,00,14,00,8d,01,02,00,01,01,00,00,00,00,00,\ 05,0b,00,00,00,00,00,18,00,ff,01,0f,00,01,02,00,00,00,00,00,05,20,00,00,00,\ 20,02,00,00,00,00,14,00,fd,01,02,00,01,01,00,00,00,00,00,05,12,00,00,00,01,\ 01,00,00,00,00,00,05,12,00,00,00,01,01,00,00,00,00,00,05,12,00,00,00
Win10
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Spooler] "DependOnService"=hex(7):52,00,50,00,43,00,53,00,53,00,00,00,68,00,74,00,74,00,\ 70,00,00,00,00,00 "Description"="@%systemroot%\\system32\\spoolsv.exe,-2" "DisplayName"="Print Spooler" "ErrorControl"=dword:00000001 "FailureActions"=hex:10,0e,00,00,00,00,00,00,00,00,00,00,03,00,00,00,14,00,00,\ 00,00,00,00,00,88,13,00,00,00,00,00,00,88,13,00,00,00,00,00,00,00,00,00,00 "Group"="SpoolerGroup" "ImagePath"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\ 74,00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,\ 00,70,00,6f,00,6f,00,6c,00,73,00,76,00,2e,00,65,00,78,00,65,00,00,00 "ObjectName"="LocalSystem" "RequiredPrivileges"=hex(7):53,00,65,00,54,00,63,00,62,00,50,00,72,00,69,00,76,\ 00,69,00,6c,00,65,00,67,00,65,00,00,00,53,00,65,00,49,00,6d,00,70,00,65,00,\ 72,00,73,00,6f,00,6e,00,61,00,74,00,65,00,50,00,72,00,69,00,76,00,69,00,6c,\ 00,65,00,67,00,65,00,00,00,53,00,65,00,41,00,75,00,64,00,69,00,74,00,50,00,\ 72,00,69,00,76,00,69,00,6c,00,65,00,67,00,65,00,00,00,53,00,65,00,43,00,68,\ 00,61,00,6e,00,67,00,65,00,4e,00,6f,00,74,00,69,00,66,00,79,00,50,00,72,00,\ 69,00,76,00,69,00,6c,00,65,00,67,00,65,00,00,00,53,00,65,00,41,00,73,00,73,\ 00,69,00,67,00,6e,00,50,00,72,00,69,00,6d,00,61,00,72,00,79,00,54,00,6f,00,\ 6b,00,65,00,6e,00,50,00,72,00,69,00,76,00,69,00,6c,00,65,00,67,00,65,00,00,\ 00,53,00,65,00,4c,00,6f,00,61,00,64,00,44,00,72,00,69,00,76,00,65,00,72,00,\ 50,00,72,00,69,00,76,00,69,00,6c,00,65,00,67,00,65,00,00,00,00,00 "ServiceSidType"=dword:00000001 "Start"=dword:00000002 "Type"=dword:00000110 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Spooler\Performance] "Close"="PerfClose" "Collect"="PerfCollect" "Collect Timeout"=dword:000007d0 "Library"="C:\\Windows\\System32\\winspool.drv" "Object List"="1450" "Open"="PerfOpen" "Open Timeout"=dword:00000fa0 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Spooler\Security] "Security"=hex:01,00,14,80,78,00,00,00,84,00,00,00,14,00,00,00,30,00,00,00,02,\ 00,1c,00,01,00,00,00,02,80,14,00,ff,01,0f,00,01,01,00,00,00,00,00,01,00,00,\ 00,00,02,00,48,00,03,00,00,00,00,00,14,00,8d,01,02,00,01,01,00,00,00,00,00,\ 05,0b,00,00,00,00,00,18,00,ff,01,0f,00,01,02,00,00,00,00,00,05,20,00,00,00,\ 20,02,00,00,00,00,14,00,fd,01,02,00,01,01,00,00,00,00,00,05,12,00,00,00,01,\ 01,00,00,00,00,00,05,12,00,00,00,01,01,00,00,00,00,00,05,12,00,00,00
一顿操作猛如虎,结果还是二百五;小帅电脑系统为最新版 Win11 25H2 26200.7623,在虚拟机上安装相同版本,正常使用无问题,可能是更新导致的BUG。
提取 System32 文件夹中与打印服务相关的6个文件:
win32spl.dll spoolsv.exe winspool.drv spoolss.dll localspl.dll prntvpt.dll
逐一校验这几个文件MD5等值,一一对比无任何差别;全部替换后,还是同样情况,正要使用重装系统大法了。
提取DNPU当前系统 Win10 21H2 19044.2728 的6个文件,替换后立马转世重生,一切恢复正常。
对于不会使用PE的小伙伴,我们写好了批处理,只需提取出来,放在同一目录,管理员运行即可。
同时,你如果要使用我们提取出来的文件(含BAT批处理和Win11 25H2、Win10 21H2的6个打印相关文件),我们也打好包,上传到了网盘,请关注公众号“电脑远程维修”在公众号对话框中发送“打印机”即可获取到"Print Spooler修复.zip"的下载地址。
下面是批处理代码,可自行复制创建,6个文件可在别的电脑提取。
1-修复+替换.bat
添加了上面方法一和二的“清空 PRINTERS 打印队列文件夹”,“重置打印服务依赖项为 RPCSS”,如成功,则不替换文件。
@Echo off
Color A
Title Print spooler 服务修复 by:DNPU.COM
:: 管理员权限检测
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (
Echo 请以管理员身份运行本脚本!
pause >nul
exit /b
)
:: 定义服务名称
set "SERVICE_NAME=spooler"
cls
Echo ==============================================
Echo 打印服务修复工具 by:DNPU.COM
Echo ==============================================
Echo 模式1:逐个替换文件(成功即停)
Echo 模式2:一键全替换文件
Echo ==============================================
set /p "CHOICE= 请输入模式编号(1/2),按回车确认:"
if /i "%CHOICE%"=="1" goto MODE1
if /i "%CHOICE%"=="2" goto MODE2
Echo 输入错误!请重新运行脚本并输入 1 或 2
pause >nul
exit /b
:: -------------------------- 模式1:逐个替换+检测 --------------------------
:MODE1
cls
Echo ==========================================================================
Echo 【模式1】逐个替换文件(成功即停)
Echo ==========================================================================
timeout /t 2 /nobreak >nul
:: 前置修复步骤
call :PRE_FIX
:: 前置修复后测试启动
Echo --------------------------------------------------------------------------
Echo 4. 前置修复后测试启动打印服务
net start %SERVICE_NAME%
set "PRE_FIX_RESULT=%errorlevel%"
net stop %SERVICE_NAME% /y >nul 2>&1
if %PRE_FIX_RESULT% equ 0 (
Echo --------------------------------------------------------------------------
Echo 前置修复后服务启动成功!无需替换任何文件!
goto FINISH_SUCCESS
) else (
Echo 前置修复后服务启动失败,将逐个替换核心文件...
timeout /t 3 /nobreak >nul
)
:: TOP1 win32spl.dll
Echo --------------------------------------------------------------------------
Echo 5. 替换核心文件 win32spl.dll
call :REPLACE_FILE "win32spl.dll"
call :TEST_START
if %FIX_RESULT% equ 0 goto FINISH_SUCCESS
:: TOP2 spoolsv.exe
Echo --------------------------------------------------------------------------
Echo 6. 替换服务主程序 spoolsv.exe
call :REPLACE_FILE "spoolsv.exe"
call :TEST_START
if %FIX_RESULT% equ 0 goto FINISH_SUCCESS
:: TOP3 winspool.drv
Echo --------------------------------------------------------------------------
Echo 7. 替换打印驱动文件 winspool.drv
call :REPLACE_FILE "winspool.drv"
call :TEST_START
if %FIX_RESULT% equ 0 goto FINISH_SUCCESS
:: TOP4 spoolss.dll
Echo --------------------------------------------------------------------------
Echo 8. 替换打印池子系统文件 spoolss.dll
call :REPLACE_FILE "spoolss.dll"
call :TEST_START
if %FIX_RESULT% equ 0 goto FINISH_SUCCESS
:: TOP5 localspl.dll
Echo --------------------------------------------------------------------------
Echo 9. 替换本地打印提供者文件 localspl.dll
call :REPLACE_FILE "localspl.dll"
call :TEST_START
if %FIX_RESULT% equ 0 goto FINISH_SUCCESS
:: TOP6 prntvpt.dll
Echo --------------------------------------------------------------------------
Echo 10. 替换打印虚拟化文件 prntvpt.dll
call :REPLACE_FILE "prntvpt.dll"
call :TEST_START
if %FIX_RESULT% equ 0 goto FINISH_SUCCESS
:: 所有文件替换失败
goto FINISH_FAIL
:: -------------------------- 模式2:一键全替换 --------------------------
:MODE2
cls
Echo ==========================================================================
Echo 【模式2】一键全替换文件
Echo ==========================================================================
timeout /t 2 /nobreak >nul
:: 前置修复步骤
call :PRE_FIX
:: 前置修复后测试启动
Echo --------------------------------------------------------------------------
Echo 4. 前置修复后测试启动打印服务
net start %SERVICE_NAME%
set "PRE_FIX_RESULT=%errorlevel%"
net stop %SERVICE_NAME% /y >nul 2>&1
if %PRE_FIX_RESULT% equ 0 (
Echo --------------------------------------------------------------------------
Echo 前置修复后服务启动成功!无需替换任何文件!
goto FINISH_SUCCESS
) else (
Echo 前置修复后服务启动失败,将一键替换所有核心文件...
timeout /t 3 /nobreak >nul
)
:: 一键批量替换所有文件(按故障率从高到低)
Echo --------------------------------------------------------------------------
Echo 5. 开始一键全替换所有核心文件
call :REPLACE_FILE "win32spl.dll"
call :REPLACE_FILE "spoolsv.exe"
call :REPLACE_FILE "winspool.drv"
call :REPLACE_FILE "spoolss.dll"
call :REPLACE_FILE "localspl.dll"
call :REPLACE_FILE "prntvpt.dll"
Echo 所有文件一键替换完成!
:: 一键替换后测试启动
Echo --------------------------------------------------------------------------
Echo 6. 一键替换后测试启动打印服务
net start %SERVICE_NAME%
set "FIX_RESULT=%errorlevel%"
if %FIX_RESULT% equ 0 (
goto FINISH_SUCCESS
) else (
goto FINISH_FAIL
)
:: -------------------------- 子程序:前置修复 --------------------------
:PRE_FIX
Echo --------------------------------------------------------------------------
Echo 1. 停止打印服务
net stop %SERVICE_NAME% /y >nul 2>&1
Echo 打印服务已停止(无论当前状态)
timeout /t 3 /nobreak >nul
Echo --------------------------------------------------------------------------
Echo 2. 清空 PRINTERS 打印队列文件夹
del c:\windows\system32\spool\printers\*.* /Q /F >nul 2>&1
if %errorlevel% equ 0 (
Echo 打印队列文件夹清空成功!
) else (
Echo 打印队列文件夹无文件或清空失败(不影响后续操作)
)
Echo --------------------------------------------------------------------------
Echo 3. 重置打印服务依赖项为 RPCSS
sc config spooler depend=RPCSS >nul 2>&1
if %errorlevel% equ 0 (
Echo 服务依赖项重置成功!
) else (
Echo 服务依赖项重置失败,请手动检查!
)
timeout /t 3 /nobreak >nul
goto :EOF
:: -------------------------- 子程序:替换单个文件 --------------------------
:REPLACE_FILE
set "FILE_NAME=%~1"
Takeown /A /F C:\Windows\System32\%FILE_NAME% >nul 2>&1
icacls "C:\Windows\System32\%FILE_NAME%" /grant "administrators":F >nul 2>&1
icacls "C:\Windows\System32\%FILE_NAME%" /grant SYSTEM:F >nul 2>&1
ren C:\Windows\System32\%FILE_NAME% %FILE_NAME%.old >nul 2>&1
copy "%~dp0\%FILE_NAME%" C:\Windows\System32\%FILE_NAME% /Y >nul 2>&1
Echo 已替换 %FILE_NAME%
goto :EOF
:: -------------------------- 子程序:测试启动 --------------------------
:TEST_START
Echo 测试启动打印服务
net start %SERVICE_NAME%
set "FIX_RESULT=%errorlevel%"
net stop %SERVICE_NAME% /y >nul 2>&1
if %FIX_RESULT% equ 0 (
Echo %~1 替换后服务启动成功!
) else (
Echo %~1 替换后服务启动失败,继续修复...
timeout /t 2 /nobreak >nul
)
goto :EOF
:: -------------------------- 结果提示 --------------------------
:FINISH_SUCCESS
Echo --------------------------------------------------------------------------
Echo ==========================================================================
Echo 打印服务修复成功!net start spooler 命令执行成功!
Echo 请进行打印测试。
Echo ==========================================================================
:: 最终保持服务启动状态
net start %SERVICE_NAME% >nul 2>&1
pause >nul
exit /b
:FINISH_FAIL
Echo --------------------------------------------------------------------------
Echo ==========================================================================
Echo 服务启动失败!net start spooler 命令执行失败!
Echo 建议检查替换文件版本是否匹配当前系统(Win10/Win11/Server)。
Echo ==========================================================================
pause >nul
exit /b2-直接替换文件.bat
@Echo off Color A Title Print spooler 服务修复 by:DNPU.COM rem 替换打印服务核心文件 rem 重启打印服务 Echo -------------------------------------------------------------------------- Echo 停止打印服务 net stop spooler Echo -------------------------------------------------------------------------- timeout /t 3 /nobreak Echo -------------------------------------------------------------------------- Echo 替换 win32spl.dll rem win32spl.dll Takeown /A /F C:\Windows\System32\win32spl.dll icacls "C:\Windows\System32\win32spl.dll" /grant "administrators":F icacls "C:\Windows\System32\win32spl.dll" /grant SYSTEM:F ren C:\Windows\System32\win32spl.dll win32spl.dll.old copy "%~dp0\win32spl.dll" C:\Windows\System32\win32spl.dll /Y Echo -------------------------------------------------------------------------- Echo 替换 spoolsv.exe rem spoolsv.exe Takeown /A /F C:\Windows\System32\spoolsv.exe icacls "C:\Windows\System32\spoolsv.exe" /grant "administrators":F icacls "C:\Windows\System32\spoolsv.exe" /grant SYSTEM:F ren C:\Windows\System32\spoolsv.exe spoolsv.exe.old copy "%~dp0\spoolsv.exe" C:\Windows\System32\spoolsv.exe /Y Echo -------------------------------------------------------------------------- Echo 替换 winspool.drv rem winspool.drv Takeown /A /F C:\Windows\System32\winspool.drv icacls "C:\Windows\System32\winspool.drv" /grant "administrators":F icacls "C:\Windows\System32\winspool.drv" /grant SYSTEM:F ren C:\Windows\System32\winspool.drv winspool.drv.old copy "%~dp0\winspool.drv" C:\Windows\System32\winspool.drv /Y Echo -------------------------------------------------------------------------- Echo 替换 spoolss.dll rem spoolss.dll Takeown /A /F C:\Windows\System32\spoolss.dll icacls "C:\Windows\System32\spoolss.dll" /grant "administrators":F icacls "C:\Windows\System32\spoolss.dll" /grant SYSTEM:F ren C:\Windows\System32\spoolss.dll spoolss.dll.old copy "%~dp0\spoolss.dll" C:\Windows\System32\spoolss.dll /Y Echo -------------------------------------------------------------------------- Echo 替换 localspl.dll rem localspl.dll Takeown /A /F C:\Windows\System32\localspl.dll icacls "C:\Windows\System32\localspl.dll" /grant "administrators":F icacls "C:\Windows\System32\localspl.dll" /grant SYSTEM:F ren C:\Windows\System32\localspl.dll localspl.dll.old copy "%~dp0\localspl.dll" C:\Windows\System32\localspl.dll /Y Echo -------------------------------------------------------------------------- Echo 替换 prntvpt.dll rem prntvpt.dll Takeown /A /F C:\Windows\System32\prntvpt.dll icacls "C:\Windows\System32\prntvpt.dll" /grant "administrators":F icacls "C:\Windows\System32\prntvpt.dll" /grant SYSTEM:F ren C:\Windows\System32\prntvpt.dll prntvpt.dll.old copy "%~dp0\prntvpt.dll" C:\Windows\System32\prntvpt.dll /Y Echo -------------------------------------------------------------------------- Echo 启动打印服务 net start spooler Echo -------------------------------------------------------------------------- Echo 完成操作,请进行打印测试吧! pause
技术不易,大部分人都是藏着掖着,不是什么人都愿意免费分享自己的劳动成果,请不要吝啬一个免费的小红心;如果你的电脑有类似的情况,可按我们提供的方法和思路解决,记得给作者加鸡腿哦!
网友评论