1.前言
桌面运维同窗经常会处置打印机驱动装置这类工单,手动装置打印机驱动理论蕴含以下步骤:
1.依据打印机型号网上查找对应打印机驱动
2.经常使用cmd命令进入治理员界面
3.将打印机驱动增加到window系统中
人工装置须要经过三个步骤,操作繁琐,效率较低。基于此,咱们想开发一个智能化妆置打印机驱动的程序,让用户可以自行装置打印机驱动,以此缩小打印机驱动装置工单,提高运维效率。
2.技术成功
咱们可以经常使用代码的模式成功人工操作的三个步骤。这里,咱们程序上成功也和这三个步骤相似。
1.后盾治理系对抗致保养打印机驱动
2.经常使用程序提权,智能进入治理员环境
3.经常使用Devcon程序口头打印机驱动装置命令
后续的一切示例代码认为例。
2.1.后盾治理系统
咱们开发一个后盾治理系统,一致保养打印机驱动,这样可以缩小重复查找打印机驱动的上班,优化效率。
系统界面如下:
经过这个页面保养打印机型号、
配件
ID和驱动等相关
信息
。
任何设施的配件ID都是惟一的,咱们可以经环节序识别打印机的配件ID,而后依据配件ID查问到驱动
下载
。
这里咱们经常使用window的Win32_PnPEnty来失掉配件的相关信息,其结构如下:
[Dynam, Provider("CIMWin32"), UUID("{FE28FD98-C875-11d2-B352-00104BC97924}"), AMENDMENT]class Win32_PnPEntity : CIM_alDevice{uint16 Avlability;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识别局部代码如下:
namespe JwPrinterManage.Helper{internal class Utilst{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();feach (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.d(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.Appenhar(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 Res
•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命令装置驱动的方法,这两个方法不只限于打印机驱动装置的运行,其实践运行场景比拟宽泛,大家可以经过这些方法开发智能化工具,协助提高运维上班效率。审核编辑 黄宇
本站内容来源于网络,如不慎侵犯了您的权益,请联系我们将迅速删除。