Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.10.10;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.57 MB
Время: 0.056 c
14-1095536785
yanval
2004-09-18 23:46
2004.10.10
Ещё раз про IIS


10-1045474963
Vladimir
2003-02-20 11:03
2004.10.10
corba callback


1-1096009386
NewDelpher
2004-09-24 11:03
2004.10.10
проблемы с AV при вызове Procedure Of Object


14-1095501470
Максим
2004-09-18 13:57
2004.10.10
Есть ли русскоязычный HELP на Delphi 7.0?


14-1095672297
icebeerg
2004-09-20 13:24
2004.10.10
Краткое продолжение Вечная жизнь (BiN 20.09.04 12:44)





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский