Что нового

[Файловая система] Узнать ресурсы(файлы), используемые программой

andrey903

Новичок
Сообщения
1
Репутация
0
Версия AutoIt: 3.3.14

Описание: Прошу помощи в создании скрипта. Нужно, чтобы после запуска программы(игры) создавался список используемых файлов этой программой для дальнейшего копирования на SSD диск (в целях экономии места). Например в C:\Program Files\Proga\Proga.exe после закрытия программы создался список файлов, используемых в данной директории (C:\Program Files\Proga) и дальше скопировать на SSD

Примечания:
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
как вариант
Код:
;~ #RequireAdmin
#include <APIConstants.au3>
#include <Array.au3>
#include <WinAPIEx.au3>
Local $spath = @TempDir
Local $fo = FileOpen($spath & '\1.txt', 9)
Local $fo1 = FileOpen($spath & '\2.txt', 9)
Local $fo2 = FileOpen($spath & '\3.txt', 9)

Local $PID = @AutoItPID


Local $Data = _WinAPI_EnumProcessHandles($PID, 36)
Local $aRes[0], $sinf
If IsArray($Data) Then
	Local $hTarget = _WinAPI_GetCurrentProcess()
	Local $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, Default, True, $DUPLICATE_SAME_ACCESS)
			If Not @error Then
				$sinf = _WinAPI_GetFinalPathNameByHandle($hObject)
				If $sinf Then _ArrayAdd($aRes, $sinf)
				_WinAPI_CloseHandle($hObject)
			EndIf
		Next
	EndIf
EndIf
Local $amod = _WinAPI_EnumProcessModules($PID, $LIST_MODULES_ALL)
_ArrayDisplay($amod, 'Modul')
_ArrayDisplay($aRes, 'Files')
 
Верх