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

Вниз

Блокирование файла   Найти похожие ветки 

 
Kniaz ©   (2004-09-23 15:38) [0]

Хочу работать с файлом обычными функциями типа AssignFile, RewRite, ReadLn, WriteLn,  но при это мне надо заблокировать этот файл от доступа из других приложений. Как это сделать????
С другими функциями работы с файлами общатся не умею.


 
Defunct ©   (2004-09-23 15:50) [1]

Система сама заблокирует доступ на запись для других приложений.


 
Sandman25 ©   (2004-09-23 15:52) [2]

FileMode


 
ламер ©   (2004-09-23 16:39) [3]

[offtop]
RewRite - довольно интересный вариант :)
[/offtop]


 
Fay ©   (2004-09-23 17:20) [4]

>> Система сама заблокирует доступ на запись для других приложений.
Это где-то написано, или опыт подсказывает?


 
pasha_golub ©   (2004-09-23 17:29) [5]

Defunct ©   (23.09.04 15:50) [1]
Ссылочку на инфо, плиз.


 
Квэнди ©   (2004-09-23 18:00) [6]

Как инетересно... блокирует сама.. забавно даже, т.е. кароч незя открыть несколько одинаковых файлов в блакноте?.. да? :))) во клас был бы :)


 
Amoeba ©   (2004-09-23 18:03) [7]


> Квэнди ©   (23.09.04 18:00) [6]

А с чего ты взял, что после загрузки в блокнот файл остается открытым?


 
Квэнди ©   (2004-09-23 18:08) [8]

Согласен, при открытии на запись, файл действительно блокируется, приношу свои извинения.


 
Defunct ©   (2004-09-23 18:10) [9]

Пока файл открыт приложением для записи (выделен системный Handle для записи), доступ по записи к нему другим приложениям заблокирован. Как только вы делаете FileClose/ CloseFile и т.п. блокировка снимается.

Квэнди ©   (23.09.04 18:00) [6]
Причем блин тут чтение? К тому же блокнот просто читает содержимое файла и сразу же его закрывает.

> Fay ©   (23.09.04 17:20) [4]
Удалите запущенный EXE файл или попробуйте в него что-то записать. В этом направлении ищите и документацию, искать документацию для того чтобы вам что-то доказать у меня нет ни времени ни желания. В системе не разрешается совместный доступ по записи в файл.


 
Fay ©   (2004-09-23 18:22) [10]

2  [9] Defunct ©   (23.09.04 18:10)

> В системе не разрешается совместный доступ по записи в файл.

Да что Вы говорите! Какая нехорошая система! Убил бы.

var
 h1, h2 : DWORD;
begin
 h2 := INVALID_HANDLE_VALUE;
 h1 := CreateFile("c:\boot.ini", GENERIC_WRITE, FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0);
 try
   if h1 = INVALID_HANDLE_VALUE then RaiseLastOSError;
   h2 := CreateFile("c:\boot.ini", GENERIC_WRITE, FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0);
   if h2 = INVALID_HANDLE_VALUE then RaiseLastOSError;

 finally
   if h1 <> INVALID_HANDLE_VALUE then CloseHandle(h1);
   if h2 <> INVALID_HANDLE_VALUE then CloseHandle(h2);
 end;
end;


 
pasha_golub ©   (2004-09-23 19:14) [11]

Fay ©   (23.09.04 18:22) [10]

Да что Вы говорите! Какая нехорошая система! Убил бы.

А говоришь - жена юрист ;-)


 
Fay ©   (2004-09-23 19:15) [12]

2  [11] pasha_golub ©   (23.09.04 19:14)
Если сказал - значит так и есть.
8)


 
Defunct ©   (2004-09-23 19:20) [13]

Fay ©   (23.09.04 18:22) [10]

>> В системе не разрешается совместный доступ по записи в файл.
Ок, это преувеличение.

> Да что Вы говорите! Какая нехорошая система! Убил бы.
> FILE_SHARE_WRITE
Ок, можно получить совместный доступ при большом желании.

по-умолчанию Delphi открывает (fmOpenWrite, fmReadWrite), так что все чики-пики, файл будет заблокированным:

CreateFile(PCHar(FileName), GENERIC_WRITE <or GENERIC_READ> , 0, nil, OPEN_EXISTING, 0, 0);

Кто по-умолчанию блокирует доступ? Система или делфи или ползователь. IMHO фраза [1] вполне корректна даже после замечания [10].


 
Fay ©   (2004-09-23 19:24) [14]

2  [13] Defunct ©   (23.09.04 19:20)
> IMHO фраза [1] вполне корректна даже после замечания [10].

Корректна, конечно. Только немножко преувеличена до некорректности. Не делает она этого "автоматически". Ну эта, которая система.

P.S.
"делфи или пользователь" - это как?


 
Defunct ©   (2004-09-23 19:28) [15]

> "делфи или пользователь" - это как?
отож, что никак.

> Только немножко преувеличена до некорректности. Не делает она этого "автоматически". Ну эта, которая система.

Ну дык, пост [6] довел меня до некорректного преувеличения.
Сорри.


 
Fay ©   (2004-09-23 19:43) [16]

На самом деле, таке впечатление ("автоматически") запросто может сложиться. Благо в Борланде работают крупные мастера по "заворачиванию" API. 8)


 
GanibalLector ©   (2004-09-23 20:02) [17]

>Система сама заблокирует доступ на запись для других приложений.
>>Это где-то написано, или опыт подсказывает?
Поверьте,недавно сам проверял!!!
А ты попробуй открыть файл...затем sleep(10000); и за это время мощи его из другого приложения.Сразу говорю,НЕ УДАЛИШЬ!!!

Кстати,насчет БЛОКНОТА,винда открывает файло,закидывает текс в редактор и закрывает файло.


 
Fay ©   (2004-09-23 20:05) [18]

2  [17] GanibalLector ©   (23.09.04 20:02)

> А ты попробуй открыть файл...затем sleep(10000); и за это
> время мощи его из другого приложения.Сразу говорю,НЕ УДАЛИШЬ!!!

Проверять лениво. Легче поверить. Но что нам демонстрирует данный опыт?


 
Fay ©   (2004-09-23 20:07) [19]

2 [17] GanibalLector ©   (23.09.04 20:02)
В догонку. Удалил без вопросов.


 
Fay ©   (2004-09-23 20:11) [20]

2 [17] GanibalLector ©   (23.09.04 20:02)
var
 h1 : DWORD;
begin
 h1 := CreateFile("c:\111.txt", GENERIC_WRITE, FILE_SHARE_WRITE or FILE_SHARE_DELETE, nil, OPEN_EXISTING, 0, 0);
 try
   if h1 = INVALID_HANDLE_VALUE then RaiseLastOSError;
   Sleep(10100);
 finally
   if h1 <> INVALID_HANDLE_VALUE then CloseHandle(h1);
 end;
end;


 
Defunct ©   (2004-09-23 20:13) [21]

Fay ©   (23.09.04 20:07) [19]

Cжульничал! ;)

FILE_SHARE_DELETE


 
Fay ©   (2004-09-23 20:14) [22]

2  [21] Defunct ©   (23.09.04 20:13)
Я ещё и Del нажал! Неслыхано! 8)
А это разве запрещено?


 
Defunct ©   (2004-09-23 20:15) [23]

Fay, давайте не будем спорить о возвышенном. Ясное дело сделать при большом желании можно практически все.


 
Fay ©   (2004-09-23 20:19) [24]

Признаться, я не горел желанием. 8)
И я не спорю. Я на самом деле думал, что что-то упустил, и мне чичяз на халяву всё расскажут. 8)


 
Defunct ©   (2004-09-23 20:32) [25]

Fay ©   (23.09.04 20:19) [24]

