Кто занимает файл?

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Кто занимает файл?

Сообщение MIT » 19.01.2009 (Пн) 19:58

Хотелось бы проверить, свободен ли указаный файл в данный момент на чтение/запись. Отлавливание исключений - не выход, а как сделать иначе не знаю. В идеале хотелось бы реализовать функционал программы Unlocker: проверка файла и удаление дескрипторов (хотя нужен только алгоритм распознавания "занятых" файлов, но и остальное не повредит).
Подскажите, в какую сторону копать? Поиск по IO ничего интересного не выявил (кроме, пожалуй, GetAccessControl, но по моему, это что-то другое).
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: Кто занимает файл?

Сообщение Williams » 19.01.2009 (Пн) 21:14

Вот что я нашел. Разблокировка файла требует хендл, который хранится в стеке приложения. Думаю хороший старт
И вы думаете, что вас оставят в живых после прочтения этого поста?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Re: Кто занимает файл?

Сообщение tyomitch » 19.01.2009 (Пн) 21:21

Williams писал(а):который хранится в стеке приложения

Бред сивой кобылы.
Изображение

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: Кто занимает файл?

Сообщение Williams » 19.01.2009 (Пн) 21:24

tyomitch писал(а):
Williams писал(а):который хранится в стеке приложения

Бред сивой кобылы.


А где именно?

Кстати, Unlocker поддерживает опции командной строки. Этого должно быть достаточно
И вы думаете, что вас оставят в живых после прочтения этого поста?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Re: Кто занимает файл?

Сообщение tyomitch » 19.01.2009 (Пн) 21:30

Williams писал(а):А где именно?

Во-первых, нет "стека приложения". У каждого потока свой стек.
Во-вторых, хендл может приложением храниться где угодно, хоть в куче, хоть вообще вне памяти (в регистре).
А может вообще не храниться, если в проге баг и хэндл утёк.
В третьих, даже если хендл хранится в стеке, у тебя нет никакого шанса его там найти.
Изображение

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: Кто занимает файл?

Сообщение Williams » 19.01.2009 (Пн) 21:32

Функции для разблокироки я нашел. Но как узнать хендл нужного файла? Каким образом работает Unlocker?

http://msdn.microsoft.com/en-us/library/aa365715(VS.85).aspx
http://msdn.microsoft.com/en-us/library/aa365716(VS.85).aspx
И вы думаете, что вас оставят в живых после прочтения этого поста?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Re: Кто занимает файл?

Сообщение tyomitch » 19.01.2009 (Пн) 21:33

Это не они.

На главном сайте была статья про закрытие чужих хендлов, глянь.
Изображение

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: Кто занимает файл?

Сообщение Williams » 19.01.2009 (Пн) 21:35

tyomitch писал(а):На главном сайте была статья про закрытие чужих хендлов, глянь.


ок, посмотрю
И вы думаете, что вас оставят в живых после прочтения этого поста?

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Кто занимает файл?

Сообщение MIT » 21.01.2009 (Ср) 12:31

Что-то я не нашел там ничего (зато нашел статью про работу с памятью и массивами :) ).
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Re: Кто занимает файл?

Сообщение tyomitch » 21.01.2009 (Ср) 15:16

MIT писал(а):Что-то я не нашел там ничего (зато нашел статью про работу с памятью и массивами :) ).

Леньтяй!!

http://www.vbstreets.ru/VB/Articles/66343.aspx
http://www.vbstreets.ru/VB/Articles/66404.aspx
Изображение

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Кто занимает файл?

Сообщение MIT » 21.01.2009 (Ср) 16:05

tyomitch писал(а):Леньтяй!!
А я только в NET`е и в "Разных статьях" искал.
Да уж,.. старею... :(
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 25

    TopList