OneNote 打印机对我来说简直就是一场噩梦。我无数次从打印机中删除它。它总是会回来。有时作为默认打印机,有时作为常规打印机。我怎样才能一劳永逸地摆脱它?
我只发现这个七年前的答案,但它适用于 Office 2013 和 Windows 7。我有 Windows 10 和 Office 365。我已经打开了 GPO,但所有条目和菜单项与给出的答案完全不同。
答案1
在了解了你的技能水平@trejder 之后,我重写了这篇文章。
首先,简单无忧的方式。我不确定这些变化会持续多久。也许是永久的?
- 打开设备管理器
- 打开“打印队列”
- 一次一个地右键单击 OneNote 条目并选择“卸载设备”
现在,我们来看看“司机”的做法:
警告,不要大意。你正在和司机开玩笑
首先,我将简单介绍一下这一切是如何运作的。
- 驱动程序作者编写了一个 inf 来安装他们的产品。在这个特定情况下,OneNote 安装程序会从
C:\Program Files\Microsoft Office\root\Office16\OneNote\prnms006.inf
oem
Windows 将此 inf 复制到 c:\windows\inf,并使用以唯一数字开头和结尾的名称对其进行重命名,例如oem25.inf
。- 还有一些内置驱动程序没有唯一的 inf 文件,但仍然是驱动程序树的一部分。(如下所示)。这种情况的例子可能是键盘或 USB 闪存驱动器。
- 我们将使用
pnputil
命令来消除这一切。首先,我们将使用它来获取已安装内容的列表,然后我们将使用它来破坏这些条目。
让我们开始打扫房子吧!:)
您可以假设所有这些命令都来自提升的命令提示符。
- 转到
C:\Program Files\Microsoft Office\root\Office16
并将 OneNote 重命名为_OneNote_(这只是驱动程序,不是应用程序)。这是为了防止 Office 将来再次启动安装并生成新的 oemXXX.inf。当然,升级会将其恢复。:( - 跑步
pnputil /enum-drivers >%temp%\oem_drivers.txt
- 跑步
pnputil /enum-devices >%temp%\drivers.txt
- 用您方便的文本编辑器打开 %temp%\oem_drivers.txt 并搜索
prnms006.inf
。记下与之耦合的 oemXX.inf 文件的名称。 - 打开 %temp%\drivers.txt 并搜索 OneNote。记下所有
Instance ID
字符串。
现在到了打击的时刻!!
- 运行,
pnputil /delete-driver oemXXX.inf /uninstall
其中(当然)oemXXX.inf 是你取下来的。 - 运行,
pnputil /delete-driver oemXXX.inf /force
其中(当然)oemXXX.inf 是您删除的。这可能会出错,但我们这样做是因为我第一次尝试删除驱动程序包时失败了。 - 对drivers.txt 中找到的
pnputil /remove-device INSTANCE_ID_STRING_HERE
每个 OneNote运行Instance ID
您应该已经清理干净。
对于这种驱动程序,您不需要重新启动。
此技术将强制卸载任何类型的 OEM 驱动程序(例如 realtek 或 HP thingamajiggers!)。
答案2
我注意到在另一个解决方案中,pnputil unstinall 1 步骤需要从:pnputil /delete-driver /uninstall oemXXX.inf 翻转为:pnputil /delete-driver oemXXX.inf /uninstall
我在编写 powershell 来帮助自动化 OneNote 打印机卸载程序时发现了这一点:
$officeFolder = Get-ChildItem -Path 'C:\Program Files\Microsoft Office\' -Filter Office* | Select-Object -ExpandProperty Name
$currentPath = 'C:\Program Files\Microsoft Office\'+$officeFolder+'\OneNote'
$newPath = 'C:\Program Files\Microsoft Office\'+$officeFolder+'\OneNoteOLD'
Rename-Item $currentPath $newPath
$drivers = pnputil /enum-drivers
$drivers -split '\r?\n' | select-string -Pattern "prnms006.inf" -Context 1,0 | % {
$pubName = $_.Context.PreContext[0]
}
$pubName
$regex = 'o\w*'
$oem = $pubName | select-string -Pattern $regex -AllMatches | % { $_.Matches } | % { $_.Value }
$oem = $oem+'.inf'
pnputil /delete-driver $oem /uninstall
pnputil /delete-driver $oem /force
$devices = pnputil /enum-devices
#take devices, split the lines with returns, match all lines with one note and include the line above
$devices -split '\r?\n' | select-string -Pattern "OneNote" -AllMatches -Context 1,0 | % {
#select 1 line above the match line
$instId = $_.Context.PreContext[0]
#clean up instance iD
$instId = $instId.substring($a.length - 52, 52)
#unstinall
pnputil /remove-device $instId
}