Показать полную графическую версию : [решено] Система говорит, что файл используется. Как узнать каким процессом?
если система говорит (при удалении или еще когда), что данный файл используется "кем-то", можно ли (и если можно, что как) узнать, КЕМ ИМЕННО он используется?
круто... ну посмотрел и что?
удалять процессы и смотреть, что получится - это неправильно...
тогда может спросить по-другому...
как посмотреть, какие файлы использует конкретный процесс?
Юзай тулзу procexp, взять можно на http://www.sysinternals.com
FileMon... Ссылку не дам, прости :(
Уже старая утилита, но ещё юзается :)
Хотя, пожалуй, procexp - понавороченнее...
FileMon там же на http://www.sysinternals.com
Warwar
Вообще-то, у нас есть тема, посвященная проблемам удаления файлов. Рекомендую почитать http://forum.oszone.net/showthread.php?t=6677
дело не в удалении... дело в принципе :о)
по-поводу FileMon... юзаю, давно уже... но проблему не решает, поскольку если файл ОТКРЫТ, но ни записи ни чтения не идет, то filemon НИЧЕГО не покажет, так как показывает именно АКТИВНУЮ работу с файлами, а не просто занятость файла как ресурса системы... по по-воду второй проги - посмотрю, не юзал еще... всем спасибо за ответы :о) видимо СРЕДСТВАМИ СИСТЕМЫ то, что мне нужно, сделать нельзя В ПРИНЦИПЕ...
Проги по теме:
FreeFile
WhoLockMe
Unlocker
Для последнего создал топик (http://forum.oszone.net/showthread.php?t=51329) в "Новостях ПО". Там по ссылкам можновыйти еще на кучу аналогичных прог...
Fox1988z
08-07-2005, 17:27
Есть такая прога unlocker называется. Качай http://ccollomb.free.fr/unlocker и ставь. В меню появится доп. строчка нажимаеш на нужный файл unlocker - выскачит окошко с названием процесса.
Gennady Zabrodsky
12-08-2009, 04:12
Загрузить тулзу Handle.exe с адреса http://technet.microsoft.com/en-us/sysinternals/bb896655.aspx
Потом следущий код будет выдавать процессы которые используют файл
string fileName = @"c:\aaa.doc";// File full path to unlock
Process tool = new Process();
tool.StartInfo.FileName = "handle.exe";
tool.StartInfo.Arguments = fileName;
tool.StartInfo.UseShellExecute = false;
tool.StartInfo.RedirectStandardOutput = true;
tool.Start();
tool.WaitForExit();
string outputTool = tool.StandardOutput.ReadToEnd();
string matchPattern = @"(?<=\s+pid:\s+)\b(\d+)\b(?=\s+)";
foreach(Match match in Regex.Matches(outputTool, matchPattern))
{
Process.GetProcessById(int.Parse(match.Value)).Kill();
}
pavlundiy
30-12-2010, 08:55
Спасибо! Unlocker помог! Взял из Total Commander Power User v.50
myhouse_1991
30-12-2010, 11:01
если система говорит (при удалении или еще когда), что данный файл используется "кем-то", можно ли (и если можно, что как) узнать, КЕМ ИМЕННО он используется? »
Можно использовать Process Explorer от SysInternals.
Find>Handle or DLL и вбиваешь имя файла. После чего найдешь Handl'ы, которые используют данный файл и процесс. Мне этот метод нравится тем, что для поиска ему не нужен пользователь с завышенными правами, чем Unlocker, который требует права Debug'ера - не жирно ли такие права требовать?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.