Тёмный

Разработка приложений с помощью WinAPI. Урок 6 Рекурсивный обход директорий 

VoidPtr
Подписаться 2,5 тыс.
Просмотров 5 тыс.
50% 1

Опубликовано:

 

5 окт 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 35   
@nap0le0nb0naparte7
@nap0le0nb0naparte7 6 лет назад
Спасибо за урок!!!
@nap0le0nb0naparte7
@nap0le0nb0naparte7 6 лет назад
пересмотрел еще раз, очень интересно, мотивирует, хотелось бы видео про вредоносное по например кейлогер.
@VoidPtr
@VoidPtr 6 лет назад
Скорее всего после реестра будет. Реестр будет 2-3 урока
@ShkolnikPrahramist
@ShkolnikPrahramist 6 лет назад
Спасибо за видео. Еще Для быстрого поиска файла на диске можно юзать драйвер ntfs(через mft)
@VoidPtr
@VoidPtr 6 лет назад
Натупил с показом путей в файле... Можете попробовать проверить сами, просто поменяйте пути
@nazar949
@nazar949 6 лет назад
молодец!
@vasianchik228
@vasianchik228 3 года назад
к сожалению сейчас половина этих функций с вашими параметрами не работают( но за логику спасибо
@vasianchik228
@vasianchik228 3 года назад
@ФБ-91 Павло Красний да это я не шарил в приколах кодировки, там последняя буква функций findfirst отвечает за это И кстати этот код можно оптимизировать, но это вряд ли кому-то нужно
@flarens_ray
@flarens_ray 5 лет назад
Дружище, у тебя утечка памяти. Пример: если пустить функцию WriteData по каталогу с 6000 файлами сразу видно, что съедается около 5мб безвозвратно, не очищаясь после выполнения всех рекурсий (см ссылку на скриншот). Я сам в процессе обучения, потому сразу не могу найти причину. Если тебе это интересно и найдешь раньше меня, напиши, пожалуйста. Мне эта функция нужна. yadi.sk/i/2jsKcnG1GW5zJg
@flarens_ray
@flarens_ray 5 лет назад
В общем, проблема в этих винапевских классах LPWSTR. Я сразу на их и грешил. Зачем усложнять, когда можно сделать просто и это будет надежнее, чем использовать классы хз знает как работающие. Заменил их простым массивом wchar_t в куче, не сложно сообразить в какой части кода их высвободить. В итоге после выполнения функции над той же папкой в куче теперь теряется всего 5 элементов на 160 байт памяти. Как ни думал, не смог найти где, но это уже не критично. Код прилагаю pastebin.com/vp2AcHAa
@flarens_ray
@flarens_ray 5 лет назад
И последняя доработка. Вначале думал, что это одна из WinApi функций теряет 5 объектов в памяти из-за личных косячков от Microsoft. Но тестируя разные моменты понял, что это не потеря, а это кэширование. Потому что при повторном вызове новая память не выделяется.
@VoidPtr
@VoidPtr 5 лет назад
@@flarens_ray да, вот в этом и была проблема. В моём случае требовалось вызвать функцию free() в конце цикла do-while. WinAPI за исключением пары уроков пытаюсь писать на чистом С
@VoidPtr
@VoidPtr 5 лет назад
Если что - обновил исходный код на PasteBin
@АлександрМаратов-ж9ц
Подскажи пожалуйста, как найти файл с нужным расширением? Используя *.txt он находит только файл лежащий в папке PATH, а в подпапках он не ищет
@VoidPtr
@VoidPtr 5 лет назад
Маску пробовали менять?
@АлександрМаратов-ж9ц
@@VoidPtr да я много различных вариантов пробовал, всё сводится к тому, что файл ищется только в папке, указанной в изначальном путе, а в подпапки он даже не заходит, не могу уже 2 день поставить, чтобы и в подпапках искал
@VoidPtr
@VoidPtr 5 лет назад
код использован из моего примера?
@АлександрМаратов-ж9ц
@@VoidPtr да
@VoidPtr
@VoidPtr 5 лет назад
странно, ибо у меня этот код работает корректно. А если код просто так запустить - он рекурсивно обойдёт директории?
@Demon-uk7hs
@Demon-uk7hs 5 лет назад
Можно ли задать путь подобным образом "С:\*\text.txt"?
@VoidPtr
@VoidPtr 5 лет назад
а что ты хочешь таким образом попробовать сделать? Если что проверил - нельзя
@Demon-uk7hs
@Demon-uk7hs 5 лет назад
У меня есть путь к файлу(что-то вроде *\test\test2\text.txt), мне нужно получить полный путь к файлу text.txt. Как я могу это сделать средствами winapi?
@VoidPtr
@VoidPtr 5 лет назад
@@Demon-uk7hs попробуй это: docs.microsoft.com/ru-ru/windows/desktop/api/fileapi/nf-fileapi-getfullpathnamea
@Demon-uk7hs
@Demon-uk7hs 5 лет назад
@@VoidPtr Это docs.microsoft.com/ru-ru/windows/desktop/api/fileapi/nf-fileapi-getfullpathnamea даёт полный путь к программе, а мне нужен полный путь к конкретному файлу.
@VoidPtr
@VoidPtr 5 лет назад
@@Demon-uk7hs вот тот путь который ты указывал - это путь относительно программы?
Далее
ВЫЖИЛ В ДРЕВНЕМ ЕГИПТЕ!
13:09
Просмотров 211 тыс.
Women’s Celebrations + Men’s 😮‍💨
00:20
Lập trình là một ngành TOXIC?
6:37
Визитка программиста
20:59
Просмотров 22 тыс.