如何在Windows中以编程方式列出所有全局变体?

如何在Windows中以编程方式列出所有全局变体?,windows,winapi,mutex,handle,Windows,Winapi,Mutex,Handle,如何获取Windows系统上使用的所有全局命名互斥体/变体的列表 我知道,但我自己如何使用win32api做到这一点呢?@HansPassant不适用。我的问题是,我需要一个系统上所有互斥体的列表,但我不知道如何获取它。如果你想知道为什么,那就是寻找恶意软件进程创建的互斥锁。你怎么知道给定的进程是否是恶意软件?如果未命名互斥体,则该互斥体位于其父进程内部;如果命名互斥体,则可以直接按其名称打开互斥体,以测试它是否存在。你到底想解决什么?我相信肖恩知道如何打开一个命名的互斥锁。他正在寻找一种方法来

如何获取Windows系统上使用的所有全局命名互斥体/变体的列表


我知道,但我自己如何使用win32api做到这一点呢?

@HansPassant不适用。我的问题是,我需要一个系统上所有互斥体的列表,但我不知道如何获取它。如果你想知道为什么,那就是寻找恶意软件进程创建的互斥锁。你怎么知道给定的进程是否是恶意软件?如果未命名互斥体,则该互斥体位于其父进程内部;如果命名互斥体,则可以直接按其名称打开互斥体,以测试它是否存在。你到底想解决什么?我相信肖恩知道如何打开一个命名的互斥锁。他正在寻找一种方法来列出
\BaseNamedObjects
中的
变种
对象。这需要系统调用,但Microsoft不支持直接从用户模式进行系统调用。这里有一个命令行可以为您执行此操作:
accesschk-accepteula-qost-Mutant\BaseNamedObjects
。不幸的是,sysinternal实用程序不用于重新分发。@RemyLebeau。恶意软件通常使用命名互斥来阻止多个Instamce。我不想测试打开互斥锁,并冒险在我自己的扫描仪上触发AV警报。是的,它不使用驱动程序。您可以在调试器(例如32位cdb.exe)下运行accesschk.exe,并在
ntdll上设置断点!nToPendDirectoryObject
ntdll!NtQueryDirectoryObject
检查它所做的调用。