使用PRNMNGR无法删除含撇号(')的打印机
解决Windows 7中带撇号的打印机无法通过prnmngr.vbs删除的问题
我碰到过完全一样的情况——当打印机名称里包含撇号(比如"Teacher's Lounge Printer")时,执行以下删除命令:
cscript "%WINDIR%\System32\Printing_Admin_Scripts\en-US\prnmngr.vbs" -d -p "Teacher's Lounge Printer"
会抛出Error 0x8004103A Invalid object path错误,而把名称里的撇号去掉(改成"Teachers Lounge Printer")后,对应命令就能正常完成删除操作。
问题根源
这个错误的核心原因是prnmngr.vbs底层依赖WMI(Windows Management Instrumentation)来操作打印机,而WMI的查询语法中,单引号(撇号)是用来界定字符串的特殊字符。当打印机名称本身包含撇号时,会破坏WMI查询语句的结构,导致系统无法正确解析打印机的对象路径,最终返回无效路径的错误。
可行的解决办法
1. 重命名打印机后删除(最直观的方式)
就像你已经尝试的那样:
- 打开Windows打印机设置,找到目标打印机,右键选择“重命名”
- 去掉名称里的撇号(比如改成
Teachers Lounge Printer) - 执行对应名称的删除命令:
cscript "%WINDIR%\System32\Printing_Admin_Scripts\en-US\prnmngr.vbs" -d -p "Teachers Lounge Printer"
2. 用WMIC命令替代(无需重命名)
如果不想修改打印机名称,可以直接使用wmic命令行工具,它对包含撇号的名称处理更友好:
wmic printer where name="Teacher's Lounge Printer" delete
这里的双引号要保留,WMIC能正确解析带撇号的打印机名称,执行后就能直接删除目标打印机。
3. 修改prnmngr.vbs脚本(进阶方案)
如果需要批量处理这类打印机,可以修改prnmngr.vbs脚本,在构建WMI查询时对名称中的撇号进行转义(把单个'替换成'')。不过这需要一定的VBScript基础,适合有脚本修改需求的场景。
内容的提问来源于stack exchange,提问作者wmbell
相关产品推荐
相关产品推荐

