吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2643|回复: 34
收起左侧

[讨论] 各类“一键安装打印机”博文及帖子的观后感

[复制链接]
hoochanlon 发表于 2023-4-20 14:43

这篇 CSDN-dos批处理脚本自动添加网络IP打印机-简单亲测可用 在我浏览过的文章里算代码简单说明详细的了。

然后就是 脚本之家-Windows系统自动连接网络共享打印机BAT脚本分享 符合我的胃口,代码简单易懂,这也方便易用与调错。

这篇来说 【其他转载】利用批处理脚本自动添加网络打印机(TCP/IP) (出处: 吾爱破解论坛) 。对于我个人来说帖子里的代码并不是那么易懂易用;就注册表部分来说,老实说查看 admx.helplearn.microsoft-/windows-api-list 去了解的话,挺繁琐和头大的。

综上,看了这些关于一键安装打印机的博客,我个人感觉没必要搞复杂(特殊需求外),代码还可以再简单点,这方面简单的实例,其实更适用于大多数人。

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
Light紫星 + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| hoochanlon 发表于 2023-4-20 16:18

在不安装打印驱动的情况下,是无法完成双面打印的。如图对比

通用型,即不安装厂家驱动。核心缺陷:不能双面打印

安装驱动后

借助脚本之家的例子(其他参考:rundll32 printui.dll,PrintUIEntry | Microsoft Learn),简单改写了一下,连接网络打印机测试源码

注:安装惠普打印机驱动之后,简单删除打印机,再进行的特例测试(非完全初始化环境)

@echo off
set printerIP=192.168.0.252

echo 检查网络打印机 %printerIP% 是否在线...
ping -n 1 %printerIP% > nul
if %errorlevel% neq 0 (
    echo 不在线 %printerIP% 稍后试
    pause
    exit
)

rem 连接网络打印机 通用
home.php?mod=space&uid=251666 rundll32 printui.dll,PrintUIEntry /if /b ""  /r "IP_%printerIP%" /m "Generic / Text Only"

@REM 已安装惠普打印机驱动,特例测试
rundll32 printui.dll,PrintUIEntry /if /b ""  /r "IP_%printerIP%" /m "HP Universal Printing PCL 6"

echo 连接网络打印机,已OK
pause

效果图

下一贴或考虑共享打印机的尝试(非常规顺序编码),如果软件程序不支持静默安装等的话,待测...

 楼主| hoochanlon 发表于 2023-4-20 16:51
qgw123 发表于 2023-4-20 17:23
本帖最后由 qgw123 于 2023-4-20 17:36 编辑
豫A00001 发表于 2023-4-20 15:57
楼主第二个链接我在win11环境下使用总是报错

我也经常bat连接共享打印机  user:后面是用户名 空格 密码 去掉引号试试看

net use \\192.168.10.131\IPC$ "passwd" /user:"guest"
改成  
net use \\192.168.10.131/user:用户名 密码


全文如下

@echo off
rem 建立链接
net use \\192.168.10.131/user:
用户名 密码
rem 打开共享文件夹
explorer \\192.168.10.131\

点评

net use win7、win10写法上的区别。  发表于 2023-4-21 12:34
 楼主| hoochanlon 发表于 2023-4-20 17:55
本帖最后由 hoochanlon 于 2023-4-20 23:20 编辑

