Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.01.21;
Скачать: CL | DM;

Вниз

Как сделать какой-то файл, скажем – «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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.008 c
1-66254
Builder
2002-01-03 17:00
2002.01.21
Копирование запущенного файла


1-66298
Sheva
2002-01-03 11:57
2002.01.21
SpeedButton.


3-66216
Kaster
2001-12-18 21:12
2002.01.21
Помогите пожайлуста! Мне надо, чтобы после поиска, найденная запись стала первой в DBGrid е!


14-66357
Anonym
2001-11-23 12:58
2002.01.21
Проблемы программирования


1-66305
Yuraz
2002-01-04 15:05
2002.01.21
Как отменить это свойство Font.Style:=