Re[2]: cannot open output file, permission denied
От: cures Россия cures.narod.ru
Дата: 28.04.11 12:24
Оценка:
S>Найдите утилиту, которая показывает кто открыл/заблокировал файл с вашей программой. Посмотрите и потом делайте выводы...

Русинович и Unlocker хандла в упор не видят, при этом Unlocker не может его удалить, LockHunter из эксплорера говорит, что всё чисто, а если ему задать этот файл в менюшке — обижается, что у меня не хватает прав, и рекомендует обратиться к владельцу или администратору, коими являюсь я
Может быть его надо пускать от имени System, но я уже забыл, как это делается.
Зато OFV (в тестовом режиме системы) таки хандл видит, говорит следующее:
==================================================
Filename          : r0.exe
Full Path         : \r0\r0.exe
Handle            : 0xcdc
Created Time      : N/A
Modified Time     : N/A
Attributes        : 
File Size         : 0
Read Access       : *
Write Access      : 
Delete Access     : 
Shared Read       : *
Shared Write      : 
Shared Delete     : *
Granted Access    : 0x00000080
File Position     : 0
Process ID        : 4
Process Name      : System Process
Process Path      : 
Extension         : exe
% Position        : 
==================================================

В том и засада, что лочит его какая-то часть системы (или может какой-то неудалившийся огрызок ДрВеба), зачем-то мусолит его несколько минут, потом выплёвывает.
Поверить в это, самому не натолкнувшись, очень сложно, поэтому везде в форумах и предлагают "закрыть программу".
Как копать дальше внутрь процесса System? Он состоит из многих тредов (их показывает ProcessHacker), но, насколько я знаю, нет понятия принадлежности хандла нити, только процессу? Я подозреваю нить MpFilter.sys, она якобы отвечает за безопасность.
Или может у меня завёлся какой-то станный руткит? Но зачем ему лочить экзешники? Причём лочить только после попытки запуска, если не запускать, то можно перекомпилировать сколько угодно.
Ещё один вариант — его кладут в какой-то кэш, на случай если вдруг начнут часто запускать. Тогда как такое отключать? Индексирование у меня отключено глобально.

На всякий случай привожу исходный текст программы:
int main() { return 0; }

Собирал и под 32-битный и под 64-битный режимы, всё едино.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.