Что нового

[Процессы] Как узнать какой(ие) файл(ы) используется определенным процессом?

Ganibal95

GreenBytes
Сообщения
877
Репутация
240
Всем привет :smile:
Как узнать какой(ие) файл(ы) используется определенным процессом?
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
Unlocker показывает, какие файлы используются процессом.
 
Автор
Ganibal95

Ganibal95

GreenBytes
Сообщения
877
Репутация
240
:scratch: А я даже не догадывался что Unloker показывает... Мистика... ;D
Это нужно узнать Autoit'ом!!!
Именно по PID нужно узнать расположение файла ну и сам файл...
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
уже не один раз приводили такой инстурмент - Handle от старины марка
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
_WinAPI_EnumProcessHandles()
_WinAPI_EnumProcessModules()
 
Автор
Ganibal95

Ganibal95

GreenBytes
Сообщения
877
Репутация
240
Yashied
Мне нужно точно определить что за файл и где находится... А тут он говорит что просто File...
Код:
#Include <APIConstants.au3>
#Include <Array.au3>
#Include <WinAPIEx.au3>

Opt('MustDeclareVars', 1)

Global Const $PID = @AutoItPID

Global $Data, $hSource, $hTarget, $hObject

$Data = _WinAPI_EnumProcessHandles($PID,28)

If IsArray($Data) Then
    $hTarget = _WinAPI_GetCurrentProcess()
    $hSource = _WinAPI_OpenProcess($PROCESS_DUP_HANDLE, 0, $PID)
    If $hSource Then
        For $i = 1 To $Data[0][0]
            $hObject = _WinAPI_DuplicateHandle($hSource, $Data[$i][0], $hTarget)
            If Not @error Then
                $Data[$i][1] = _WinAPI_GetObjectNameByHandle($hObject)
                _WinAPI_CloseHandle($hObject)
            EndIf
        Next
    EndIf
EndIf

_ArrayDisplay($Data, '_WinAPI_EnumProcessHandles')
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Код:
#Include <APIConstants.au3>
#Include <Array.au3>
#Include <WinAPIEx.au3>

Global Const $PID = @AutoItPID

$Data = _WinAPI_EnumProcessHandles($PID, 28)

If IsArray($Data) Then
    $hTarget = _WinAPI_GetCurrentProcess()
    $hSource = _WinAPI_OpenProcess($PROCESS_DUP_HANDLE, 0, $PID)
    If $hSource Then
        For $i = 1 To $Data[0][0]
            $hObject = _WinAPI_DuplicateHandle($hSource, $Data[$i][0], $hTarget)
            If Not @error Then
				Switch $Data[$i][3]
					Case 0x00100000, 0x00120189, 0x0012019F
						$Data[$i][1] = _WinAPI_GetObjectNameByHandle($hObject)
					Case Else
						If _WinAPI_GetVersion() >= '6.0' Then
							$Data[$i][1] = _WinAPI_GetFinalPathNameByHandleEx($hObject)
						Else
							$Data[$i][1] = _WinAPI_GetFinalPathNameByHandle($hObject)
						EndIf
				EndSwitch
                _WinAPI_CloseHandle($hObject)
            EndIf
        Next
    EndIf
EndIf

_ArrayDisplay($Data, '_WinAPI_EnumProcessHandles')
 
Автор
Ganibal95

Ganibal95

GreenBytes
Сообщения
877
Репутация
240
Yashied
Он видит не все файлы, а точнее он их просто пропускает пишет 0 или File :reading_book:
А AnVir Показывает все точно...
 
Верх