Форум: "Основная";
Текущий архив: 2002.01.21;
Скачать: [xml.tar.bz2];
ВнизКак сделать какой-то файл, скажем – «C: Test.cnf» заблокированным?! Найти похожие ветки
← →
~(;_;)~ (2001-12-28 14:48) [0]Как сделать какой-то файл, скажем – «C:\Test.cnf» заблокированным, то есть
Что бы его некто кроме как из моей программы не мог открыть, удалить, переместить, или переименовать!
Заранее благодарен!
← →
panov (2001-12-28 15:10) [1]Никак.
← →
Вадим (2001-12-28 15:50) [2]А если его открыть и не закрывать?
← →
Delphimun (2001-12-28 16:07) [3]Вадим?>
Это идея. Запускать свой прогу на старте виндовс и closefile не делать!
var
a: file;
begin
assignfile(a,"C:\1.txt");
{$i-}
reset(a);
{$i+}
И всё!
← →
Nikolay (2001-12-28 17:43) [4]2panov не прав :-)
если ее открыть для записи/чтения то никто с
ним больше ничего не сделает только по
закрытию проги желательно файлик закрывать :+)
← →
Yuri-7 (2001-12-28 18:11) [5]Установи ему атрибуты "только чтение" и "скрытый", а чтобы никто понять ничего не смог, еще и перекодируй его.
← →
panov (2001-12-28 19:30) [6]>Nikolay © (28.12.01 17:43)
А кто же файл тогжа блокировать будет, если программа будет закрыта?
← →
~(;_;)~ (2001-12-28 20:34) [7]Panov не прав по любому, сделать можно все – главное знать как это делать!
Я тут нашел что-то вот:
hMyLockedFile := OpenFile( "c:\test.cn", ofStruct, OF_CREATE Or OF_READWRITE Or OF_SHARE_EXCLUSIVE );
Но почему-то этот код не работает, говорит что не знает что такое hMyLockedFile!
Может кто вспомнил?
Та подскажет мне, что ссс делать, может что в uses пихать надо просто?
Правда эта функция только блокирует доступ к файлу, но пока и этого достаточно будет!
← →
Song (2001-12-28 20:53) [8]hMYLockedFile в Ващем случае это просто переменная. А так как функция OpenFile открывает файл и возвращает хэндл, то её тип - целый.
← →
panov (2001-12-29 08:12) [9]>~(;_;)~ (28.12.01 20:34)
"Panov не прав по любому, сделать можно все – главное знать как это делать!"
- Не все. Например, напиши программу, которая найдет ошибки в ядре WINDOWS, а также защитит твой компьютер от любых вирусов.
Если я не прав, тогда ответь - в чем?
Ты что, свою программу вечно собираешься держать в рабочем состоянии?
Т.е. при загрузке Windows запустил свою программу, и будет она работать, пока пользователь компьютер не выключит?
А если он твою программу убьет?
Да же если "скрытый" сервис напишешь - и его можно убить.
← →
SergVlad (2001-12-29 09:45) [10]Для платформ Форточек panov абсолютно прав, если задача ставиться в общем случае.
← →
Alx2 (2001-12-29 09:54) [11]В поддержку panov"a:
В теории алгоритмов строго доказан факт, что невозможно построить алгоритм, способный доказать корректность любых других алгоритмов. (Под корректностью можно понимать хотя бы конечное время работы алгоритма).
← →
Aleksey Pavlov (2001-12-29 11:25) [12]panov, SergVlad неправы.
Про TFileStream слышали ?
Так вот:
var
FileToLock: TFileStream;
begin
FileToLock:=TFileStream.Create("myfile.txt", параметр);
Параметр - это способ открытия файла, посмотрите в help-е, не поленитесь, этот параметр может быть таким, что файл открывается только на чтение, только на запись и на то и на то, а так же так, что никакое иное приложение вообще не может использовать его.
Не забудте сделать FileToLock.free; когда надо будет "освободить" файл.
← →
gek (2001-12-29 11:28) [13]>>Aleksey Pavlov
Практически то же FileOppen
← →
Fellomena (2001-12-29 11:28) [14]Действительно, способ предложенный Алексеем работает - я не раз им пользовалась.
Но я слышала, что с помощью Stream-ов можно по тому же алгоритму заблокировать каталог, но когда в конструктор класса TFileStream передаю имя каталога - возникает исключение 8(
Есть мысли по этому поводу.
(можно конечно hook вешать, но возни с ними...)
← →
panov (2001-12-29 11:33) [15]>Aleksey Pavlov (29.12.01 11:25)
После окончания выполнения программы файл освобождается.
Приведи рабочий пример, как после выхода из программы файл остается заблокированным.
← →
Aleksey Pavlov (2001-12-29 11:46) [16]>> panov:
А я и не говорил, что после уничтожения процесса, открывшего файл таким образом, файл будет оставаться заблокированным.
Но что мешает вам, к примеру, написать dll которая будет загружаться в контексте процесса Explorer-a и с которой ваша программа будет работать ?
В итоге, ваша программа передаёт в dll имена файлов, доступ к которым должен быть ограничен и завершает свою работу, а dll остаётся в памяти и работает, вплоть до уничтожения процесса Explorer-а.
← →
panov (2001-12-29 11:49) [17]>Aleksey Pavlov (29.12.01 11:46)
Вот про это разговор и идет.
Наконец-то автор получил ответ:-)
"написать dll которая будет загружаться в контексте процесса Explorer-a"
← →
Вадим (2001-12-29 15:26) [18]>Fellomena (29.12.01 11:28)
>(можно конечно hook вешать, но возни с ними...)
И на что же hook вешать?
← →
Almaz (2001-12-30 00:30) [19]Господа, единственным вариантом абсолютной защиты файла будет написание собственного драйвера, который затем прописывается в системе и, как и положено драйверу, загружается вместе с виндой. В этом драйвере используя IFS менеджер ставим hook на все файловые операции - и все.
Таким же образом можно защитить и каталог.
Удачи.
← →
Yaro (2001-12-30 14:11) [20]>> Almaz - Это сильно сложно, и, если на то пошло, можно пользоваться уже готовыми программами, но для нас, рядовых программистов, наиболее подходящий способ - это OpenFile/CloseFile - Ето наиболее удобный способ, помню я еще прогу на 3-ей делфи писал, чтоб никто мои файлы на работе не трогал :)
>> Fellomena - Помнишь про движение планет? Извини, в твоем случае я помочь не могу, у тебя вся изначальная система для этого не была предназначена... Надо было переделывать весь алгоритм, но времени у меня было не так много... Так что извини...
← →
Fellomena (2002-01-03 10:57) [21]2 Yaro: ??? про движение планет ? - извини, не помню, imho перепутал меня с кем-то =)
...или я совсем память потеряла 8)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.01.21;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.004 c