首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么handles.exe没有发现我的DLL,而ProcessExplorer却可以?

为什么handles.exe没有发现我的DLL,而ProcessExplorer却可以?
EN

Stack Overflow用户
提问于 2015-05-13 17:37:30
回答 2查看 711关注 0票数 3

问题:在windows 2012 r2框上,我试图使用Chef以编程方式替换.dll命令组件(也就是我使用regsvr32.exe在该框上注册的vb 6库),但当我试图复制该文件时,网站的应用程序池会锁定它。我不确定这是否重要,但是通过IIS将w3wp进程设置为32位。

我的解决方案(不起作用):为了修复它,我正在考虑使用一个命令行工具来查找对dll的引用,然后回收正在使用它的应用程序池。不幸的是,虽然我可以让SysInternals的进程资源管理器找到dll,但Handles.exe (假定的命令行版本process )不会返回任何内容。我希望有人能告诉我我是如何不正确地使用句柄的,或者是否有一个更好的工具。

进程资源管理器-它找到了我的dll ComHelper.dll

通过命令行处理-它没有找到我的dll ComHelper.dll。

-编辑--这是我在w3wp作为Admin运行时指向它的句柄的输出。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-13 18:01:15

我怀疑你遇到了访问问题。您是否从提升的命令提示符中运行句柄?您能否在w3wp.exe中获得任何输出覆盖句柄(通过在handle.exe命令行中使用进程的pid )?

看一下w3wp.exe的句柄枚举输出,

代码语言:javascript
复制
listdll.exe -d ComHelper.dll 

也许就是你要找的。句柄似乎专注于打开的文件,而不是加载的dll。listdll是一个可以从sysinternals下载的工具。

票数 3
EN

Stack Overflow用户

发布于 2015-05-13 21:56:02

好吧,那么32比特很重要。最后,我不得不求助于powershell,而不是尝试使用句柄。查找文件上有锁的PID的代码分散在互联网上,但下面是链接:http://blogs.technet.com/b/heyscriptingguy/archive/2013/12/01/weekend-scripter-determine-process-that-locks-a-file.aspx (下面是机器人的答案)

为了记录在案,这是建议的

代码语言:javascript
复制
$lockedFile="C:\Windows\System32\acproxy.dll"
$isLocked = $false
Get-Process | foreach{
    $processVar = $_;$_.Modules | foreach{
    if($_.FileName -eq $lockedFile){
        $isLocked = $true
        $processVar.Name + " PID:" + $processVar.id
        }
    }
}

这就是我把它翻译成powershell的愚蠢之处。

代码语言:javascript
复制
$lockedFile = "E:\Components\___ComHelper.dll"
$list = Get-Process
foreach ($process in $list)
{
    foreach ($module in $process.Modules)
    {
        if ($module.FileName -ne $lockedFile) { continue }

        $process.Name + " PID:" + $process.Id
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30221749

复制
相关文章

相似问题

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