首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用特定dll查找和终止进程的脚本化方法

使用特定dll查找和终止进程的脚本化方法
EN

Stack Overflow用户
提问于 2019-01-22 14:32:47
回答 1查看 1.7K关注 0票数 0

我需要你的帮助,以制作一个脚本,用于缓解问题的症状,而我们挖掘它,并找到原因。

问题描述:当dll被锁定时,我们遇到了一个问题,这会阻止IIS处理请求。有几个dll可能就是问题所在。我们将它们映射为Windows的例外,但仍然会出现问题。

我们可以通过编写脚本定期访问网站来检测问题,如果问题发生,就会陷入停顿。

这是在Windows2016Server上。

要求:显然需要一个长期的修复,我们正在致力于此。当我们找到这个修复时,我们正在寻找一种方法来找到使用dll的进程并终止该进程。

SysInternals ProcessExplorer可以识别正在访问dll文件的进程(这是双筒望远镜特性)。一旦我们知道了哪个进程,那么我们也可以在ProcessExplorer中终止该进程。

理想的解决方案是一个脚本,它使用指定的dll名称搜索进程,然后杀死它们。我想我们可以使用sysinternals的命令行实用程序,但不知道从哪里开始。

注:理想情况下,我们会解决问题,但它是持续的,所以我们想减轻症状。你们中的一些人可能会建议解决这个问题,如果你有一个解决方案,然后把它发送进来。同时,这里有一些问题可能会被问到.是什么引起了这个问题-如果我们知道.!此问题似乎发生在Windows签名更新运行之后。感觉就像当Windows重新加载新的威胁签名时,内存中的dll不知何故被视为一种威胁。它会不会是真正的威胁-不,因为我们手动扫描了它,它就干净了。

EN

回答 1

Stack Overflow用户

发布于 2019-04-06 09:26:47

你可以用PowerShell。这是一个开始。

备注:

  • 它不执行任何检查,以确定进程是否已终止。
  • 它使用PID发出终止,因为它比进程名更安全。
  • 它使用一个完整的路径到模块,以使检测更加精确。
  • 代码默认为不终止进程,将KillIt变量更改为$true。

如果一般概念能够为您标识流程,并且默认的停止进程(Es)对所讨论的流程有效,这将是有用的:

代码语言:javascript
复制
$ModulePathToFind = "C:\\Windows\\System32\\msxml6.dll"    
$KillIt           = $false

foreach ($p in Get-Process)
{
    foreach ($m in $p.modules)
    {
        if ( $m.FileName -match $ModulePathToFind)
        {
            write-host "Found:" $m.FileName "in" $p.Name "ID:" $p.id

            if ($KillIt)
            {
                write-host "In 'Kill' mode."
                Stop-Process -Id $p.id -Force
            }
            else
            {
                write-host "Not in 'Kill' mode."
            }
        }
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54310513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档