|
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) есть там такое.. еще че-то с выборкой был тоже замут.
|
|