惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

美团技术团队
阮一峰的网络日志
阮一峰的网络日志
T
The Blog of Author Tim Ferriss
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
宝玉的分享
宝玉的分享
L
LangChain Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Last Week in AI
Last Week in AI
博客园 - 司徒正美
M
MIT News - Artificial intelligence
人人都是产品经理
人人都是产品经理
WordPress大学
WordPress大学
B
Blog RSS Feed
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园 - Franky
B
Blog
V
V2EX
J
Java Code Geeks
D
Docker
博客园 - 叶小钗
The Cloudflare Blog
量子位
博客园_首页
MongoDB | Blog
MongoDB | Blog

博客园 - zhaotianff

WPF控件样式和模板全解析-ToolTip控件 WPF控件样式和模板全解析-RadioButton控件 WPF控件样式和模板全解析-ToggleButton控件 WPF控件样式和模板全解析-CheckBox控件 软件架构风格与软件架构设计方法 WPF控件样式和模板全解析-Label控件 WPF控件样式和模板全解析-Button控件 Windows一直卡在检查更新的解决方案 - zhaotianff - 博客园 AI时代,程序员应该何去何从? C++中的explicit关键字 解决IIS服务器typecho上传附件后无法访问的问题 Visual Studio编译过程中拷贝文件的一些实用小技巧 Jenkins快速入门教程 .NET是什么?为什么要选择.NET? 如何在WPF中实现类似DevOps的自动化流程 一文带你搞懂医疗器械设计开发全生命周期 Windows如何清除本机记录的git用户名和密码 HL7协议详解 医疗行业 GDT 数据格式详解 一文带你搞懂C# 异步编程(async/await)底层原理 如何在C#中使用Chromium headless(无头模式)浏览器 不同.NET版本中的WPF新增功能 如何在WPF中使用 Fluent 主题 Windows平台下的各种原生UI框架介绍 C#如何Hook托管函数 WinDbg 用户层调试进阶教程 Windows编程的一些基础理论 推荐一款优秀的Windows经典文件管理器项目-WinFile Windows如何阻止应用程序联网 如何在WPF中捕获窗口外的事件
如何解决Windows 10/11 删除打印机时,拒绝访问的问题
zhaotianff · 2026-08-05 · via 博客园 - zhaotianff

最近在删除打印机时,遇到无法删除的情况。提示无法删除,拒绝访问。

Windows 11不提供传统控制面板的管理界面(我记得以前是可以找到入口的),新式WinUI的界面烂得不行,我在点了删除设备按钮后,界面直接无反应,也没有任何提示。

image

我尝试直接调用PrintUIEntry命令删除,提示拒绝访问。

1 rundll32 printui.dll,PrintUIEntry /dl /n "HP Smart Tank 750 series [15D86F] (已重定向 2)"

我只能尝试用代码去删除,我编写了如下的代码

 1 #include <iostream>
 2 #include<Windows.h>
 3 #include<tchar.h>
 4 
 5 int main()
 6 {
 7     DWORD pcbNeeded = 0;
 8     DWORD pcReturned = 0;
 9 
10     auto result = EnumPrinters(PRINTER_ENUM_LOCAL | PRINTER_ENUM_NAME, NULL, 2, NULL, 0, &pcbNeeded, &pcReturned);
11     LPPRINTER_INFO_2 pPrtInfo2 = (LPPRINTER_INFO_2)LocalAlloc(LPTR, pcbNeeded);
12     result = EnumPrinters(PRINTER_ENUM_LOCAL | PRINTER_ENUM_NAME, NULL, 2, (LPBYTE)pPrtInfo2, pcbNeeded, &pcbNeeded, &pcReturned);
13 
14     if (!result || pPrtInfo2 == NULL)
15         return 0;
16 
17     std::wcout.imbue(std::locale("chs"));
18 
19     for (int i = 0; i < pcReturned; i++)
20     {
21         LPPRINTER_INFO_2 p_curPrtInfo = pPrtInfo2 + i;
22         std::wcout << p_curPrtInfo->pPrinterName << std::endl;
23 
24         //我要删除的打印机序号
25         if (i == 8)
26         {
27             HANDLE hPrinter = NULL;
28 
29             PRINTER_DEFAULTSW psw{};
30             psw.DesiredAccess = PRINTER_ALL_ACCESS;
31             OpenPrinter(p_curPrtInfo->pPrinterName, &hPrinter, &psw);
32 
33             DWORD dwErr = GetLastError();
34 
35             BOOL b_DelResult = DeletePrinter(hPrinter);
36             std::cout << (b_DelResult == TRUE ? "删除成功" : "删除失败") << std::endl;
37 
38             DWORD dwError = GetLastError();
39             ClosePrinter(hPrinter);
40         }
41     }
42     return 1;
43 }

发现OpenPrinter的错误码是5,权限不足。我尝试管理员运行,还是返回5。

运行输入 printmanagement.msc ,打开打印管理。

找到需要删除的打印机,打开属性

image

切换到安全页

image

发现确实没有一个用户拥有“管理此打印机”的权限。

点击高级按钮

image

点击 更改,然后点击高级,在弹出的用户列表里选择Administrator(你机器上的管理员用户),点击确定

image

此时我们关闭打印机属性对话框,再重新打开,可以看到添加按钮已经可用了。

image

 点击添加按钮,按前面一样的步骤,添加Administrator用户(本机上的管理员用户)

image

然后钩上相应的权限

image

此时应该是可以删除打印机了,因为我是使用前面的代码删除的,不是在界面上删除的,不确认界面上是否能删除成功了。