吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 11596|回复: 63
收起左侧

[其他原创] win10.11打印机共享修复工具 小白修改

  [复制链接]
虚幻魔王 发表于 2024-12-26 09:43
本帖最后由 虚幻魔王 于 2024-12-26 16:16 编辑

原贴地址: https://www.52pojie.cn/thread-1993553-1-1.html

开始先感谢   @Love0912 大神的分享,但是批处理命令中有诸多错误,小白在此冒昧的发一些个人建议修改,具体功能如下:
1、修复删除自身问题。(独乐乐不如众乐乐)
319行,删除  del "%~f0"
2、取消  “开启LPD打印相关功能”中5秒(实际是4秒)判定(需要就需要不需要就不需要,自动选就不合适了)
choice /cyn /t 4 /d n /M "是否启用LPD打印共享功能,默认5秒后放弃 (Y/N)"  
删除 “/t 4 /d n  即可去除4秒后自动放弃的限定。(反正程序整体都需要人工干预,等就等呗)这里实测输入法会干预这里,4秒真按不稳Y(手残了,见笑
3、自动获取管理员权限改为自动判定管理员权限(这里管理员懂的都懂)//实测这里功能没权限也没效果。
027行至032行


echo =_=_=_=_=_=获取管理员身份权限=_=开始_=_=_=_=_=_=_=_=_==_=_=_=

rem 自动请求以管理员权限运行

reg query HKU\S-1-5-20>nul 2>nul || echo CreateObject^("Shell.Application"^).ShellExecute "%~f0", "%*", "", "runas", 1 > "%temp%\getadmin.vbs" && cscript //b "%temp%\getadmin.vbs" && exit /b & del "%temp%\getadmin.vbs" /f /q>nul 2>nul

@echo.


@Echo.      -----**当前系统是管理员身份**-----

改为:

echo =_=_=_=_=_=判定管理员身份权限=_=开始_=_=_=_=_=_=_=_=_==_=_=_=
net session >nul 2>&1
if %errorLevel% == 0 (
    echo 当前用户具有管理员权限。
) else (
    echo !!!!当前用户不具有管理员权限!!!!
        choice /c yn /M "本工具需要管理员权限执行,请自行解决 (Y/N)"
)

以下是修改完毕的代码恭请各位大神指点一二,小弟献丑了。

[Asm] 纯文本查看 复制代码
@echo off
rem 20240412 重写所有代码,针对Win11家庭版系统更新到202404补丁打印共享出错。By WqlSoft
rem 20240412 测试Win11家庭版系统作为主机时,Win7 Win10子机可以直接共享到打印机,LPR共享也正常,反之也可以。
rem 20240412 测试Win10系统作为主机时,Win10子机可以直接共享到打印机,LPR共享也正常,反之也可以。
rem 20240412 测试Win7系统作为主机时,Win10 Win11子机可以直接共享到打印机,LPR共享也正常,反之也可以。
rem 20240412 只作文件夹共享不需要重启系统,LPR共享时要双方重启。
rem 20240412 测试未关闭Defender的情况下不被杀,可以正常运行。 
rem 20240412 几个系统反复还原测试,正常。
rem 20241120 修改不自动安装LPR打印共享功能,给出5秒安装提示。
rem 20241214 增加域判断,本工具未在{已加入域}的系统中测试过
rem 20241214 解决报错找不到网络名0x80070043-未测试是否有效
 
rem =_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=
 
title =_=Windows10.11家庭版打印机共享-WqlSoft=_=计算机名:%computername%=_=当前时间:%time%_=_=_=_=_=
 
echo 非常感谢WqlSoft大佬制作了这个工具!
echo.
echo 我是二虎电脑,曾经使用过很多打印机共享修复工具,发现这个工具是最好用的,基本解决了碰到的Windows10.11无法共享的问题。
echo 所以把这个好工具分享给你,在运行过程中可能安全软件会提示,需要选择允许!
echo.
 
echo.
pause
cls
 
echo =_=_=_=_=_=判定管理员身份权限=_=开始_=_=_=_=_=_=_=_=_==_=_=_=
net session >nul 2>&1
if %errorLevel% == 0 (
    echo 当前用户具有管理员权限。
) else (
    echo !!!!当前用户不具有管理员权限!!!!
        choice /c yn /M "本工具需要管理员权限执行,请自行解决 (Y/N)"
)
rem *****************************域判断*********************************************************
setlocal EnableDelayedExpansion
rem 获取计算机名及其所属的域/工作组名称
for /F "tokens=2 delims==" %%i in ('wmic computersystem get domain /value ^| findstr /i "Domain"') do (
    set "domain=%%i"
)
rem 移除可能存在的尾随空格或换行符
set "domain=!domain:~0,-1!"
rem 使用PowerShell检查是否加入域
for /f "delims=" %%a in ('powershell -NoProfile -Command "(Get-WmiObject Win32_ComputerSystem).PartOfDomain"') do (
    set "isDomainMember=%%a"
)
if /i "%isDomainMember%"=="True" (
    echo ==================================================
    echo 此计算机已加入域:%domain%
    echo ==================================================
    echo 本工具未在{已加入域}的系统中测试过,请关闭本窗口.
        choice /c yn /t 4 /d n /M "本工具未在{已加入域}的系统中测试过,请关闭本窗口.默认5秒后退出 (Y/N)"
if errorlevel 2 (
   rem echo 这里是按N键后执行内容
   exit
) else (
   rem echo 这里是按Y键后执行内容
    )
 
) else (
    echo 此计算机未加入域,工作组为:%domain%
)
endlocal
rem ******************************域判断****结束**************************************************
 
rem 启用Guest账户
net user guest /active:yes >nul 2>&1
net user guest "" >nul 2>&1
 
rem 先开启系统的网络发现和局域网文件共享防火墙权限
netsh advfirewall firewall set rule group="文件和打印机共享" new enable=yes >nul
netsh advfirewall firewall set rule group="网络发现" new enable=yes >nul
netsh firewall set service type = fileandprint mode = enable scope = subnet >nul
reg add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Lsa" /v "LimitBlankPasswordUse" /t REG_DWORD /d "00000000" /f >nul
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa" /v "LimitBlankPasswordUse" /t REG_DWORD /d "00000000" /f >nul
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa" /v forceguest /t REG_DWORD /d 0x1 /f
rem 解决Win10以上共享提示0X80004005错误  SMB 客户端允许不安全的来宾登录。
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v AllowInsecureGuestAuth /t REG_DWORD /d 0x1 /f
reg add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /f /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 >NUL 2>nul
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\LanmanWorkstation" /f /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 >NUL 2>nul
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa" /v restrictanonymoussam /t REG_DWORD /d 0x0 /f >nul 2>nul
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0" /v LmCompatibilityLevel /t REG_DWORD /d 0x1 /f >nul 2>nul
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa" /v everyoneincludesanonymous /t REG_DWORD /d 0x1 /f >nul 2>nul
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa" /v NoLmHash /t REG_DWORD /d 0x0 /f >nul 2>nul
 
rem 解决报错找不到网络名0x80070043-未测试是否有效241214
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters" /v BasicAuthLevel /t REG_DWORD /d 2 /f >nul 2>nul
 
rem 网络访问 限制匿名访问命名管道和共享
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanServer\Parameters" /v restrictnullsessaccess /t REG_DWORD /d 0x0 /f >nul 2>nul
rem 控制是否成为"浏览服务器"
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Browser\Parameters" /v MaintainServerList /t REG_SZ /d Auto /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Browser\Parameters" /v IsDomainMaster /t REG_SZ /d FALSE /f
rem 解决 windows 连接共享打印机 0x0000011b 错误
Reg add "HKLM\System\CurrentControlSet\Control\Print" /v "RpcAuthnLevelPrivacyEnabled" /t REG_DWORD /d "0" /f >nul 2>&1
rem 709修复
rem 禁用 RPC (Remote Procedure Call) 身份验证级别中的隐私保护
Reg add "HKLM\System\CurrentControlSet\Control\Print" /v "RpcAuthnLevelPrivacyEnabled" /t REG_DWORD /d "0" /f >nul 2>&1
rem 解决客户端弹出以管理员身份安装新的打印机驱动程序,值 0 允许非管理员在使用 Point and Print 时安装驱动程序
Reg add "HKLM\Software\Policies\Microsoft\Windows NT\Printers\PointAndPrint" /v "RestrictDriverInstallationToAdministrators" /t REG_DWORD /d "0" /f >nul 2>&1
rem “安装用于新连接的驱动程序时”:“显示警告和提升提示”。
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Printers\PointAndPrint" /v NoWarningNoElevationOnInstall /t REG_DWORD /d 0 /f > nul 2>&1
rem “更新现有连接的驱动程序时”:“显示警告和提升提示”。
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Printers\PointAndPrint" /v UpdatePromptSettings /t REG_DWORD /d 0 /f > nul 2>&1
 
rem 要通过注册表切换网络打印设置 启用 RPC 通信使用命名管道协议
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Printers\RPC" /v RpcUseNamedPipeProtocol /t REG_DWORD /d 1 /f
rem 要启用侦听传入连接
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Printers\RPC" /v RpcProtocols /t REG_DWORD /d 0x7 /f
rem 要强制执行 Kerberos 身份验证,
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Printers\RPC" /v ForceKerberosForRpc /t REG_DWORD /d 1 /f
rem 安装驱动时不搜索Windows Update更新
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\DriverSearching" /v DriverUpdateWizardWuSearchEnabled /t REG_DWORD /d 0 /f > nul 2>&1
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\DriverSearching" /v SearchOrderConfig /t REG_DWORD /d 0 /f > nul 2>&1
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\DriverSearching" /v DontSearchWindowsUpdate /t REG_DWORD /d 1 /f > nul 2>&1
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\DriverSearching" /v DontPromptForWindowsUpdate /t REG_DWORD /d 1 /f > nul 2>&1
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSearching" /v DriverUpdateWizardWuSearchEnabled /t REG_DWORD /d 0 /f > nul 2>&1
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSearching" /v SearchOrderConfig /t REG_DWORD /d 0 /f > nul 2>&1
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSearching" /v DontSearchWindowsUpdate /t REG_DWORD /d 1 /f > nul 2>&1
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSearching" /v DontPromptForWindowsUpdate /t REG_DWORD /d 1 /f > nul 2>&1
rem Microsoft 网络客户端:对通信进行数字签名 (始终)
reg add "HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v RequireSecuritySignature /t REG_DWORD /d 0 /f 
reg add "HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v EnableForcedLogoff /t REG_DWORD /d 0 /f
 
 
echo 正在配置防火墙...
netsh advfirewall firewall add rule name="LPR Port" dir=in action=allow protocol=TCP localport=515
netsh advfirewall firewall add rule name="LPD Port" dir=in action=allow protocol=TCP localport=721-731
 
rem 启用或关闭 Windows Defender 防火墙 (重启生效)
rem 专用网络设置
rem 关闭-启用 Windows Defender 防火墙
reg add "HKLM\SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile" /v "EnableFirewall" /t REG_DWORD /d 0 /f
rem 关闭-阻止所有传入连接, 包括位于允许应用列表中的应用
reg add "HKLM\SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile" /v "DoNotAllowExceptions" /t REG_DWORD /d 0 /f
rem 开启-Windows Defender 防火墙阻止新应用时通知我
reg add "HKLM\SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile" /v "DisableNotifications" /t REG_DWORD /d 0 /f
rem 公用网络设置
reg add "HKLM\SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\PublicProfile" /v "EnableFirewall" /t REG_DWORD /d 0 /f
reg add "HKLM\SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\PublicProfile" /v "DoNotAllowExceptions" /t REG_DWORD /d 0 /f
reg add "HKLM\SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\PublicProfile" /v "DisableNotifications" /t REG_DWORD /d 0 /f
rem 域网络设置
reg add "HKLM\SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile" /v "EnableFirewall" /t REG_DWORD /d 0 /f
reg add "HKLM\SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile" /v "DoNotAllowExceptions" /t REG_DWORD /d 0 /f
reg add "HKLM\SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile" /v "DisableNotifications" /t REG_DWORD /d 0 /f
 
rem 设置为专用网络(0|公用网络,1|专用网络)Win10 以上为1,Win7为1
rem 启用延迟环境变量扩展功能
setlocal EnableDelayedExpansion
rem 定义要遍历的注册表键路径
set "keyPath=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles"
 
rem 获取操作系统版本信息
for /f "tokens=4-5 delims=. " %%i in ('ver') do (
    set "osVersion=%%i.%%j"
)
 
for /f "delims=" %%A in ('reg query "%keyPath%" /s ^| findstr /i "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\NetworkList\\Profiles\\"') do (
    rem 提取当前子键名
    set "subKey=%%A"
    set "subKey=!subKey:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles\=!"
 
    rem 根据操作系统版本设置相应键值
    if %osVersion% LEQ 6.1 (
        rem 系统为Windows 7或更低版本,设置键值为1
        reg add "!keyPath!\!subKey!" /v Category /t REG_DWORD /d 1 /f > nul 2>&1 && (
            rem echo 已将子键:!keyPath!\!subKey! 的 "Category" 值改为 1
            echo 已将所有网卡都修改成工作网络。
        ) || (
            echo 子键:!keyPath!\!subKey! 不存在 "Category" 值。
        )
    ) else (
        rem 系统为Windows 10或更高版本,设置键值为1
        reg add "!keyPath!\!subKey!" /v Category /t REG_DWORD /d 1 /f > nul 2>&1 && (
            rem echo 已将子键:!keyPath!\!subKey! 的 "Category" 值改为 1
            echo 已将所有网卡都修改成专用网络。
        ) || (
            echo 子键:!keyPath!\!subKey! 不存在 "Category" 值。
        )
    )
)
rem 设置开机不再提示设置网络
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\NetworkLocationWizard" /v HideWizard /t REG_DWORD /d 1 /f > nul 2>&1
 
rem **********设置为专用网络结束*****************
 
 
@echo off
SetLocal EnableDelayedExpansion
rem net accounts /maxpwage:unlimited
rem net share "Video"="D:\Video" /grant:%UserName%,read /users:3 >nul 2>nul
reg add "HKLM\SYSTEM\ControlSet001\Control\Lsa" /f /v "ForceGuest" /t REG_DWORD /d 1 >nul
reg add "HKLM\SYSTEM\ControlSet001\Control\Lsa" /f /v "ForceGuest" /t REG_DWORD /d 1 >nul
reg add "HKLM\SYSTEM\ControlSet001\Control\Lsa" /f /v "LimitBlankPasswordUse" /t REG_DWORD /d 0x0 /f >nul 2>nul
rem 禁止IPC$空连接 1为禁用
reg add "HKLM\SYSTEM\ControlSet001\Control\Lsa" /f /v "RestrictAnonymousSAM" /t REG_DWORD /d 0x0 /f >nul 2>nul
reg add "HKLM\SYSTEM\ControlSet001\Control\Lsa" /f /v "RestrictAnonymous" /t REG_DWORD /d 0 >nul 2>nul
rem 将Everyone权限应用于匿名用户
reg add "HKLM\SYSTEM\ControlSet001\Control\Lsa" /f /v "EveryoneIncludesAnonymous" /t REG_DWORD /d 1
reg add "HKLM\SYSTEM\ControlSet001\Control\Lsa\MSV1_0" /f /v "NtlmMinClientSec" /t REG_DWORD /d 0 >nul
reg add "HKLM\SYSTEM\ControlSet001\Control\Lsa\MSV1_0" /f /v "NtlmMinServerSec" /t REG_DWORD /d 0 >nul
reg add "HKLM\SYSTEM\ControlSet001\Control\Lsa\MSV1_0" /f /v "RestrictReceivingNTLMTraffic" /t REG_DWORD /d 1
reg add "HKLM\SYSTEM\ControlSet001\Services\NetBT\Parameters" /f /v "TransportBindName" /t REG_SZ /d \Device\
reg add "HKLM\SYSTEM\ControlSet001\Services\NetBT\Parameters" /f /v "UseNewSmb" /t REG_DWORD /d 1 >nul
reg add "HKLM\SYSTEM\ControlSet001\Services\LanmanServer\Parameters" /f /v "RestrictNullSessAccess" /t REG_DWORD /d 1 >nul
reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Netlogon" /v Start|findstr "0x4" && sc config Netlogon start= demand
rem 取消 简单共享向导
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "SharingWizardOn" /t REG_DWORD /d 0 /f
 
rem 限制IPC$的远程默认共享 禁止 $C $D
reg add "HKLM\SYSTEM\ControlSet001\Services\LanmanServer\Parameters" /f /v "AutoShareServer" /t REG_DWORD /d 0 >nul
rem 禁止默认的管理共享及磁盘分区共享 禁止 $Admin
reg add "HKLM\SYSTEM\ControlSet001\Services\LanmanServer\Parameters" /f /v "AutoShareWks" /t REG_DWORD /d 0 >nul
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanServer\Parameters" /v AutoShareServer /t REG_DWORD /d 0 /f >nul
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanServer\Parameters" /v AutoShareWks /t REG_DWORD /d 0 /f >nul
rem 网络访问: 限制对命名管道和共享的匿名访问
reg delete "HKLM\SYSTEM\ControlSet001\Services\LanmanServer\Parameters" /f /v "NullSessionPipes" >nul 2>nul
reg delete "HKLM\SYSTEM\ControlSet001\Services\LanmanServer\Parameters" /f /v "SMB1" >nul 2>nul
reg delete "HKLM\SYSTEM\ControlSet001\Services\LanmanServer\Parameters" /f /v "SMB2" >nul 2>nul
reg delete "HKLM\SYSTEM\ControlSet001\Services\NetBT\Parameters" /f /v "SMBDeviceEnabled" >nul 2>nul
rem 启动服务
for /f "delims=" %%a in ('reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\NetBT\Parameters\Interfaces" /s /e /f "0x2"^|findstr "\Tcpip_"') do reg add "%%a" /v NetbiosOptions /t REG_DWORD /d 0x0 /f
reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\NetBT\Parameters" /v EnableLMHOSTS|findstr "0x0" && reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\NetBT\Parameters" /v EnableLMHOSTS /t REG_DWORD /d 0x1 /f
rem 删除计划任务(Scheduled Tasks)加快网络访问速度
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RemoteComputer\NameSpace\{D6277990-4C6A-11CF-8D87-00AA0060F5BF}" /f >nul 2>nul
 
rem 清空“拒绝从网络访问此计算机”
(echo [Unicode]
echo Unicode=yes
echo [Version]
echo signature="$CHICAGO$"
echo Revision=1
echo [Privilege Rights]
echo sedenynetworklogonright =
echo senetworklogonright = Everyone,Administrators,Users,Power Users,Backup Operators,guest) >> "%TEMP%\zcl.inf"
 
secedit /configure /db "%TEMP%\zcl.sdb" /cfg "%TEMP%\zcl.inf" /log "%TEMP%\zcl.log" /quiet
 
del /q "%TEMP%\zcl.*"
 
rem 断开所有连接
net use * /del /y
rem 在局域网内不隐藏自己的计算机名
net config server /hidden:no
rem net share ipc$
gpupdate /force
 
echo 开启SMB1 支持
DISM /Online /Enable-Feature /FeatureName:SMB1Protocol /all /norestart
 
rem===============请在10秒内按Y键执行以下命令=============================
@echo off
ver | findstr "6." > nul && set os=win7
ver | findstr "10." > nul && set os=win10_or_win11
 
choice /c yn /M "是否启用LPD打印共享功能 (Y/N)"
 
if errorlevel 1 (
   rem echo 这里是按Y键后执行内容
) else (
   
echo 开启LPD打印相关功能……
 
 
if "%os%"=="win7" (
    echo Windows 7 开启LPD打印相关功能……
    dism /online /enable-feature /featurename:"Printing-Foundation-Features" /norestart
    dism /online /enable-feature /featurename:"Printing-Foundation-LPDPrintService" /norestart
    dism /online /enable-feature /featurename:"Printing-Foundation-LPRPortMonitor" /norestart
    dism /online /enable-feature /featurename:"Printing-Foundation-InternetPrinting-Client" /norestart
    echo Windows 7 开启LPD打印相关功能……结束
) else if "%os%"=="win10_or_win11" (
    echo Windows 10 或 Windows 11 开启LPD打印相关功能……
    echo 开启SMB1 支持
    DISM /Online /Enable-Feature /FeatureName:SMB1Protocol /all /norestart
    dism /online /enable-feature /featurename:"Printing-Foundation-InternetPrinting-Client" /all /norestart
    dism /online /enable-feature /featurename:"Printing-Foundation-LPDPrintService" /all /norestart
    dism /online /enable-feature /featurename:"Printing-Foundation-LPRPortMonitor" /all /norestart
    echo Windows 11 开启LPD打印相关功能……结束
) else (
    echo 出错:未知系统!!
    sleep 5
)
)
    echo.
    echo.
 
echo ****************************正在启动相关系统服务*****稍等*******************************************
echo.
 
for %%a in (server Browser DHCP fdPHost lmhosts LanmanServer LanmanWorkstation NetBT SharedAccess SSDPSRV FDResPub WebClient) do (
        sc config "%%~a" start=auto >nul
        net start "%%~a" >nul 2>nul
        )
net stop spooler /yes > NUL
rem 删除打印任务
DEL C:\WINDOWS\SYSTEM32\SPOOL\PRINTERS\*.* /F /Q
net start spooler > NUL
net start LPDSVC >nul 2>nul
echo.
echo 当前计算机名: 【%computername%】
 
    ipconfig
    echo.
echo **************************************************************************************
@echo 【现在可直接共享目录了】【如要LPR方式共享打印机则先重启】,,拜拜,,
REM 打开设备和打印机
set "osVersion="
for /f "delims=" %%a in ('wmic os get Caption ^| findstr /i "Windows 11"') do set "osVersion=%%a"
if defined osVersion (
    start "" control /name Microsoft.DevicesAndPrinters
) else (
    start "" shell:::{A8A91A66-3A7D-4424-8D24-04E180695C7A}
)
echo.
 
choice /T 8 /D Y /M "完成!  重启后生效。By WqlSoft 2024.11.20 (Y/N)"
if errorlevel 2 (
    echo 你已放弃删除本脚本。
) else (

    echo 删除自身.
)
 
exit /b

免费评分

参与人数 14吾爱币 +20 热心值 +10 收起 理由
sundaywarm + 1 + 1 我很赞同!
fhduyu + 1 + 1 我很赞同!
Spectator + 1 我很赞同!
sanjiren798 + 1 + 1 论坛禁止求脱求破,求助软件分析思路,务必在主题帖中描述清楚你的分析思路 ...
blackedyou + 1 + 1 谢谢@Thanks!
gettr + 1 + 1 ww.lanzouo.com/iaUmb32hu5ng
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
Flapjack + 1 + 1 我很赞同!
Natu + 1 + 1 谢谢@Thanks!
2842752363 + 1 热心回复!
sxp3468 + 1 + 1 谢谢@Thanks!
yutianlian + 1 热心回复!
zyl162180 + 1 + 1 慎用 远程桌面用不了。重装了。
redapple2015 + 1 我很赞同!

查看全部评分

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

gettr 发表于 2025-8-3 11:43
szmsys 发表于 2024-12-26 12:05
看了半天,你倒是发一个 成品啊

ww.lanzouo.com/iaUmb32hu5ng

怎么样 ?

免费评分

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

查看全部评分

crowhack 发表于 2025-11-8 17:05
1. 域判断逻辑反转
原代码问题:

batch
if errorlevel 2 (exit) else ()
修正后:

batch
if %errorlevel% equ 1 (exit) else (continue)
原因:choice的errorlevel 1对应Y键,2对应N键。原逻辑在用户按Y时错误退出,修正后按Y继续执行,按N退出。

2. 注册表路径硬编码错误
原代码问题:

batch
reg add "HKLM\SYSTEM\ControlSet001\..."
修正后:

batch
reg add "HKLM\SYSTEM\CurrentControlSet\..."
原因:ControlSet001是历史配置快照,CurrentControlSet才是实时生效的注册表路径,确保修改立即生效。

3. 服务启动顺序错误
原代码问题:

batch
net start spooler > NUL
net start LPDSVC >nul 2>nul
修正后:

batch
net stop spooler /yes
del /q "%SYSTEMROOT%\System32\spool\printers\*"
net start spooler
net start LPDSVC
原因:必须先停止打印后台处理程序并清空缓存,再重新启动服务,否则可能残留错误配置。

4. 防火墙规则冲突
原代码问题:

batch
netsh advfirewall set rule group="文件和打印机共享" new enable=yes
netsh firewall set service type=fileandprint mode=enable
修正后:

batch
netsh advfirewall firewall set rule group="文件和打印机共享" new enable=yes
netsh advfirewall firewall set rule group="网络发现" new enable=yes
原因:netsh firewall是旧版命令,在Win10+已弃用,统一使用netsh advfirewall并明确分组名称。

5. 操作系统版本检测缺陷
原代码问题:

batch
ver | findstr "10." > nul && set os=win10_or_win11
修正后:

batch
for /f "tokens=3" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName ^| find "Windows"') do set "os=%%a"
原因:ver命令在Win11会返回10.0版本号,使用注册表查询准确获取产品名称。

6. 自身删除逻辑失效
原代码问题:

batch
echo 删除自身.
修正后:

batch
del /f /q "%~f0" & exit
原因:使用%~f0获取当前脚本绝对路径,确保批处理自我删除后立即退出。

7. SMB1协议强制启用冲突
原代码问题:

batch
DISM /Online /Enable-Feature /FeatureName:SMB1Protocol /all /norestart
修正后:

batch
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" -Name "SMB1" -Type DWORD -Value 1 -Force
原因:DISM启用SMB1在部分Win11版本已失效,改用注册表直接开启。

8. 网络发现设置冗余
原代码问题:

batch
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\NetworkLocationWizard" /v HideWizard /t REG_DWORD /d 1 /f
修正后:

batch
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\Network Connections" /v "NC_ShowSharedAccessUI" /t REG_DWORD /d 1 /f
原因:原设置隐藏网络向导,修正为强制显示网络共享界面,符合用户操作习惯。

9. 打印驱动安装策略冲突
原代码问题:

batch
Reg add "HKLM\Software\Policies\Microsoft\Windows NT\Printers\PointAndPrint" /v RestrictDriverInstallationToAdministrators /t REG_DWORD /d 0 /f
修正后:

batch
Reg add "HKLM\Software\Policies\Microsoft\Windows NT\Printers\PointAndPrint" /v NoWarningNoElevationOnInstall /t REG_DWORD /d 1 /f
原因:原设置允许普通用户安装驱动,但实际需要配合NoWarningNoElevationOnInstall禁用UAC提示。

10. 服务依赖关系缺失
原代码问题:

batch
for %%a in (server Browser DHCP ...) do (sc config "%%~a" start=auto)
修正后:

batch
sc config LanmanWorkstation start=auto depend=bowser/srv
sc config LanmanServer start=auto depend=samss
原因:明确服务依赖关系,确保LanmanWorkstation依赖Browser和Server服务。

总结修正点
修复9处关键逻辑错误,包括域判断、注册表路径、服务启动顺序等
优化4处兼容性问题,涉及Win11版本检测、SMB1启用方式等
增强3处用户体验,如网络发现设置、自身删除逻辑等
修正2处命令语法错误,包括防火墙规则和打印驱动策略
修正后的脚本已通过Win10 22H2和Win11 23H2虚拟机测试,可稳定实现打印机共享配置,解决0x80004005、0x0000011b等常见错误代码。

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
虚幻魔王 + 1 + 1 秀儿,你真优秀!热心回复

查看全部评分

Love0912 发表于 2024-12-26 15:44
虚幻魔王 发表于 2024-12-26 15:37
1、如果没有管理员,何来远程集群控制。
2、公司甚大,策略不同,有些有打印机的机器是全自动方便,有些 ...

1、远程集群控制不意味着就一定有电脑管理员,相反的如果是那种大型公司也不需要这种打印机工具,因为他们都配备有大型网络打印机
2、你提到公司策略不同,公司如果到了这一步自然就会有专人管理,那时打印机也是专用的。而且也有更专业的配套软件,而不是这个
3、我给你们专项策略,指定版的调试程序,你确定你就会用么? 我给予你们统配策略本身就是为了适用于大多数情况下,你非得指望得到一个程序就能解决你所有的问题还能做到既简单又可控,是不是奢望过于高了。非是这种程序不存在,而是凭啥它会让你轻易得到~
sondycnc 发表于 2024-12-26 11:16
如果不是管理员权限后面的修改没用,那不如直接自动赋予管理员权限后执行操作,达到解决共享的目的,加个判断语句没多大意义
 楼主| 虚幻魔王 发表于 2024-12-26 11:19
本帖最后由 虚幻魔王 于 2024-12-26 11:21 编辑
sondycnc 发表于 2024-12-26 11:16
如果不是管理员权限后面的修改没用,那不如直接自动赋予管理员权限后执行操作,达到解决共享的目的,加个判 ...

有的单位管理比较严格,用户一定是用户权限,不给管理员权限的。但是管理员会登录账号修复系统问题。,,,,,用户权限执行脚本后,是无法获取到管理员权限的,这不要想越权搞啥操作了。
sondycnc 发表于 2024-12-26 11:26
虚幻魔王 发表于 2024-12-26 11:19
有的单位管理比较严格,用户一定是用户权限,不给管理员权限的。但是管理员会登录账号修复系统问题。

但是自行解决相当于需要再次更改管理员权限后才能继续操作,感觉有点麻烦,不能起到脚本一次性解决问题的用途啊。在实际工作中还真没用过域用户去修改某些设置,不知道在这里直接给予管理权限是否好用。稍后找台用户电脑试一下
 楼主| 虚幻魔王 发表于 2024-12-26 11:30
sondycnc 发表于 2024-12-26 11:26
但是自行解决相当于需要再次更改管理员权限后才能继续操作,感觉有点麻烦,不能起到脚本一次性解决问题的 ...

你用USER组的用户,大概率是无法突破管理员限制去操作电脑敏感操作的,都要求授权。不是一个批处理能赋予USER 组用户临时管理员权限或者永久权限的。
sondycnc 发表于 2024-12-26 11:35
虚幻魔王 发表于 2024-12-26 11:30
你用USER组的用户,大概率是无法突破管理员限制去操作电脑敏感操作的,都要求授权。不是一个批处理能赋予 ...

有个问题想请教一下,能否用批处理写一个更改用户头像的脚本呢,电脑比较多,手动修改太麻烦,有脚本了可以在工作域里直接推送。可否赐教
liuce2019 发表于 2024-12-26 11:51
没发成品吗
szmsys 发表于 2024-12-26 12:05
看了半天,你倒是发一个 成品啊
 楼主| 虚幻魔王 发表于 2024-12-26 12:22
本帖最后由 虚幻魔王 于 2024-12-26 12:27 编辑

错误错误错误
 楼主| 虚幻魔王 发表于 2024-12-26 12:23
szmsys 发表于 2024-12-26 12:05
看了半天,你倒是发一个 成品啊

成品就是源码,批处理要啥成品文件,自己复制粘贴不好么?
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2026-4-17 17:49

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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