Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.024 c
2-1148957631
verybadbug
2006-05-30 06:53
2006.06.18
загрузка данных в webbrowser


15-1148380909
Василий Алибабаевич
2006-05-23 14:41
2006.06.18
еМул - количество отданой инфы


15-1148286283
Fin
2006-05-22 12:24
2006.06.18
Правила в фаерволе для ограничения


2-1149056241
Тимофеич
2006-05-31 10:17
2006.06.18
размеры окна


2-1149146091
new_user
2006-06-01 11:14
2006.06.18
Пункт меню




   Наверх