sedmin писал(а) 09. Сентября 2007 :: 06:18:Но суть там ОЧЕНЬ простая. Есть два момента, их не надо смешивать. (Хотя, может быть и надо.
)
... из книги Савельича "клей момент: секреты бывалых" Цитата:1) Чтение реестра.
2) Запись в ветку HKCR.
Сань, все это правильно, но ты опять никак не поймаешь мою мысль.
Есть еще п.3
3) Работа подсистемы COM
Как организовано хранение информации о COM объектах мы знаем.
Это грубо ветка HKCR, которая действительно складывается из HKCU и HKLM.
В корень пишутся ProgID, в ветку CLSID пишутся (кто бы мог подумать!) CLSID, плюс интерфейсы, тайплибы, это не суть.
Предположим, из 1С мы вызвали метод РегистрироватьКомпонентыВ_HKCU(1).
И бросили, типа компоненты будут регистрироваться в HKCU.
Вопрос: сможем ли мы создавать COM-объекты, зарегистрированные ранее в HKLM?
С одной стороны, через HKCR после переназначения мы не имеем доступа в части HKLM.
С другой стороны, создание объектов продолжает работать (по крайней мере, на svr 2003 sp1)
Тут интересным оказывается факт, что RegOverridePredefKey() по-разному влияет на методы типа RegCreateEx(), RegOpenEx() и т.д, и на методы COM-системы типа CoCreateInstance(), CLSIDFromProgID() и т.п.
По моему мнению, первая группа учитывает переназначение, а вторая - игнорирует.
На данный момент, неизвестно на чем основано такое поведение, поэтому нет уверенности, что на всех системах оно будет ожидаемым.
Цитата:Но в жизни же всегда есть место подвигу!
Эт точно.