Кто же держит открытыми ресурсы

 
+
-
edit
 

Balancer

администратор
★★★★★
Как бы узнать сабж?

Т.е., есть переносной девайс, с которого могут открываться файлы. Так вот, размонтировать его нельзя, пока все файлы закрыты не будут. Имея машину с парой десятков запущенных программ, сделать это подчас очень трудно. Ну не закрывать же всё? Нет ли такой утилитки консольной, которая это всё дело покажет? Кто открыл, что открыл?

Или, по крайней мере, ткните пальцем в API, попробую сам написать.

Хочется размонтировать переносной винт в один клик, а не в два десятка :-(
 
+
-
edit
 

Sokrat

модератор

Balancer, 02.07.2004 21:18:31 :
Как бы узнать сабж?

Т.е., есть переносной девайс, с которого могут открываться файлы. Так вот, размонтировать его нельзя, пока все файлы закрыты не будут. Имея машину с парой десятков запущенных программ, сделать это подчас очень трудно. Ну не закрывать же всё? Нет ли такой утилитки консольной, которая это всё дело покажет? Кто открыл, что открыл?

Или, по крайней мере, ткните пальцем в API, попробую сам написать.

Хочется размонтировать переносной винт в один клик, а не в два десятка :-(
 


ОС?

 
+
-
edit
 

Balancer

администратор
★★★★★
Sokrat, 02.07.2004 23:01:17 :
ОС?
 


Ну, понятно, что по умолчнанию - WinNT :)

Т.е. WinXPSP2
 

AK

опытный

М-м-м, не понял вопрос. А почему именно консольная утилита? Что, в XP нет понятия "общие ресурсы"? В смысле, правой кнопкой мыши на "мой компьютер" ... "управление"... и т.д.
Или я с Win2000 путаю?
Или они все открываются локально?
Вы думаете легко быть Главным Злодеем в мире животных?
Всегда одно и то же, одно и то же...
 
+
-
edit
 

Balancer

администратор
★★★★★
AK, 03.07.2004 01:40:11 :
А почему именно консольная утилита?
 


Чтобы потом можно было автоматически закрыть эти программы. Как я уже написал - хочу в один клик размонтировать активный внешний диск. (Переносной USB-винчестер)

>Что, в XP нет понятия "общие ресурсы"? В смысле, правой кнопкой мыши на "мой компьютер" ... "управление"... и т.д.
>Или я с Win2000 путаю?
>Или они все открываются локально?

Нет, это ты о чём-то ещё.
Ты, часом, не про сетевые папки?

Повторюсь - есть переносной USB-винчестер. Перед его отключением его надо размонтировать (чтобы кеши сбросились, например, гарантированно). Windows не размонтирует его, пока с него открыт хоть один файл.
 
+
-
edit
 

GrayCat

координатор

Утилитка FileMon:
The page cannot be found
Gray ©at [Семейство кошачих]  
+
-
edit
 

Balancer

администратор
★★★★★
GrayCat, 03.07.2004 02:11:40 :
Утилитка FileMon:
 


Спасиб, щупал раньше. Во-первых, не годится для автоматизации, во-вторых, не могу реально использовать даже для ручной работы, т.к. не могу отфильтровать только по заданному диску. Фильтр работает по именам файлов, но не по дискам :-/
 
RU slipstream #03.07.2004 09:52
+
-
edit
 

slipstream

втянувшийся
Может только не Filemon, а ProcessExplorer?
http://www.sysinternals.com/ntw2k/freeware/procexp.shtml

и там-же, рядом-же, консольный вариант по хендлам есть:



фильтрует по любой части строки
code text
  1. >handle i:
  2.  
  3. Handle v2.2
  4. Copyright (C) 1997-2004 Mark Russinovich
  5. Sysinternals - www.sysinternals.com
  6.  
  7. System             pid: 4      I:\System Volume Information\_restore{..}\change.log
  8. svchost.exe        pid: 884    I:\$Extend\$ObjId
  9. svchost.exe        pid: 884    I:
  10. svchost.exe        pid: 884    I:\System Volume Information\tracking.log
  11. Far.exe            pid: 3072   I:\DUMPHERE
  12. cmd.exe            pid: 4020   I:\DUMPHERE
  13. WinRAR.exe         pid: 3132   I:\DUMPHERE
  14. WinRAR.exe         pid: 3132   I:\DUMPHERE\gcc-java-3.4.0-20040501-1.tar.gz
Это сообщение редактировалось 03.07.2004 в 10:08
+
-
edit
 

-exec-

опытный

killwatcher - пофамильно, партиная принадлежность, чем завтракал.

а вообще есть свой аплет computer management\shared folders\open files\

просто первый удобнее.
 
+
-
edit
 

Balancer

администратор
★★★★★
-exec-, 04.07.2004 12:18:08 :
а вообще есть свой аплет computer management\shared folders\open files\
 


Это только для сетевых ресурсов.

А вот по предыдущим ссылкам - пощупаю, спасиб!
 
+
-
edit
 

Balancer

администратор
★★★★★
Во!! handle.exe - то, что надо! Напишу теперь парсер и буду бить процессы автоматом :) Кстати, чтоб не рыться, как послать процессу попроще WM_CLOSE? А то консольный kill.exe у меня процессы убивает "не спрося фамилии", т.к. сходу, без разговоров :D
 

TEvg

аксакал

админ. бан
BeOS поставь. Я размонтировал сидюки которые в работе - работет.
 
+
-
edit
 

Balancer

администратор
★★★★★
TEvg, 05.07.2004 12:46:32 :
BeOS поставь. Я размонтировал сидюки которые в работе - работет.
 


Ага, и данные незаписанные записать успевает? :D
Задача не в том, перечитай ещё раз условие.

Кроме того, BeOS не знает NTFS, а ставить FAT32 на переносной винт - это мягко говоря ненадёжно :)
 
+
-
edit
 

timochka

опытный

Balancer, 04.07.2004 15:29:45 :
Во!! handle.exe - то, что надо! Напишу теперь парсер и буду бить процессы автоматом :) Кстати, чтоб не рыться, как послать процессу попроще WM_CLOSE? А то консольный kill.exe у меня процессы убивает "не спрося фамилии", т.к. сходу, без разговоров :D
 


BOOL PostThreadMessage(DWORD idThread, UINT Msg, WPARAM wParam, LPARAM lParam);

Т.е. примерно так

code text
  1. if (PostThreadMessage(treadID, WM_CLOSE, 0, 0))
  2. {
  3.    // OK
  4. }
  5. else
  6. {
  7.    // Failed
  8. }

 
RU нельзя так резко будить #06.07.2004 10:40
+
-
edit
 
>Кстати, чтоб не рыться, как послать процессу попроще WM_CLOSE? А то консольный kill.exe у меня процессы убивает "не спрося фамилии"

Вот есть консольный Process Viewer for Windows, с таким способом убития:
code text
  1. >pv.exe -h
  2.  
  3. PrcView v 3.7.4.1 command line utility by Igor Nys
  4. Usage: pv -[<MODE>] -[<OPTIONS>] <ARGUMENTS>...-[<OPTIONS>]
  5. ..
  6.  -c       --close     close (send WM_CLOSE) to the PROCESS
  7. ..


И ещё кстати в nncron почти готовый "гибкий консольный kill", как раз такой чтобы совсем не рыться ;) Если ему модифицировать \plugins\procwin.spf PROC-CLOSE на вариант с ожиданием ..как-нибудь так:

code forth
  1. \ Closes all windows of process and terminates this process after it.
  2. \ mod: wait <number> of milliseconds before hard-killing, specify 0 to disable this feature
  3. : PROC-CLOSEW { a u n -- }
  4.     a u PROC-EXIST? ?DUP
  5.     IF
  6.         ['] CloseProcWindow EnumWindows DROP
  7.         n ?DUP
  8.         IF
  9.           PAUSE
  10.           a u KILL
  11.         THEN
  12.          \ на всякий случай, если процесс окошек не имеет
  13.     THEN
  14. ;
  15. : PROC-CLOSEW: eval-string, number, POSTPONE PROC-CLOSEW ; IMMEDIATE


PS Без полнотекстового поиска по базе жизнь не мила ;) Для справочных целей еле спасся гуглом.
 
Это сообщение редактировалось 06.07.2004 в 11:38
+
-
edit
 

Mishka

модератор
★★★

А не смотрел на tasklist, taskkill? Вроде как в XP это стандарт.
 
RU slipstream #07.07.2004 06:25
+
-
edit
 

slipstream

втянувшийся
> .. tasklist, taskkill? Вроде как в XP это стандарт.

В tasklist/taskkill к сожалению нет листинга/фильтра по ресурсам. А taskkill для закрытия наверное действительно лучше, чем pv, - не ожидает результата (в pv используется Send* вместо Post*).
Но всё равно в обоих нет полностью автоматического закрытия, с разделением способа убития или с ожиданием, без скриптинга не обойтитсь ;)

Lerm

втянувшийся
Кстати, просто вспомнил - может кому пригодится... Очень часто Opera держит открытыми хендлы каталогов из которых считывала файлы. Т.е. у меня если диск не хочет отключаться и нет программ, которые его явно используют, то с 90% вероятностью нужно закрыть Оперу.
You live and learn. Or you don't live long.  

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru