Всем привет!
народ, ктонибуть знает как сменить корневой каталог при работе с рееестром, и почему следующая строчка вызывает ошибку rootkey:=HKEY.......... в справке по делфи сказано что параметр rootkey должен иметь целочисленное значение, но почему то во всех примерах приводится вышеперечисленная строска....? |
Все rootkey в Windows.pas определены как константы
Цитата:
Uses Windows, Registry,.....; ... var r: TRegistry; begin r := TRegistry.Create; r.rootkey := HKEY_LOCAL_MACHINE;//или что-то другое ... r.Free; end; |
а кто знает что нужно сделать, или какую прогу нужно запустить что бы изменения в реестре которые я сделал в сетевом доступе, вступили в силу?
|
сорри за повторение, но я не понял в чем фишка....просто та же проблема, но в C++
TRegistry& regKey = *new TRegistry(); regKey.RootKey=HKEY_LOCAL_MACHINE; bool keyGood = regKey.OpenKey("HARDWARE\DEVICEMAP\SERIALCOMM",false); if (!keyGood) return; ....... regKey.Free(); таким образом keyGood становиться false и вываливается Добавлено: хотя если TRegistry& regKey = *new TRegistry(); regKey.RootKey=HKEY_CURRENT_CONFIG; bool keyGood = regKey.OpenKey("Software",false); if (!keyGood) return; ....... regKey.Free(); keyGood становиться true, в чем разница не пойму.... |
simonchik
Используй OpenKeyReadOnly |
проблема была решена следующим образом
геморно, но работает :)..... TRegistry& regKey = *new TRegistry(); regKey.RootKey=HKEY_LOCAL_MACHINE; bool keyGood = regKey.OpenKey("HARDWARE", false); if (!keyGood) return; bool keyGood2 = regKey.OpenKey("DEVICEMAP", false); if (!keyGood2) return; bool keyGood3 = regKey.OpenKey("SERIALCOMM", false); if (!keyGood3) return; regKey.Free(); |
simonchik
Не забывай, что внутри Си-шной строки символ \ имеет специальное значение, так что должно быть не bool keyGood = regKey.OpenKey("HARDWARE\DEVICEMAP\SERIALCOMM",false); , а bool keyGood = regKey.OpenKey("HARDWARE\\DEVICEMAP\\SERIALCOMM",false); :) |
да, спасибо, я понял....
|
а по моему вопросу ни ктоне знает.....?
|
Время: 11:45. |
Время: 11:45.
© OSzone.net 2001-