You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过指定句柄名查找PID并终止加载目标DLL的msaccess进程?

解决方案:定位并终止加载指定DLL的msaccess进程

原脚本问题分析

第一段脚本问题

  • Get-Process的Handles属性仅返回进程的句柄信息,不会包含已加载的DLL模块路径,因此无法通过HandleName匹配目标DLL。
  • 开头通过Win32_Process获取的ProcessId变量未在后续逻辑中使用,属于冗余代码。
  • 使用-like匹配完整路径时,未考虑路径的大小写或转义问题,匹配精度不足。

第二段脚本问题

  • 错误将DLL视为独立进程,通过$childProcess.Path判断进程路径是否等于DLL路径,逻辑完全错误——DLL是被进程加载的模块,并非独立运行的进程。
  • 仅遍历父进程ID为0的进程的子进程,会遗漏大量非此类层级的msaccess进程。

可行实现方案

要实现类似资源监视器的输出(显示进程ID、名称、加载的目标DLL路径),并终止目标进程,可以通过以下两种PowerShell方案实现:

方案1:使用Get-Process的Modules属性

直接遍历所有msaccess进程,检查其已加载的模块列表,匹配目标DLL路径:

$targetDll = "C:\Program Files (x86)\Sage\Sage 100\9.0\Shared\GEKKO.HPGebote.dll"
$processName = "msaccess.exe"

# 遍历所有msaccess进程
foreach ($proc in Get-Process -Name $processName -ErrorAction SilentlyContinue) {
    # 检查进程加载的模块中是否存在目标DLL
    $loadedDll = $proc.Modules | Where-Object { $_.FileName -eq $targetDll }
    if ($loadedDll) {
        # 输出类似资源监视器的信息
        Write-Host "找到目标进程:PID=$($proc.Id),进程名=$($proc.Name),加载的DLL=$($loadedDll.FileName)"
        # 终止进程(可注释此行先验证输出)
        $proc.Kill()
        Write-Host "已终止PID=$($proc.Id)的进程"
    }
}

方案2:使用WMI的Win32_ProcessModule

通过WMI查询所有进程模块,精准定位加载目标DLL的msaccess进程:

$targetDll = "C:\Program Files (x86)\Sage\Sage 100\9.0\Shared\GEKKO.HPGebote.dll"
$processName = "msaccess.exe"

# 查询加载了目标DLL的进程模块
$targetModules = Get-WmiObject Win32_ProcessModule | Where-Object {
    $_.FileName -eq $targetDll -and $_.ProcessName -eq $processName
}

foreach ($module in $targetModules) {
    # 获取对应的进程对象
    $proc = Get-Process -Id $module.ProcessId -ErrorAction SilentlyContinue
    if ($proc) {
        Write-Host "找到目标进程:PID=$($proc.Id),进程名=$($proc.Name),加载的DLL=$($module.FileName)"
        $proc.Kill()
        Write-Host "已终止PID=$($proc.Id)的进程"
    }
}

关键说明

  • -ErrorAction SilentlyContinue用于避免因进程已退出导致的报错。
  • 若需先验证输出再终止进程,可先注释$proc.Kill()行。
  • 两种方案均会输出进程ID、名称及DLL路径,与资源监视器的模块列表展示逻辑一致。

内容的提问来源于stack exchange,提问作者BeginnerWPF

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 20:37:28