Не создается ветка реестра

Игорь Ч
Дата: 12.05.2011 19:36:57
В программе выполняется следующий код

procedure TdmMain.Associate; // Асоциирование файлов форм
var
  s: string;
  Reg: TRegistry;
begin
  Reg:=TRegistry.Create;
  Reg.RootKey:= HKEY_CLASSES_ROOT;

  Reg.OpenKey('.form\OpenWithProgids\', true);
{  Reg.WriteString('Client.exe', '');

  Reg.OpenKey('\Client.exe\DefaultIcon\', true);
  s:= Application.ExeName + ',0';
  Reg.WriteString('', s);

  Reg.OpenKey('\Client.exe\Shell\Open\', true);
  Reg.WriteString('', 'Открыть в Client');

  Reg.OpenKey('command\', true);
  s:= '"' + Application.ExeName + '" "%1"';
  Reg.WriteString('', s);
           }
  Reg.Free;

  SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);
end;
на машине, где собственно ведется разработка ветка HKEY_CLASSES_ROOT.form\OpenWithProgids\ создается без проблем.
Зато на машине пользователя ветка НЕ создается (ошибки возникают только если пытаюсь прописать книть параметр (закометарено))
GunSmoker
Дата: 12.05.2011 19:56:05
За запись в HKEY_CLASSES_ROOT в 2011-м году надо палкой по рукам. Чтоб запоминалось.
Anatoly Podgoretsky
Дата: 12.05.2011 20:00:25
Права то есть?
И сообщение о том, что возникают ошибки очень информативное.
Игорь Ч
Дата: 12.05.2011 20:03:33
Ну извините. До этого все писал в инсталляторе, посему на тему корректности заполнения реестра сильно не заморачивался - взял первый попавшийся пример http://delphidevelop.ru/publ/13-1-0-229
Просветите, или направьте, куда и как прописать регистрацию ассоциированных файлов?
Игорь Ч
Дата: 12.05.2011 20:07:16
Ошибка: Failed to set data for 'Client.exe'
Игорь Ч
Дата: 12.05.2011 21:09:28
Указал в свойствах программы вкладка "Совместимость" панель "Уровень прав" свойство "выполнять эту программу от имени администратора" - все заработало, ветка создалась. Насколько это правильное решение? пробовал под Win7 будет ли работать под XP?
GunSmoker
Дата: 12.05.2011 21:22:57
Это ни разу не правильное решение даже для Windows 2000, не говоря уже про XP.

Регистрироваться надо в HKCU\Software\Classes, а не в HKCR. Если, конечно, ты не ставишь программу для всех пользователей (и тогда надо писать в HKLM\Software\Classes), но тогда эту работу делал бы установщик.
Игорь Ч
Дата: 12.05.2011 21:43:19
почему другие проги пишут свою ассоциацию в HKCR ?
GunSmoker
Дата: 12.05.2011 22:23:20
Потому что им палками по рукам не били.
mallory
Дата: 14.11.2011 16:55:48
Игорь Ч
Ошибка: Failed to set data for 'Client.exe'
Как при таком сообщении программу отлаживать ?

Если не под отладкой запускать, то можно указать "Запустить от имени администратора". А тут что.