Имя: Пароль:
1C
1C 7.7
v7: 1C++ Работа с реестром Windows
0 Ariets
 
23.01.14
14:12
Необходимо программно (из 1С предприятия) удалить из реестра сведения о текущей базе (чтобы ее не было в списке баз при запуске 1С). Юзаю 1С++. Никак не получается. Код простой (с пометками):

РеестрВинды = СоздатьОбъект("РеестрWin");
РеестрВинды.ОтладочныеСообщения(1); // добавил для отладки
Если РеестрВинды.ОткрытьКлюч("HKEY_CURRENT_USER","Software\1C\1Cv7\7.7\Titles","KEY_ALL_ACCESS") = 1 Тогда
    // Сюда попадаем
    Путь = КаталогИБ();
        
    Значение = "";
    РеестрВинды.QueryValue(Путь,Значение);
    Сообщить(Значение); // Ключ находит и сообщает название базы (тоже добавил для отладки)

    Если РеестрВинды.УдалитьКлюч(Путь) = 0 Тогда
        // всегда попадает сюда
    КонецЕсли;
КонецЕсли;

В окне сообщений:
Если РеестрВинды.УдалитьКлюч(Путь) = 0 Тогда
Не удается найти указанный файл.
При этом вычищается весь раздел "Titles" за исключением нужного параметра. Кто работал с реестром, подскажите как удалить параметр?
1 dk
 
23.01.14
14:17
2 Ёпрст
 
гуру
23.01.14
14:29
Тебе значение нужно удалить или сам ключ ?
3 Ёпрст
 
гуру
23.01.14
14:29
4 Ariets
 
23.01.14
14:31
(2) нужно удалить сам ключ
(3) все так и сделал, но не работает
5 Ariets
 
23.01.14
14:51
Разобрался, нужно использовать метод УдалитьЗначение() вместо УдалитьКлюч(). Хотя как-то странно... удаляю строковый параметр целиком (название + значение). Все работает. Спасибо (2) навел на мысль.
6 Ёпрст
 
гуру
23.01.14
14:56
(5) есть там такое.. еще че-то с выборкой был тоже замут.