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

Вниз

Можно ли перезаписать "работающий" файл?   Найти похожие ветки 

 
Dimich1978   (2006-05-10 13:28) [0]

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


 
Сергей М. ©   (2006-05-10 13:31) [1]


> Как это можнро обойти


Док.способами - никак.


 
Dstr ©   (2006-05-10 19:20) [2]

Есть 2 способа(за рабочесть - не отвичаю):
1.Exe"шник загружает обновления в Temp винды,создает батник(который копирует файлы и самоуничтожается),запускает батник,выгружается из памяти...2 через 10 мин


 
Dstr ©   (2006-05-10 19:25) [3]

Вот 2,но я его уже писал на форуме,ето статья
В Windows NT 4/2000 есть такая API функция, имеющая очень интересный последний аргумент. Функция позволяет также переименовывать указанный файл или директорию.

MoveFileEx(ExistingFN, NewFN, MOVEFILE_REPLACE_EXISTING или
MOVEFILE_DELAY_UNTIL_REBOOT



Если задать MOVEFILE_DELAY_UNTIL_REBOOT в dwFlags (характерно для Windows NT 4/2000), то в реестр будет занесена специальная информация и после перезагрузки Windows сотрёт или перепишет указанный файл

Параметры:

ExistingFN указатель на строку (null-terminated) , которая содержит имя нужного нам файла или директории.
NewFN указатель на строку (null-terminated), содкржащую новое имя файла, указанного ExistingFN.
Флаг MOVEFILE_REPLACE_EXISTING указывает функции заменить, если файл ExistingFN уже существует. Если указать в NewFN - nil, ExistingFN будет стёрт.
Пример:

Перемещение файла:

MoveFileEx("c:\winnt\system32\kernel32.dll", "d:\winnt.bak\system32\kernel32.dll",
MOVEFILE_REPLACE_EXISTING или MOVEFILE_DELAY_UNTIL_REBOOT



Удаление существующего файла:

MoveFileEx("c:\winnt\system32\kernel32.dll", nil,
MOVEFILE_REPLACE_EXISTING или MOVEFILE_DELAY_UNTIL_REBOOT


Или делай так чтоб все сидело в DLL (Exe шник токо загружает при запуске DLL в память)



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

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

Наверх




Память: 0.45 MB
Время: 0.011 c
15-1147467855
Yanis
2006-05-13 01:04
2006.06.18
Где скачать Delphi 2 и Delphi 1?


15-1148455238
alles
2006-05-24 11:20
2006.06.18
Знатокам asp


15-1148249744
SkyRanger
2006-05-22 02:15
2006.06.18
Как извлечь из локального SVN номер релиза?


5-1133515534
Tonich
2005-12-02 12:25
2006.06.18
TDateTimePicker


3-1145705181
Алексей1
2006-04-22 15:26
2006.06.18
Как можно сгруппировать по месяцам





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