㊙️
875 / 237 / 57
Регистрация: 10.08.2018
Сообщений: 563
1

WinApi принудительно освободить файл

23.01.2020, 20:17. Показов 4193. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер. Подскажите, как можно средствами winApi(ну или bat/vbs/js) освободить занятый файл.
Можно либо сам файл принудительно освободить, либо хотя бы узнать открытый хэндл, что бы потом его принудительно закрыть.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.01.2020, 20:17
Ответы с готовыми решениями:

Принудительно освободить память MS SQL Server 2000 SP4
Здравствуйте! Подскажите пожалуйста, есть ли способы принудительно освободить занятую сервером...

Как принудительно сохранить файл, без выскакивания окошка ' Файл 1.xls уже существует, заменить?'
Как принудительно сохранить файл, без выскакивания окошка ' Файл 1.xls уже существует, заменить?'

Как освободить старые ImageVew чтобы освободить память
Привет всем Я новичок поэтому прошу сильно не пинать. В общем мое первое приложение типа интернет...

Освободить файл (печать)
После нажатия на кнопку Печать, файл распечатывается, но не удаляется пока не закроется приложение...

17
5871 / 2626 / 1037
Регистрация: 06.06.2017
Сообщений: 8,956
23.01.2020, 21:08 2
Никто вам тут полноценный код писать не будет (тем более на скриптовых языках). Пользуйтесь тем, что есть: Unlocker, IObit Unlocker.
1
4332 / 2122 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
23.01.2020, 23:17 3
Цитата Сообщение от FlasherX Посмотреть сообщение
тем, что есть: ..., IObit Unlocker
самое оно, удобнее всего
WinApi принудительно освободить файл
0
5871 / 2626 / 1037
Регистрация: 06.06.2017
Сообщений: 8,956
23.01.2020, 23:32 4
Цитата Сообщение от alpap Посмотреть сообщение
удобнее всего
В меню и первый вариант прикручивается.
Вопрос ещё в том, для чего освобождать файлы нужно. Если для копирования, то есть hobocopy.
0
Эксперт WindowsАвтор FAQ
17985 / 7686 / 892
Регистрация: 25.12.2011
Сообщений: 11,461
Записей в блоге: 17
24.01.2020, 05:21 5
Windows Batch file
1
openfiles /disconnect /op "C:\file.txt" /a *
https://safezone.cc/threads/kak-poluchit-spisok-otkrytyx-fajlov.26237/
0
5871 / 2626 / 1037
Регистрация: 06.06.2017
Сообщений: 8,956
24.01.2020, 06:24 6
Dragokas, пятая по списку в сравнительной табличке Unlocker'a.

Вы же в курсе п. 5.8 правил?
0
Эксперт WindowsАвтор FAQ
17985 / 7686 / 892
Регистрация: 25.12.2011
Сообщений: 11,461
Записей в блоге: 17
24.01.2020, 06:56 7
FlasherX, это не от NirSoft, а встроенная в винду.

Не по теме:

Где-то было правило, что можно публиковать ссылки на статьи, видимо с того времени снова ужесточили правила :(

0
5871 / 2626 / 1037
Регистрация: 06.06.2017
Сообщений: 8,956
24.01.2020, 07:16 8
Dragokas, а, точно, пардон. Попробовал на паре файлов из Temp, никакой реакции.

В 16 году (может, и раньше) правило уже было.
0
Эксперт WindowsАвтор FAQ
17985 / 7686 / 892
Регистрация: 25.12.2011
Сообщений: 11,461
Записей в блоге: 17
24.01.2020, 08:52 9
Тоже проверил тестовой утилью. Похоже что-то сломали апдейтами. На обновлённой оси вообще не выводит залоченные, хотя на виртуалке работает.

В таком случае, в помощь утилитки от Руссиновича:
https://docs.microsoft.com/en-... ads/handle
https://docs.microsoft.com/en-... ads/psfile

Не по теме:

Фигня правила, если нельзя ссылаться на свои статьи

0
5871 / 2626 / 1037
Регистрация: 06.06.2017
Сообщений: 8,956
24.01.2020, 09:58 10
Знаком с утилитами, но они не решают проблему. handle так уже точно. А psfile на ключ -с вообще не реагирует (выдаёт справку), а без оного просит службу сервера...

Гы. А правила раздела — не фигня? Форум есть форум, реклама есть реклама. А статьи вы и здесь прекрасно пишите.
0
㊙️
875 / 237 / 57
Регистрация: 10.08.2018
Сообщений: 563
24.01.2020, 22:10  [ТС] 11
Цитата Сообщение от FlasherX Посмотреть сообщение
Никто вам тут полноценный код писать не будет
Большое спасибо за радушный прием. Если не знаете ответа, почему просто не подождать, пока ответит знающий человек(Dragokas)?
Зато грубовато высказаться - Вы оказались первым)
Цитата Сообщение от Dragokas Посмотреть сообщение
В таком случае, в помощь утилитки от Руссиновича:
https://docs.microsoft.com/en-... ads/handle
Благодарю за помощь, как раз ночью вот нашел уже эту утилитку, и она со всем справилась=)
Цитата Сообщение от FlasherX Посмотреть сообщение
Знаком с утилитами, но они не решают проблему.
Утилита прекрасно решает проблему освобождения файла одной строчкой кода, как мне и было нужно. Спасибо, что попытались ввести в заблуждение)
0
5871 / 2626 / 1037
Регистрация: 06.06.2017
Сообщений: 8,956
24.01.2020, 22:52 12
Цитата Сообщение от Averson Посмотреть сообщение
Если не знаете ответа, почему просто не подождать, пока ответит знающий человек(Dragokas)?
Не пишите чуши и посмотрите внимательно на свой запрос. Он никакого отношения к сторонним программам не имеет. А сторонние средства я вам и так предоставил. Человек привёл пример со встроенным средством, и результат с его же слов оказался неудовлетворительным. Не пытайтесь высосать из ситуации то, чего в ней нет.
Цитата Сообщение от Averson Посмотреть сообщение
Вы оказались первым)
Так нужно было действовать на опережение и записать меня в незнайки ещё здесь, тогда бы я не тратил на вас своё время...
Цитата Сообщение от Averson Посмотреть сообщение
Спасибо, что попытались ввести в заблуждение)
Спасибо, что продолжаете нести чушь. Я написал, что тесты с заблокированными файлами ни к чему положительному не приводят. Приведите, как вы считаете, рабочий код, я вам приведу пример с неудовлетворительным тестом на конкретном файле. А после с ним же положительные тесты с приведёнными мной программами.
0
㊙️
875 / 237 / 57
Регистрация: 10.08.2018
Сообщений: 563
25.01.2020, 00:16  [ТС] 13
Цитата Сообщение от FlasherX Посмотреть сообщение
Человек привёл пример со встроенным средством, и результат с его же слов оказался неудовлетворительным.
Да, только после он дал ту информацию(Handle By Mark Russinovich), которая и оказалась решением моего вопроса, и если бы я этой ночью не наткнулся на нее сам, то именно его ответ помог бы мне.
Цитата Сообщение от FlasherX Посмотреть сообщение
..посмотрите внимательно на свой запрос. Он никакого отношения к сторонним программам не имеет.
Так нужно было действовать на опережение и записать меня в незнайки ещё здесь, тогда бы я не тратил на вас своё время...
За помощь в той теме, я не сказал Вам спасибо? Зачем из себя делать потерпевшего, если это не так? Там Вы были заинтересованы мне помочь, не отвечали грубо, и вопрос мой Вы решили как раз с помощью сторонней утилиты, за что я там и сказал раз 5 спасибо.
Это так странно, будто с Вашего аккаунта пишут два разных человека. То вы доброжелательный гуру-эксперт, то эксперт по посыланию куда подальше.
Цитата Сообщение от FlasherX Посмотреть сообщение
Приведите, как вы считаете, рабочий код
А как же ваше правило "Никто вам здесь рабочий код писать не будет" ?
Но, я здесь хоть и новенький, но имею предположение, что люди сюда и приходят, что бы получить от экспертов рабочий код, и если знают какой-то сами, то поделиться им с другими.

Моими скудными знаниями у меня получилось написать следующий рабочий код (может вы сможете его усовершенствовать, если это требуется):
PowerShell
1
2
$path = "C:\Files\test.txt"
handle -p ((handle $path)[5] | select-string '(?<=pid: )(\d*\w*)').matches.value -c ((handle $path)[5] | select-string '(?<=File\s*)(\d*\w*)(?=:.*)').matches.value -y -nobanner
Вы помогли бы мне это написать, если бы я сам не осили код выше?
Это код смог у меня освободить текстовый файл и видео файл, на которых я его проверил.

Добавлено через 7 минут
Получается можно и сразу удалить файл, если нужно:
PowerShell
1
2
3
$path = "C:\Files\test.txt"
handle -p ((handle $path)[5] | select-string '(?<=pid: )(\d*\w*)').matches.value -c ((handle $path)[5] | select-string '(?<=File\s*)(\d*\w*)(?=:.*)').matches.value -y -nobanner
Remove-Item -Path $path
Добавлено через 27 минут
А для полной автоматизации освобождения файла, можно сделать тихий запуск этого кода из .vbs файла.
0
5871 / 2626 / 1037
Регистрация: 06.06.2017
Сообщений: 8,956
25.01.2020, 06:00 14
Цитата Сообщение от Averson Посмотреть сообщение
только после он дал ту информацию
А я типа перед в первом же посте не дал? То, что вы её проигнорировали, не далает вам чести. Это ли не прямое доказательство вешания ярлыков?
Цитата Сообщение от Averson Посмотреть сообщение
Зачем из себя делать потерпевшего, если это не так? Там Вы были заинтересованы мне помочь, не отвечали грубо, и вопрос мой Вы решили как раз с помощью сторонней утилиты, за что я там и сказал раз 5 спасибо.
Потерпевший — это громко сказано. А моя заинтересованность ссылками на приведённые утилиты не подтверждена?
То, что вы хотите видеть грубость в констатации факта, как и апеллировать к вымышленным числам, это ваш выбор.
Цитата Сообщение от Averson Посмотреть сообщение
То вы доброжелательный гуру-эксперт, то эксперт по посыланию куда подальше.
А как же ваше правило "Никто вам здесь рабочий код писать не будет" ?
Вы жертву-то из себя не стройте. Вы чётко написали:
Цитата Сообщение от Averson Посмотреть сообщение
Подскажите, как можно средствами winApi(ну или bat/vbs/js) освободить занятый файл.
Вы где-то в ответах видите средства WinAPI или bat/vbs/js? В контексте данного запроса рабочий код без сторонних утилит появился? Нет. А значит, мой тезис о рабочем коде правдив на 100%. И не появится, потому что написать полноценное средство (пусть и без GUI) уровня приведённых мной программ займёт не одну неделю, а то и не один месяц. Вот я и пишу то, что для меня очевидно, но неочевидно для вас. Называть это посыланием куда подальше как минимум невежественно и глупо, как и присовокуплять к кому-то "гуру"-ярлыки...
Цитата Сообщение от Averson Посмотреть сообщение
Вы помогли бы мне это написать, если бы я сам не осили код выше?
Зачем, если я данное средство причислил к ненадёжным?
Цитата Сообщение от Averson Посмотреть сообщение
и видео файл, на которых я его проверил.
Ну, вот запустил я в Gecko-браузере видео с видеохостинга, появился файл %Tmp%\mozilla-temp-files\mozilla-temp-243. Пытаюсь его разблокировать вашим кодом. Результат нулевой, в то время как с обеими программами, что я привёл, положительный.
Цитата Сообщение от Averson Посмотреть сообщение
Получается можно и сразу удалить файл, если нужно:
Так у вас ещё и запрос неполноценный. С утилитой по первой ссылке это делается без всяких powershell'ов и т. п.: Unlocker.exe C:\Files\test.txt -D -S
При желании можно обрабатывать список (/L, /LU). Справка вызывается ключами: -?, /?, -H, /H.
И с ярлыка (а лучше с кнопки в ФМ) будет тихий запуск без нужды в vbs и тормозного старта с posh...
0
㊙️
875 / 237 / 57
Регистрация: 10.08.2018
Сообщений: 563
25.01.2020, 19:49  [ТС] 15
Цитата Сообщение от FlasherX Посмотреть сообщение
Unlocker.exe C:\Files\test.txt -D -S
Вы бы сразу это написали, тогда бы я Вас сразу правильно понял.
Прошу прощения, я не знал, что анлокером можно пользоваться через команды, в этом все дело. На их сайте всё описание говорит о том, что пользоваться им можно только через интерфейс, кликая мышкой. Только в заголовках сравнительной таблицы обнаружил словa comand line, и тогда уже призадумался. А у handle прямо на верху страницы сразу идет описание запуска командной строкой. Все вот это и запутало меня сначала.
Цитата Сообщение от FlasherX Посмотреть сообщение
глупо, как и присовокуплять к кому-то "гуру"-ярлыки...
Что не нравится Вам в слове "гуру"? Насколько мне известно, это слово означает: человек с большим опытом, сильно осведомленный в какой-то области. Так что это был комплимент, так как помню как Вы помогали мне с моим вопросом.
Цитата Сообщение от FlasherX Посмотреть сообщение
Пытаюсь его разблокировать вашим кодом. Результат нулевой
У меня тоже сначала не получилось. Нужно запустить ps от администратора, и указать путь к папке, где лежит handle.exe.
Поправил код, теперь по идее должен сработать, попробуйте:
PowerShell
1
2
3
4
$filePath = "C:\Files\test.txt"
$handlePath = "C:\Files\handle\"
set-location $handlePath
handle -p ((handle $filePath)[5] | select-string '(?<=pid: )(\d*\w*)').matches.value -c ((handle $filePath)[5] | select-string '(?<=File\s*)(\d*\w*)(?=:.*)').matches.value -y -nobanner
Хочу попробовать сделать как Вы предлагаете(Unlocker.exe C:\Files\test.txt -D -S), но что-то ни одна ссылка на скачивание у них не работает. Возможно это временно...
0
4332 / 2122 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
25.01.2020, 20:28 16
Цитата Сообщение от Averson Посмотреть сообщение
не знал, что анлокером можно пользоваться через команды
Цитата Сообщение от FlasherX Посмотреть сообщение
IObit Unlocker.
этой штукой тоже можно пользоваться из командной строки:
Разблокировать
Windows Batch file
1
start "" "%ProgramFiles%\IObit\IObit Unlocker\IObitUnlocker.exe" /None "file.txt"
Разблокировать и удалить
Windows Batch file
1
start "" "%ProgramFiles%\IObit\IObit Unlocker\IObitUnlocker.exe" /Delete "file.txt"
причем у меня был (и не один) случай когда Unlocker.exe не справился с задачей, а с IObitUnlocker.exe пока не было проблем.
0
㊙️
875 / 237 / 57
Регистрация: 10.08.2018
Сообщений: 563
25.01.2020, 20:38  [ТС] 17
alpap, Спасибо за еще один вариант решения.
0
5871 / 2626 / 1037
Регистрация: 06.06.2017
Сообщений: 8,956
25.01.2020, 21:54 18

