Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.62 MB
Время: 0.034 c
4-66393
romanK
2001-11-20 17:47
2002.01.21
хранитель екрана


3-66205
fishka
2001-12-18 12:10
2002.01.21
Поле типа Identity - как задать значение, с которого начинать нумерацию?


1-66279
Antoniz
2002-01-04 15:12
2002.01.21
Как через TopenDialog выбрать папку


3-66198
ol
2001-12-18 10:01
2002.01.21
переменные в sql в mssql??


1-66263
Анатолий
2002-01-01 03:51
2002.01.21
выполнение модуля





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский