0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

桌面运维工具之打印机驱动安装

京东云 来源:jf_75140285 作者:jf_75140285 2024-09-12 15:29 次阅读

1.前言

桌面运维同学经常会处理打印机驱动安装这类工单,手动安装打印机驱动通常包含以下步骤:

1.根据打印机型号网上查找对应打印机驱动

2.使用cmd命令进入管理员界面

3.将打印机驱动添加到window系统中

人工安装需要经过三个步骤,操作繁琐,效率较低。基于此,我们想开发一个自动化安装打印机驱动的程序,让用户可以自行安装打印机驱动,以此减少打印机驱动安装工单,提高运维效率。

2.技术实现

我们可以使用代码的方式实现人工操作的三个步骤。这里,我们程序上实现也和这三个步骤类似。

1.后台管理系统统一维护打印机驱动

2.使用程序提权,自动进入管理员环境

3.使用Devcon程序执行打印机驱动安装命令

后续的所有示例代码以C#为例。

2.1.后台管理系统

我们开发一个后台管理系统,统一维护打印机驱动,这样可以减少重复查找打印机驱动的工作,提升效率。

系统界面如下:

chaijie_default.png

通过这个页面维护打印机型号、硬件ID和驱动等相关信息

任何设备的硬件ID都是唯一的,我们可以通过程序识别打印机的硬件ID,然后根据硬件ID查询到驱动下载

这里我们使用window的Win32_PnPEntity来获取硬件的相关信息,其结构如下:

[Dynamic, Provider("CIMWin32"), UUID("{FE28FD98-C875-11d2-B352-00104BC97924}"), AMENDMENT]
class Win32_PnPEntity : CIM_LogicalDevice
{
  uint16 Availability;
  string Caption;
  string ClassGuid;
  string CompatibleID[];
  uint32 ConfigManagerErrorCode;
  boolean ConfigManagerUserConfig;
  string CreationClassName;
  string Description;
  string DeviceID;
  boolean ErrorCleared;
  string ErrorDescription;
  string HardwareID[];
  datetime InstallDate;
  uint32 LastErrorCode;
  string Manufacturer;
  string Name;
  string PNPClass;
  string PNPDeviceID;
  uint16 PowerManagementCapabilities[];
  boolean PowerManagementSupported;
  boolean Present;
  string Service;
  string Status;
  uint16 StatusInfo;
  string SystemCreationClassName;
  string SystemName;
};

其中Name表示硬件名称,HardwareID表示硬件id。

打印机硬件ID识别部分代码如下:

namespace JwPrinterManage.Helper
{
    internal class USBUtilTest
    {
        public static List< USBDeviceInfo > GetAllPrinterUsbList()
        {
            List< USBDeviceInfo > list = new List< USBDeviceInfo >();

            ManagementObjectCollection collection;
            using (var searcher = new ManagementObjectSearcher(@"Select * From Win32_PnPEntity"))
                collection = searcher.Get();

            foreach (ManagementObject device in collection)
            {

                string name = Convert.ToString(device["Name"]);
                string deviceId = Convert.ToString(device["DeviceID"]);
                string[] HardwareIDArr = (string[])device["HardwareID"];
                if (HardwareIDArr == null || HardwareIDArr.Length == 0)
                {
                    continue;
                }
                foreach (var curHardwareId in HardwareIDArr)
                {
                    if (curHardwareId.Contains("USBPRINT"))
                    {
                        list.Add(new USBDeviceInfo(curHardwareId, name));
                    }
                }
            }

            collection.Dispose();
            return list;
        }
    }
}

以上代码可以获取到计算机的所有硬件名称、设备ID以及硬件ID,通过此方法,我们可以快速获取打印机的硬件ID,然后根据硬件ID从后台系统中查找驱动并下载到用户本地。

2.2.程序提权

安装打印机驱动,程序需要具有管理员权限,这里我们需要通过cmd命令给程序提权,保证程序具有管理员权限。

其原理是使用管理员账号和密码执行cmd运行程序,这样程序就具有管理员权限。

部分核心代码如下:

namespace JwPrinterManage.Helper
{
    internal class AdminUtilsTest
    {

        // 使用特定账号和密码运行程序
        private static void run(string userName, string pass, string exePath)
        {
            Process process = new Process();
            string str = pass;
            SecureString secureString = new SecureString();
            foreach (char c in str)
                secureString.AppendChar(c);
            process.StartInfo.UserName = userName;
            process.StartInfo.Password = secureString;
            process.StartInfo.FileName = exePath;
            process.StartInfo.UseShellExecute = false;
            process.Start();
        }
    }
}

2.3.使用Devcon安装驱动

2.3.1.Devcon.exe简介

DevCon (Devcon.exe)(即设备控制台)是一种命令行工具,用于显示有关运行 Windows 的计算机上的设备的详细信息。 可以使用 DevCon 启用、禁用、安装、配置以及删除设备。

其主要语法如下:

devcon [/r] command [arguments]

其主要命令如下:

•DevCon Enable

•DevCon Disable

•DevCon Update

•DevCon UpdateNI

•DevCon Install

•DevCon Remove

•DevCon Rescan

•DevCon Restart

•DevCon Reboot

•DevCon SetHwID

•DevCon ClassFilter

•DevCon Dp_add

•DevCon Dp_delete

这里我们不详细介绍这些命令,感兴趣的同学可以查看官方文档: Devcon命令文档。

2.3.2.Devcon命令安装驱动

我们可以使用update命令来安装打印机驱动程序,devcon update命令可以安装任意驱动程序包,具体如下:

devcon update INFfile HardwareID

其中INFfile表示打印机驱动的INF文件,HardwareID表示打印机的硬件ID。

当出现如下图所示的结果时,表示打印机驱动安装成功。

3.总结

本文主要介绍打印机驱动自动化安装的一个基本实现思路,通过运维工具,我们可以实现部分桌面工单自动化,帮助运维同事提高工作效率。同时,本文也介绍了通过Win32_PnPEntity获取window硬件信息以及通过Devcon命令安装驱动的方法,这两个方法不仅限于打印机驱动安装的应用,其实际应用场景比较广泛,大家可以通过这些方法开发自动化工具,帮助提高运维工作效率。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 打印机
    +关注

    关注

    9

    文章

    750

    浏览量

    45261
  • 驱动安装
    +关注

    关注

    0

    文章

    10

    浏览量

    8386
  • 运维
    +关注

    关注

    1

    文章

    228

    浏览量

    7495
收藏 人收藏

    评论

    相关推荐

    怎样安装pdf打印机

    怎样安装pdf打印机这个很简单了,下载一个PDF虚拟打印机就可以了,其实adobe pdf PRO的软件就自带有打印机。现在给大家提供一个打印机
    发表于 07-28 10:17

    安装pdf虚拟打印机

    安装pdf虚拟打印机这个很简单了,下载一个PDF虚拟打印机就可以了,其实adobe pdf PRO的软件就自带有打印机。现在给大家提供一个打印机
    发表于 07-29 09:30

    桌面激光打印机选购技巧谈

    都很注重产品的这一特性,黑白激光打印机普遍的使用简单,只要在初次使用时正确连接电脑和电源,安装驱动程序,日后就可以一劳永逸了。输出稳定、操作简单、故障率低,这是激光打印机的普遍表现。以
    发表于 03-15 17:20

    打印机在word不能打印是什么原因

    Word不能打印,原因可能有以下几种:1、可能没有安装打印机驱动首先检查一下是否安装打印机
    发表于 01-09 15:27

    打印机在word不能打印是什么原因

    Word不能打印,原因可能有以下几种:1、可能没有安装打印机驱动首先检查一下是否安装打印机
    发表于 03-31 00:08

    如何选择打印机进行打印

    打印驱动进行打印的,需要在电脑上安装对应的打印机驱动,然后打开条码
    发表于 12-02 15:30

    分享常见的打印机使用常识

    今天李哥为大家分享常见的打印机使用常识。安装打印就不用多说了,连接设备安装驱动打印机就可以
    发表于 01-05 06:11

    使用DLP® Pico™技术的桌面型3D打印机的小型光引擎参考设计

    。3D打印所带来的可能性是无限的。 3D打印机的成本从不到1000美元到超过十万美元不等。较低价位的3D打印机通常被称为桌面型或个人3D打印机
    发表于 11-08 07:55

    PDF虚拟打印机安装教程

    PDF虚拟打印机安装教程 虚拟打印机,顾名思义就是虚拟的打印机。它是一款软件,能模拟的实现打印机的...但如果计算机中没有
    发表于 03-13 15:27 0次下载

    如何安装pdf打印机

    如何安装pdf打印机 这个很简单了,下载一个PDF虚拟打印机就可以了,其实adobe pdf PRO的软件就自带有打印机。现在给大家提供一个打印机
    发表于 07-28 10:16 1.7w次阅读

    打印机驱动怎么安装

    打印机的运行需要特定服务的支持才能正常工作,该服务就是“PrintSpooler”,如果要正常安装和使用打印机,该服务必需得开启。
    的头像 发表于 04-11 14:54 8w次阅读

    打印机驱动怎么删除

    打印机驱动程序(Printer Driving Program),是指电脑输出设备打印机的硬件驱动程序。它是操作系统与硬件之间的纽带。只有安装
    的头像 发表于 04-12 15:59 1.6w次阅读

    工业级3D打印机桌面级3D打印机有什么差别

    相信我们也会经常听到这两个词,工业级3D打印机桌面级3D打印机。虽然都是打印机,但是却主攻于不同的领域。今天来简单讲讲他们的不同之处。
    的头像 发表于 11-06 15:09 4995次阅读

    工业级3D打印机桌面级3D打印机有哪些不同之处

         相信我们也会经常听到这两个词,工业级3D打印机桌面级3D打印机。虽然都是打印机,但是却主攻于不同的领域。今天来简单讲讲他们的不同之处。   
    的头像 发表于 12-26 11:19 730次阅读

    canon打印机怎么用

    以下是一些关于Canon打印机使用的基本步骤和技巧: 安装打印机驱动程序: 访问Canon官方网站,根据您的打印机型号下载相应的
    的头像 发表于 06-14 18:05 1445次阅读