Вы убиваете веру! ;)
Теперь пойдут безграмотрые трояны, вирусня и т.п. ;)


 
Fay ©   (2004-09-23 20:38) [26]

2  [25] Defunct ©   (23.09.04 20:32)
> Теперь пойдут безграмотрые трояны, вирусня и т.п. ;)

Займитесь лучше чем-нибудь другим 8)


 
Defunct ©   (2004-09-23 20:50) [27]

Fay ©   (23.09.04 20:38) [26]
Дык, и занят другим.

А этим занимался в далеком прошлом и тяги к такого рода занятиям сейчас нет, да и вознгаграждение не прельщает. Максимум что можно получить - попасть в список Касперского с лейбой "Очень опасный стелс-призрак вирус" или и того хуже "Студенческий вирус, очень опасен из-за ошибки ... ", а то и совсем худо - по голове и штраф. А вот для более молодого поколения такая тема весьма актуальна, написать эдакого электронного зверька, который может сам позаботиться о себе. Очень даже повысит кругозор.


 
Fay ©   (2004-09-23 20:55) [28]

2  [27] Defunct ©   (23.09.04 20:50)

> Очень даже повысит кругозор

Для этого даже есть даже специальные учреждения. Полный пансион! 8)


 
Defunct ©   (2004-09-23 21:25) [29]

Fay ©   (23.09.04 20:55) [28]

Вот вы на шутку перевели, а зря. Для того чтобы написать диллетантский файловый вирус потребуется хотя бы год подготовки. Чтобы написать нормальный файловый вирус - 2 года подготовки + год на написание.

Только главное упор не на деструкцию делать, а на "выживание" в сложнейших условиях (антивирусные мониторы - церберы, сканеры-убийцы! да и ОС - не подарок и т.п.).

Сложность такого рода программ, гораздо выше чем, любой прикладной программы, да и вчаствости антивирус (говорю по собственному опыту) гораздо проще написать. Полноценный AV монитор с эвристикой можно сделать за пол-года, когда полноценный вирус требует год(ы).

PS: под полноценным вирусом подразумаваю, программу-генератор динамического полимофного кода с полным сохранением функциональности первоначальной копии.


 
Fay ©   (2004-09-23 21:36) [30]


> да и ОС - не подарок

Хотя об этом и написано в лицензионном соглашении, но есть люди (и их довольно много), которые считают, что эта_самая_ось - настоящий подарок для вирусмейкеров. Но эта тема (вирусы-вредилусы и т.д.) мне абсолютно не близка.

2 Kniaz ©   (23.09.04 15:38) [Ответить]

http://delphimaster.net/view/4-1095950229/

За время, сопоставимое с тем, которое мы (я и Defunct) потратили на переписку в этой ветке, вполне можно освоить "CreateFile & K"
Удачи.


 
Defunct ©   (2004-09-23 21:41) [31]

мдя.. под вечер грамматика хромает ;)
поправлюсь в только в термине, а то смысл теряется.

"полимофного" читать - полиморфного.


 
Defunct ©   (2004-09-23 21:52) [32]

>Хотя об этом и написано в лицензионном соглашении, но есть люди (и их довольно много), которые считают, что эта_самая_ось - настоящий подарок для вирусмейкеров.

В сравнении с другими - да, а так в ней тоже хватает всяких примочек и узких мест.



Страницы: 1 вся ветка

Текущий архив: 2004.10.10;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.022 c
14-1095837337
Romkin
2004-09-22 11:15
2004.10.10
Первый Прототип Персонального Компьютера


1-1095976334
Ezhik
2004-09-24 01:52
2004.10.10
Поиск файлов


14-1095664299
Holy
2004-09-20 11:11
2004.10.10
Наладонники


14-1094827567
Anatoly Podgoretsky
2004-09-10 18:46
2004.10.10
Об учебе в России.


1-1096356152
Rule
2004-09-28 11:22
2004.10.10
Подскажиет где торомжу, поему возникает ошибка Object or Class