微信搜一搜关注公众号

Print Spooler无法启动,打印机不能打印

DNPU2026-01-18

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

一、清空 PRINTERS 文件夹

以管理员身份运行 CMD,依次执行以下命令:

net stop spooler
del c:\windows\system32\spool\printers\*.* /Q /F
net start spooler

二、重置 Spooler 的依赖项为 RPCSS

方法1(CMD 命令)

管理员身份运行 CMD,执行命令:

sc config spooler depend=RPCSS

方法2(注册表修改)

定位注册表路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Spooler

找到右侧 DependOnService 项,双击编辑

仅保留单行数值:RPCSS,删除其他内容

三、重置 spool 文件夹权限

1、打开路径:C:\Windows\System32\spool

2、右键该文件夹 → 属性 → 安全 → 高级

3、确保 SYSTEM 和 Administrators 组均拥有完全控制权限

四、修改 Spooler 服务可执行文件

管理员身份运行 CMD,执行命令:

sc config Spooler Binpath=“%SystemRoot%\System32\spoolsv.exe”

五、重新启用 “打印和文件服务”(需重启系统)

1、打开 控制面板 → 程序和功能 → 启用或关闭 Windows 功能

2、取消勾选”打印和文件服务“,点击确定,重启电脑

3、重启后重复上述步骤,勾选”打印和文件服务“,再次点击确定并重启

六、DISM+SFC 系统底层文件修复

管理员身份运行 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 /b

2-直接替换文件.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

技术不易,大部分人都是藏着掖着,不是什么人都愿意免费分享自己的劳动成果,请不要吝啬一个免费的小红心;如果你的电脑有类似的情况,可按我们提供的方法和思路解决,记得给作者加鸡腿哦!

打印机服务

网友评论

  • 点击刷新验证码