Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Обновление файла после перезагрузки системы

Автор: Dimka Maslov
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Обновление файла после перезагрузки системы

Данная процедура настраивает систему для обновления файлов после перезагрузки.
TargetFileName - имя файла, содержиоме которого при перезагрузке будет заменено
на содержимое файла, имя которого укзаывается в параметре SourceFileName.

Если первый аргумент процедуры представляет собой пустую строку, при
перезагрузке файл SourceFileName будет удалён.

Зависимости: Windows
Автор:       Dimka Maslov, mainbox@endimus.ru, ICQ:148442121, Санкт-Петербург
Copyright:   Dimka Maslov
Дата:        18 ноября 2002 г.
***************************************************** }

procedure BootReplaceFile(TargetFileName, SourceFileName: string)
var
  WinInitName: string;
  P: PChar;

  procedure InternalGetShortPathName(var S: string);
  begin
    UniqueString(S);
    GetShortPathName(PChar(S), PChar(S), Length(S));
    SetLength(S, StrLen(@S[1]));
    CharToOEM(PChar(S), PChar(S));
  end;

begin
  if Win32Platform = VER_PLATFORM_WIN32_NT then
  begin
    if TargetFileName <> '' then
      P := PChar(TargetFileName)
    else
      P := nil;
    MoveFileEx(PChar(SourceFileName), P,
      MOVEFILE_DELAY_UNTIL_REBOOT or MOVEFILE_REPLACE_EXISTING);
  end
  else
  begin
    SetLength(WinInitName, MAX_PATH);
    GetWindowsDirectory(@WinInitName[1], MAX_PATH);
    SetLength(WinInitName, StrLen(@WinInitName[1]));
    WinInitName := IncludeTrailingBackslash(WinInitName) + 'WININIT.INI';
    if TargetFileName = '' then
      TargetFileName := 'NUL'
    else
      InternalGetShortPathName(TargetFileName);
    InternalGetShortPathName(SourceFileName);
    WritePrivateProfileString('Rename', PChar(TargetFileName),
      PChar(SourceFileName), PChar(WinInit));
  end;
end;

Пример использования:

// После перезагрузки содержимое первого файла будет заменено на
// содержимое второго файла, а второй файл будет удалён
BootReplaceFile('c:\Program Files\proga.exe', 'c:\temp\proga.exe');

// Указанный файл будет удалён после перезагрузки
BootReplaceFile('', 'c:\temp\proga.exe');
Проект Delphi World © Выпуск 2002 - 2004
Автор проекта: ___Nikolay