2012-01-03 2 views
6

현재 프로세스에서 열려있는 핸들을 모두 나열해야합니다. "EnumHandles"와 같은 함수를 찾을 수 없기 때문에 0에서 1000 사이의 루프를 만들려고합니다. 질문은 각 핸들의 이름을 검색하는 방법입니다. C++을 사용하고 있으며 OS는 Win7 32 비트입니다. EDIT : 이름이 필요한 핸들은 뮤텍스입니다. 난 당신이를 사용해야 할 생각현재 프로세스의 모든 핸들 이름 가져 오기

+2

"각 핸들의 이름"은 무엇을 의미합니까? 핸들에는 이름이 없습니다. 핸들 ID, 해당 창 클래스 또는 텍스트 제목을 의미합니까? –

+0

모든 핸들이 이름이있는 파일을 참조하지는 않습니다. Process Explorer를 고려해 보셨습니까? –

+0

그 방법은 효과가 없습니다. 어떤 종류의 손잡이입니까? – SLaks

답변

5

, 는 뮤텍스의 이름을 비교함으로써, 나는 내가 OpenMutex를 사용하여 솔루션을 발견하는 것 핸들 ID를 얻으려면,하지만 난 세번째 매개 변수를 전달 해야할지 모르겠어 NTDLL.DLL. 내 지식으로는 프로세스 모니터링, 처리 및 기타 시스템 정보를 포함한 모든 도구가 결국 Windows에서 사용해야합니다. 작은 Win32 도구에서 사용했지만 핸들을 나열하지 않아도됩니다.

해당 라이브러리의 좋은 소개 및 질문과 관련하여 여기를 클릭하십시오. 또한

http://forum.sysinternals.com/howto-enumerate-handles_topic18892.htmlhttp://forum.sysinternals.com/enumerate-opened-files_topic3577.html

의 첫 번째 게시물의 GetObjectName 기능은 윈도우에서 이런 종류의 정보에 접근하는 것은 많은 일 것으로 보인다 마이크로 소프트는이를 지원하지 않기 때문에 무서운 보이지만, 당신은 볼 수 있습니다 '쉬운'API가 필요한 것을 제공하지 않을 때 NTDLL을 파헤쳐 야합니다. 이것이 결국 ProcessExplorer와 같은 도구입니다. 사용하기가 그리 어렵지 않습니다. DLL을로드하고 올바른 함수 포인터를 가져 와서 그물에서 찾을 수있는 것으로 선언 한 구조체를 채 웁니다.

+0

나는 프로세스를 멘토링하고 있지 않다. 현재 프로세스에있는 핸들이다. – WePro2

+0

나는 그것을 잘못 설명했다. NTDLL.DLL 라이브러리는 깊은 시스템 정보 (프로세스, 핸들 등)에 대한 정보를 얻기위한 것입니다. 이 DLL은 Microsoft에 의해 문서화되어 있지 않지만, 필자가 준 링크 또는 인터넷 검색을 통해 찾을 수 있습니다. DLL에서 호출 할 구조체와 함수를 알아야합니다. – fury

+0

핸들의 이름을 찾기 만하면됩니다. 나는 OpenMutex 내가 찾고있는 대답이 될 수도 있지만 뮤텍스의 전체 경로 (\ Sessions \ 1 \ BaseNamedObjects \ somemutex) 또는 세 번째 매개 변수에 somemutex 전달해야하는지 잘 모르겠습니다. 둘 다 시도했지만 성공하지 못했습니다. – WePro2