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

Delphi: Ошибка при записи в реестр функцией RegSetValueExW
  #1  
Старый 22.12.2008, 18:27
Ta2i4
Новичок
Регистрация: 10.09.2007
Сообщений: 17
С нами: 9825304

Репутация: 5
По умолчанию Delphi: Ошибка при записи в реестр функцией RegSetValueExW

Я юзаю Delphi 2007 и TMS Unicode Components Pack 1.7.0.2 (бывшие TNT Unicode Controls).

Подключаю в uses юнит TntRegistry.

В коде:
Код:
if myreg.OpenKey('*\shell\MyApp\command',True)
then begin
  myreg.WriteString('','"'+TntApplication.ExeName+'" "%1"');
  myreg.CloseKey;
end;
Возникает ошибка. Если закомментировать myreg.WriteString, то ошибки нет. Ошибка кроется именно в WriteString (пока не проверял WriteInteger, WriteBool и другие). Ошибка - "Failed to set data for ''."

Изучаю функцию WriteString. Её код (лишнее удалено):
Код:
procedure TTntRegistry.WriteString(const Name, Value: WideString);
begin
   PutData(Name, PWideChar(Value), (Length(Value)+1) * SizeOf(WideChar), rdString);
end;
Смотрю PutData, куда и отсылает компилятор (лишнее удалено):
Код:
procedure TTntRegistry.PutData(const Name: WideString; Buffer: Pointer;
  BufSize: Integer; RegData: TRegDataType);
var
  DataType: Integer;
begin
    DataType := RegDataToDataType(RegData);
    if RegSetValueExW(CurrentKey, PWideChar(Name), 0, DataType, Buffer,
      BufSize) <> ERROR_SUCCESS then
      raise ERegistryException.CreateResFmt(@SRegSetDataFailed, [Name]);
end;
Вот не пойму, почему RegSetValueExW не пишет в реестр. В результате этого и возникает ошибка.

Последний раз редактировалось Ta2i4; 22.12.2008 в 18:37..
 
Ответить с цитированием