如何通过CMD创建显示驱动名称的驱动安装对话框(支持批量安装)
自定义驱动安装通知气泡问题
想要创建显示「正在安装设备驱动程序软件」的托盘气泡,执行命令:
rundll32 pnpui.dll,SimplifiedDINotification
仅能弹出无具体驱动名称的通用对话框。需求是实现安装过程中显示当前驱动名称的通知气泡,同时支持单次操作批量安装多个驱动。
已尝试操作
- 为
RUNDLL32.EXE追加参数以生成带名称的气泡 - 向
RUNDLL32.EXE传入INF文件路径
预期效果
- 驱动安装过程中,通知气泡显示对应驱动/设备名称
实际结果
- 无法生成带驱动名称的安装通知气泡
解决方案
SimplifiedDINotification是PNPUI.DLL中仅用于触发通用安装提示的导出函数,不支持传入驱动名称或批量安装参数。要实现需求,需采用以下方案:
1. 结合SetupAPI与自定义托盘通知
通过SetupCopyOEMInf相关工具(如pnputil)批量导入驱动INF,再创建自定义托盘气泡配合安装进度更新显示当前驱动名称。PowerShell核心示例:
# 遍历批量安装驱动并显示对应通知 $drivers = Get-ChildItem "C:\你的驱动目录\*.inf" foreach ($inf in $drivers) { pnputil /add-driver $inf.FullName /install # 弹出带驱动名称的通知气泡 $notifyIcon = New-Object System.Windows.Forms.NotifyIcon $notifyIcon.Icon = [System.Drawing.Icon]::ExtractAssociatedIcon((Get-Process -Id $PID).Path) $notifyIcon.BalloonTipTitle = "正在安装驱动" $notifyIcon.BalloonTipText = "当前安装:$($inf.BaseName)" $notifyIcon.Visible = $true $notifyIcon.ShowBalloonTip(3000) Start-Sleep -Seconds 1 $notifyIcon.Dispose() }
2. 监听系统设备安装事件
通过WMI监听系统设备变更事件,在驱动安装完成时触发带设备名称的通知,适合批量安装后的结果反馈:
# 注册设备安装完成事件监听 Register-WmiEvent -Class Win32_DeviceChangeEvent -Action { $eventData = $event.SourceEventArgs.NewEvent if ($eventData.EventType -eq 3) { $notifyIcon = New-Object System.Windows.Forms.NotifyIcon $notifyIcon.Icon = [System.Drawing.Icon]::ExtractAssociatedIcon((Get-Process -Id $PID).Path) $notifyIcon.BalloonTipTitle = "驱动安装完成" $notifyIcon.BalloonTipText = "已完成设备:$($eventData.DeviceName)" $notifyIcon.Visible = $true $notifyIcon.ShowBalloonTip(5000) $notifyIcon.Dispose() } } # 执行批量驱动安装 pnputil /add-driver "C:\你的驱动目录\*.inf" /install
3. 使用Device Installation API(原生开发)
通过C/C++调用Windows原生DiInstallDriver等API,这类API会返回当前安装的设备详细信息,可直接生成与系统原生驱动安装一致风格的带名称通知,体验更贴合系统原生流程。
内容的提问来源于stack exchange,提问作者Ahmed Osama
相关产品推荐
相关产品推荐

