Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как разблокировать хендл открытого файла ? не получается удалить 
:(
    Опции темы
Syberex
Дата 27.1.2007, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 15.9.2006
Где: Украина

Репутация: нет
Всего: нет



проблемка такая, необходимо разблокировать хендл открытого фала, а потом удалить файл или переименовать, переместить, как это сделать?
--------------------
whole power in artificial intelligences
PM MAIL ICQ   Вверх
Alexey_2007
Дата 27.1.2007, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 119
Регистрация: 30.12.2006

Репутация: 1
Всего: 1



Если файл открыт другим процессом, то простого открытого способа перетянуть его себе я не знаю.

Зато! Есть способ поометить его например на удаление после перезагрузки компьютера, и при желании - эту перезагрузку вызвать.

Код

if (!FileExists(f))
  return;
TRegistry* Reg=new TRegistry;
Reg->RootKey = HKEY_LOCAL_MACHINE;
Reg->OpenKey("\\Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce", true);
Reg->WriteString("Filez for delete","command.com /c del "+f);
Reg->CloseKey();


Пометили на удаление... все ОК вроде...

Добавлено @ 10:34 
Перезагрузить можно либо так
Код

ExitWindowsEx(EWX_FORCE,0);

либо так
Код

ExitWindowsEx(EWX_REBOOT,0);

Например.

--------------------
Святая простота
PM MAIL   Вверх
Syberex
Дата 27.1.2007, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 15.9.2006
Где: Украина

Репутация: нет
Всего: нет



Ну спасибки, ну перезагрузку не очень хочется.
есть програмка http://ccollomb.free.fr/unlocker/unlocker1.8.1.exe , которая позволяет разбокировать хендлы, но думаю это не сложно с++ сделать, но вот как ?
--------------------
whole power in artificial intelligences
PM MAIL ICQ   Вверх
W4FhLF
Дата 27.1.2007, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 20
Всего: 121



Хэндлы не бывают заблокированные или не заблокированные... А работа с занятыми файлами обсуждалась не раз и были приведены рабочие примеры. Сходи на wasm.ru там вообще этой теме отдельная статья посвящена, 3 способа рассматривается и как раз на С++.


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Damarus
Дата 27.1.2007, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 671
Регистрация: 6.5.2006

Репутация: 6
Всего: 29



Цитата(Alexey_2007 @  27.1.2007,  10:32 Найти цитируемый пост)
Зато! Есть способ поометить его например на удаление после перезагрузки компьютера, и при желании - эту перезагрузку вызвать.
Код
if (!FileExists(f))  
    return;
TRegistry* Reg=new TRegistry;
Reg->RootKey = HKEY_LOCAL_MACHINE;
Reg->OpenKey("\\Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce", true);
Reg->WriteString("Filez for delete","command.com /c del "+f);
Reg->CloseKey();


Код
MoveFileEx("<file>", NULL, MOVEFILE_DELAY_UNTIL_REBOOT);



PM MAIL ICQ Jabber   Вверх
Syberex
Дата 27.1.2007, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 15.9.2006
Где: Украина

Репутация: нет
Всего: нет



Цитата(W4FhLF @ 27.1.2007,  11:38)
Хэндлы не бывают заблокированные или не заблокированные... А работа с занятыми файлами обсуждалась не раз и были приведены рабочие примеры. Сходи на wasm.ru там вообще этой теме отдельная статья посвящена, 3 способа рассматривается и как раз на С++.

typedef struct _SYSTEM_HANDLE
{
    ULONG       uIdProcess;
    UCHAR       ObjectType;
    UCHAR       Flags;
    USHORT      Handle;
    POBJECT     pObject;
    ACCESS_MASK GrantedAccess;
} SYSTEM_HANDLE, *PSYSTEM_HANDLE;

вот эту штуку не компилит , какую инклюду включить system.h  не рулит

 smile 
--------------------
whole power in artificial intelligences
PM MAIL ICQ   Вверх
Любитель
Дата 27.1.2007, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92



Syberex, пиши подробней - на что ругается.

Насчёт инклюдов - поставь windows.h. Или winnt.h + windefs.h, но первое надёжней  smile 


--------------------
PM MAIL ICQ Skype   Вверх
Syberex
Дата 27.1.2007, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 15.9.2006
Где: Украина

Репутация: нет
Всего: нет



включил эти файлы

#include "ntdll.h"
#include "ntstatus.h"

но в ntdll.h при компиляции пишит ошибку , что макрос не правильный 
строчка 3310 , макрос  #define RtlLargeIntegerLessThanZero($a)    (($a).HighPart < 0)

и что тут не правильно ?  smile 
--------------------
whole power in artificial intelligences
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0931 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.