强制终止 WIA 或 TWAIN 驱动程序(扫描仪)

Force terminate WIA or TWAIN driver (scanner)

我遇到了一个非常烦人的问题。当我尝试静默安装程序时,该程序依赖于 WIA 或 TWAIN 驱动程序(用于扫描仪)而不是 "in use"。问题是驱动可以"in use"即使扫描仪从电脑上拔掉(如果之前插过,驱动还在使用,拔掉后不停止使用)

我的问题是,据您所知,是什么控制了这个 WIA/TWAIN 驱动程序?它是我可以强制关闭的服务还是流程?

我为 WIA 找到了这 2 个服务:

stisvc
WiaRpc

但与 TWAIN 无关。

我的目标是在安装脚本中添加强制关闭,以确保在安装之前 WIA 或 TWAIN 无法使用。

我找到了解决方案,可能对其他遇到这些驱动程序问题的人有用。首先下载 SysInternals 的 ListDlls : https://docs.microsoft.com/en-us/sysinternals/downloads/listdlls

然后使用 PowerShell:

Stop-Service -Name stisvc -Force

[string]$twain_utilise = C:\TEMP\Listdlls.exe -d TwainDSM.dll | select-string "pid"

if ($twain_utilise) {
$processus = ($twain_utilise -Split(": "))[1]
} 

Stop-Process -id $processus -Force

解释:

-停止负责 WIA 的服务 STISVC (Windows Image Acquisition (WIA))

-运行 ListDlls.exe on TWAINDSM.DLL 通过选择已找到程序的 PID 找出正在使用 dll 的内容。

-如果命令成功(换句话说,如果找到 PID,意味着程序正在使用该 DLL),拆分内容以便您可以仅隔离 PID 号。

-用它的 PID 停止进程,这样 TWAIN 就不再使用了

您现在已经停止使用 WIA 或 TWAIN,可以继续安装要求这些驱动程序停止使用的驱动程序或软件!干杯。