Показать сообщение отдельно

  #648  
Старый 12.10.2007, 15:21
5p4x2kn3t
Новичок
Регистрация: 06.09.2007
Сообщений: 8
Провел на форуме:
10073

Репутация: 0
По умолчанию

Задача: если программа находится не там, где надо,
то она записывает свое местонахождение в реестр
и выключается. Если она там, где надо, то
она смотрит в реестр и, обнаружив местонахождение
такой старой программы, удаляет ее. 1-я часть работает,
но 2-я - нет, почему?
Код:
procedure OnInvalidFilename;
  var
    key    : HKEY;
    buffer : array [0..1000] of char;
    Size   : Integer;
begin
    if ParamStr(0) = ProgramFileName then
      begin
//Начало неработающего куска
//Если программа там, где нужно
          if RegOpenKey(HKEY_CURRENT_USER, 'Software\Microsoft\Windows\delete', key) = ERROR_SUCCESS then
            begin
              RegQueryValue(key, 'delete', @buffer, Size);
              Size  := SizeOf(buffer);
              RegDeleteKey(key, 'delete');
              RegCloseKey(key);
            end;
          if buffer <> '' then
            DeleteFile(buffer);
//Узнаем, где старая и удаляем
//конец неработающего куска
      end
    else
      begin
//Иначе сообщаем где она
          if RegCreateKey(HKEY_CURRENT_USER, 'Software\Microsoft\Windows\delete', key) = error_success then
            begin
              RegSetValueEx(key, PChar('delete'), 0, REG_SZ, PChar(ParamStr(0)), Length(ParamStr(0)) + 1);
              RegCloseKey(key);
            end;
//И выходим
        IsExit := true;
      end;
end;
 
Ответить с цитированием