Не по теме:

Цитата Сообщение от Averson Посмотреть сообщение
Вы бы сразу это написали, тогда бы я Вас сразу правильно понял.
А просто спросить вместо построения догадок на мой счёт, не?
Цитата Сообщение от Averson Посмотреть сообщение
Прошу прощения
Принимается.
Цитата Сообщение от Averson Посмотреть сообщение
Насколько мне известно, это слово означает
Это фальшивое определение, подмена исходного духовного начала наставничества/мастерства, ко мне как не пришей рукав. ;)


Цитата Сообщение от Averson Посмотреть сообщение
попробуйте:
Аналогично.
Цитата Сообщение от Averson Посмотреть сообщение
Возможно это временно...
Нет, ссылки там не первый год битые. Вот из архива. Есть ещё сборка PortableAppZ.

Цитата Сообщение от alpap Посмотреть сообщение
причем у меня был (и не один) случай когда Unlocker.exe не справился с задачей, а с IObitUnlocker.exe пока не было проблем.
У меня было и так и эдак, поэтому пользуюсь обеими.
0
25.01.2020, 21:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.01.2020, 21:54
Помогаю со студенческими работами здесь

Oledbconnection не успевает освободить файл
доброго времени суток. создаю файл и заполняю с помощью oledb и потом добавляю в архив. если файл...

Освободить файл, занятый в PictureBox
Изображение установлено в pictureBox1.Image Нужно удалить файл с этим изображением. Пробовал...

pictureBox Как освободить файл?
Загружаю файл pictureBox1.Image =Image.FromFile(&quot;0.jpg&quot;); И после этого файл &quot;0.jpg&quot; удалить...

Открыть файл MemoryStream и освободить для других операций
Возможно ли каким-либо образом открыть файл с помощью MemoryStream, чтобы сразу же полностью...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru