
12.10.2007, 15:21
|
|
Новичок
Регистрация: 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;
|
|
|