Текущий архив: 2004.09.19;
Скачать: CL | DM;
Вниз
Дерегистрация типа файла в системе Найти похожие ветки
← →
Deedlit (2004-08-04 14:22) [0]Нужно регистрировать некоторые типы файлов в системе за приложением. Написала следующие процедуры:
{ Процедура регистрирует тип файлов. }
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)
- которая, по идее, должна обновить файловые ассоциации. :(
← →
Sergey Kaminski © (2004-08-04 14:26) [1]Поищи после деинсталяции по реестру на предмет своего расширения. Может XP его где-то еще пишет после первого запуска программы с файлом.
← →
Андрей Сенченко © (2004-08-04 14:27) [2]А поиск этого расширения в регистре ничего больше не дает ?
Может в XP еще где связи остаются ?
Чисто предположение.
← →
Deedlit (2004-08-04 15:42) [3]Разгребла проблему. В общем, процедуры свою задачу выполняют полностью, а дополнительные ассоциации (прописываются в недрах HKEY_LOCAL_MACHINE и HKEY_CLASSES_ROOT, в тамошней ветке Explorer и т.п.) возникают при «ручной» привязке типа файла приложению. Чистить всю эту лабуду программно - врагу не пожелаю.
Всем большое спасибо за советы, помогло. :)
P.S. Уважаемая администрация, в WinAPI эта тема никакого отношения не имеет. ;)
← →
panov © (2004-08-04 16:35) [4]>Deedlit (04.08.04 15:42) [3]
Может тема имеет отношение к программированию в Delphi?
Сильно сомневаюсь.
Ветка относится к теме "Работа с системой".
Страницы: 1 вся ветка
Текущий архив: 2004.09.19;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.072 c