Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Дерегистрация типа файла в системе [D7, WinXP]


Deedlit ©   (2004-08-04 14:22:00) 

Нужно регистрировать некоторые типы файлов в системе за приложением. Написала следующие процедуры:

{ Процедура регистрирует тип файлов. }
procedure TMainForm.RegisterScriptType(Extension: string);
 var
 Registry: TRegIniFile;
begin
 Registry:=TRegIniFile.Create;
 try
 With Registry do begin
   RootKey:=HKEY_CLASSES_ROOT;
   WriteString('.'+Extension,'', 'My.Application');
   end;
 finally
 Registry.Free;
 end;
end;


procedure TMainForm.UnregisterScriptType(Extension: string);
 var
 Registry: TRegIniFile;
begin
 Registry:=TRegIniFile.Create;
 try
 With Registry do begin
   RootKey:=HKEY_CLASSES_ROOT;
   EraseSection('.'+Extension);
   end;
 finally
 Registry.Free;
 end;
end;


При запуске программа заносит в реестр собственно ветку My.Application:

 With Registry do begin
   RootKey:=HKEY_CLASSES_ROOT;
   WriteString('My.Application', '', 'My File');
   WriteString('My.Application\DefaultIcon', '', Application.ExeName+',0');
   WriteString('My.Application\Shell', '', 'DefaultOpen');
   WriteString('My.Application\Shell\DefaultOpen', '', 'Открыть');
   WriteString('My.Application\Shell\DefaultOpen\command', '', '"'+Application.ExeName+'" "%1"');
   end;


Регистрация проходит нормально. Попытка дерегистрации ничего не даёт - ключ удаляется, но система (WXP) упорно продолжает использовать это приложение для открытия файла. Откуда она знает, как это делать - непонятно: связь-то удалена. :(

Кто-нибудь знает, в чем проблема? Не помогает ни перезагрузка, ни SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_FLUSH, nil, nil)- которая, по идее, должна обновить файловые ассоциации. :(


panov   (2004-08-04 16:35:00) [1]

>Deedlit   (04.08.04 15:42) [3]

Может тема имеет отношение к программированию в Delphi?
Сильно сомневаюсь.

Ветка относится к теме "Работа с системой".


Deedlit   (2004-08-04 15:42:00) [2]

Разгребла проблему. В общем, процедуры свою задачу выполняют полностью, а дополнительные ассоциации (прописываются в недрах HKEY_LOCAL_MACHINE и HKEY_CLASSES_ROOT, в тамошней ветке Explorer и т.п.) возникают при «ручной» привязке типа файла приложению. Чистить всю эту лабуду программно - врагу не пожелаю.

Всем большое спасибо за советы, помогло. :)

P.S.Уважаемая администрация, в WinAPI эта тема никакого отношения не имеет. ;)


Андрей Сенченко   (2004-08-04 14:27:00) [3]

А поиск этого расширения в регистре ничего больше не дает ?
Может в XP еще где связи остаются ?

Чисто предположение.


Sergey Kaminski   (2004-08-04 14:26:00) [4]

Поищи после деинсталяции по реестру на предмет своего расширения. Может XP его где-то еще пишет после первого запуска программы с файлом.


Наверх

Титульная страница Поиск, карта сайта Написать письмо