目前测试惠普打印机驱动不支持静默安装,方案有三个:

  • autolt (我写了autolt脚本,那还得其他主机有环境才行,又会显得麻烦)
  • 备份还原法 ,注入的方式安装打印驱动(参考NONAME-批处理一键安装打印机驱动
  • 其他第三方制作包 (一、非官方不推荐;二、整体的打印环境都各不相同)

先找找资料看看,下一贴或试试共享式的打印机批处理安装测试。

6.18pm 补充资料(待看):

7.31pm 补充资料 (可行性测试)

 楼主| hoochanlon 发表于 2023-4-20 23:21

试错与找规律

这次在琢磨如何静默安装打印机驱动,编码验证自己思路是否可行上,耗了不少时间。先说试错点,参考了zol问答-已安装的打印机驱动怎么提取,在 “打印管理” 也有个导出驱动的,设置比较繁琐,反正我导入完是一直有异常的。保险起见,这方案PASS(本身也没成功...)。

先说 noname-批处理一键安装打印机驱动 的主要两步思路吧,本质上是一次备份还原:

  1. 定位到打印机的IP注册信息,导出:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\Standard TCP/IP Port\Ports\
  2. 通过 dism 导出驱动 ,再定位到打印机驱动程序 dism /online /export-driver /destination:D:\backup

导出容易,但驱动定位很难。因为每个人所在的环境,打印驱动名是不一样的,各牌子的都有,尤其是导出来的驱动文件夹名称都很长,这就极大增加了打印机驱动精准定位的难度,在删除驱动程序包的错误上,我发现到了规律 (注意这四幅图的规律性)。

所以就在rundll32 printui.dll,PrintUIEntry精准定位,并补上  /f F: \backup\hpcu215u\hpcu215u.inf ,圆满完成了两台不同主机安装惠普打印机驱动的测试过程。

两台Windows主机测试效果

测试机一

测试机二,打印效果正常

 楼主| hoochanlon 发表于 2023-4-21 07:42
本帖最后由 hoochanlon 于 2023-4-21 09:16 编辑

附源码,批处理一键安装网络打印机,圆满结束

https://github.com/hoochanlon/ihs-simple/blob/main/d-bat/install_public_network_hp_printer_driver.bat

@echo off
set printerIP=192.168.0.252

echo 检查网络打印机 %printerIP% 是否在线...
ping -n 1 %printerIP% > nul
if %errorlevel% neq 0 (
    echo 不在线 %printerIP% 稍后试
    pause
    exit
)

rem 连接网络打印机 通用
@REM rundll32 printui.dll,PrintUIEntry /if /b ""  /r "IP_%printerIP%" /m "Generic / Text Only"

@REM 已安装惠普打印机驱动,特例测试
@REM rundll32 printui.dll,PrintUIEntry /if /b ""  /r "IP_%printerIP%" /m "HP Universal Printing PCL 6"

:: ---------------- 静默安装打印机驱动 -------------------------

@REM 详情见:各类“一键安装打印机”博文及帖子的观后感 https://www.52pojie.cn/thread-1776328-1-1.html

@REM 由于惠普打印机驱动不支持静默安装,所以使用备份还原方式拟态静默安装。两个步骤
@REM 1. 导出注册表 
@REM reg export "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\Standard TCP/IP Port\Ports\IP_192.168.0.252" "C:\Users\nice\Documents\IP_192.168.0.252.reg"
@REM 2. 使用dism,导出驱动,再利用服务器卸载失败的效果,去定位到具体打印机型号驱动
@REM dism /online /export-driver /destination:F:\backup\

@REM 静默模式导入注册表
regedit /s C:\Users\nice\Documents\IP_192.168.0.252.reg

@REM 保险稳妥的用法,不初始化一下也挺容易造成执行失败。
@REM 有时打印机删不掉一些文件也可以用这命令
net stop spooler
net start spooler

@REM rundll32:运行 Windows DLL 文件。
@REM printui.dll:Windows 的打印机用户界面组件 DLL 文件。
@REM PrintUIEntry:打印机用户界面入口点。
@REM /if:安装新的打印机。
@REM /b "":设置打印机名称为空字符串,使其在安装后由用户进行命名。
@REM /f F:\backup\hpcu215u\hpcu215u.inf:指定打印机驱动程序包的位置和 .inf 文件名称。
@REM /r "IP_%printerIP%":设置打印机端口为 IP 地址端口,并使用 %printerIP% 变量指定 IP 地址。这个变量需要在其他地方定义,通常是通过批处理脚本进行传递。
@REM /m "HP Universal Printing PCL 6":指定要安装的打印机驱动程序的名称。

@REM 安装打印机
rundll32 printui.dll,PrintUIEntry /if /b "" /f F:\backup\hpcu215u\hpcu215u.inf /r "IP_%printerIP%" /m "HP Universal Printing PCL 6"

echo 连接网络打印机,已OK
pause
heibaishanjun 发表于 2023-4-21 09:09
大佬分享的太高端了,我这边有个小技巧,手动链接打印机的时候,把ip地址换成主机电脑的名字,以后就算ip地址改变也不会影响到打印机的使用

点评

共享打印会做,网络打印机是IP写的。两个例子,你都可以去看看  发表于 2023-4-21 12:31
 楼主| hoochanlon 发表于 2023-4-21 09:19

分割线

上篇,批处理一键安装网络打印机已结束。共享打印机的脚本正式开撸

 楼主| hoochanlon 发表于 2023-4-21 11:41
a1149741006 发表于 2023-4-21 11:33
各大打印机可以一键安装嘛

你按我的分析,可以说的上是教程了,跟着步骤走,自己配就可以,因为每个品牌对应的是不一样的。逻辑原理我在上贴写得很清楚了。(注意,这是网络打印机)

下一贴我发的就是另外的共享打印机了
 楼主| hoochanlon 发表于 2023-4-21 11:44
本帖最后由 hoochanlon 于 2023-4-21 11:46 编辑

测试还算ok,下午再贴个源码

 楼主| hoochanlon 发表于 2023-4-21 12:21

使用 /Y 我都一直没看到标记绿勾,批处命令以及UI界面配合度上还是有些小bug的,如下图

https://learn.microsoft.com/zh-cn/windows-server/administration/windows-commands/rundll32-printui

 楼主| hoochanlon 发表于 2023-4-21 12:27
qgw123 发表于 2023-4-20 17:23
我也经常bat连接共享打印机  user:后面是用户名 空格 密码 去掉引号试试看

net use \\192.168.10.131\ ...

就其他楼层就有关于共享打印机的回答。
 楼主| hoochanlon 发表于 2023-4-21 13:26
本帖最后由 hoochanlon 于 2023-4-21 13:28 编辑

附源码: https://github.com/hoochanlon/ihs-simple/blob/main/d-bat/install_share_hp_printer.bat

注:该部分为共享打印机,网络打印机在分割线的上贴。

@echo off

echo\
@REM 设置成共享打印机主机名
set printerHost=xx1688
echo  %printerHost%  测试连接中...

rem 使用ping命令检查打印机是否在线
ping -n 1 %printerHost% > nul
if %errorlevel% neq 0 (
    echo  不在线 %printerHost% 稍后试
    pause
    exit
)

@REM net stop spooler & net start spooler

echo\
echo 正在与 %printerHost% 共享打印主机建立连接
@REM 用户名abc 密码123456 /persistent:yes 永久保存
net use \\%printerHost% /user:abc 123456 /persistent:yes

echo\
echo 正在连接打印机,并安装驱动
@REM  /in 参数表示安装打印机驱动程序,/n 参数指定打印机名称,
@REM /z 参数表示将打印机设置为默认打印机,/q 参数表示安静模式执行
rundll32 printui.dll,PrintUIEntry /y /in /n "\\%printerHost%\HP LaserJet MFP M232-M237 PCLmS" /q

@REM color 0a
@REM timeout /t 30
@REM color
echo\
pause
 楼主| hoochanlon 发表于 2023-4-20 15:11
本帖最后由 hoochanlon 于 2023-4-20 23:24 编辑

以Mac自带的测试PDF做打印测试页(Windows环境运行),随后补充说明。

open /System/Library/Image\ Capture/Devices/VirtualScanner.app/Contents/Resources/numbers.pdf

最后一周了,花了小半天时间搞定网络打印机的问题,明天就试一下共享打印机。

ysjd22 发表于 2023-4-20 15:24
楼主分析的好。谢谢
小生你怕怕 发表于 2023-4-20 15:48
赶上直播了
madoy 发表于 2023-4-20 15:48
我感觉还是手动共享快捷简单。
豫A00001 发表于 2023-4-20 15:57
楼主第二个链接我在win11环境下使用总是报错
打印机.png
网络连接8.png
yanhuan 发表于 2023-4-20 16:08
我写了一个一键安装驱动的,不是共享,谁要
Light紫星 发表于 2023-4-20 16:27
收藏了,以后安装打印机就省事了,不然网络打印机他要查找好久才行
忘川川 发表于 2023-4-20 16:36
“一键安装打印机”
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止回复与主题无关非技术内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-27 04:52

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表