как устроен реестр?

kill-still

думал вот как сделать инсталляцию для всех пользователей, пока только придумал писать в HKLM, а потом копировать при загрузке проги в HKLU, но ведь делают как-то так, что ещё до загрузки она там появляется. как получить доступ к веткам других юзеров? как дела обстоят с новосозданными юзверями?
  {$EXTERNALSYM HKEY_CLASSES_ROOT}
HKEY_CLASSES_ROOT = DWORD($80000000);
{$EXTERNALSYM HKEY_CURRENT_USER}
HKEY_CURRENT_USER = DWORD($80000001);
{$EXTERNALSYM HKEY_LOCAL_MACHINE}
HKEY_LOCAL_MACHINE = DWORD($80000002);
{$EXTERNALSYM HKEY_USERS}
HKEY_USERS = DWORD($80000003);
{$EXTERNALSYM HKEY_PERFORMANCE_DATA}
HKEY_PERFORMANCE_DATA = DWORD($80000004);
{$EXTERNALSYM HKEY_CURRENT_CONFIG}
HKEY_CURRENT_CONFIG = DWORD($80000005);
{$EXTERNALSYM HKEY_DYN_DATA}
HKEY_DYN_DATA = DWORD($80000006);

Helga87

А чо, сразу записать в HKLM, а потом в HKCU не копировать, а сразу читать из HKLM нельзя?

kill-still

не все клиенты (потребители проги) сидят под админом, а у не админов нет прав записи в HKLM.

Helga87

а что, приложение после инсталляции должно что-то писать в реестр? правильный подход хранить такие настройки в папке Local Settings, насколько я знаю.

kill-still

У меня ТЗ :)
"Перенос данных в реестре из HKLM в HKCU
1. Для старых - пренос данных в куррент юзер копированием.
2. Для новых -дернуть HKLM на запись. Если да то предложить всем пользователям.
Если всем, то пишем шаблон в HKLM, копируем его в HKCU.
Если нет или не админ то писать HKCU.
А если бы выбран вдля всех пользователей то при запуске программа првоеряет наличе ветки в HKCU, и если ее нет, то лезет в HKLM ищет там и переписывает.
Обновление копирует данные в HKCU."

Helga87

Сочувствую.

kill-still

ритика
Способ хранения параметров и настроек операционной системы при помощи реестра Windows часто подвергается критике по следующим причинам:
* Реестр подвержен фрагментации, из-за чего доступ к реестру постепенно замедляется
* В связи с тем, что помимо настроек в реестре хранится различная информация системы и приложений ( например многие приложения хранят в реестре список недавно открытых файлов размер реестра значительно увеличивается по мере использования операционной системы. Эта проблема частично решается при помощи специальных утилит
* Не все настройки системы хранятся в реестре, соответственно перенос настроек системы путём копирования реестра невозможен
Критики приводят в пример UNIX-подобные операционные системы, где нет реестра, выполняемые им задачи решаются другими средствами

Helga87

Это были рекомендации времен Windows 3.11 и Windows 95. После появления Windows 2000, Microsoft наконец-то прозрела и начала просить в реестр особо настройки не писать, а писать в Local Settings

Dasar

как получить доступ к веткам других юзеров?
HKEY_USERS
как узнать какая ветка какой юзер - не помню
как дела обстоят с новосозданными юзверями?
HKEY_USERS\.DEFAULT

Andbar

Здравствуйте, в Windows 3.x нет реестра в принципе, там использовались ini-файлы.

Helga87

сорри, точно

okunek

Как вариант, можно написать сервис, работающий с реестром на правах, достаточных для чтения/записи нужных веток. И дергать его из-под бесправных юзеров. Но это правда начинает смахивать на дырку в безопасности.

ppplva

Начинает смахивать на client side php :grin:

kill-still

правда начинает смахивать на дырку в безопасности.
Интересно про что ты?

Fragaria

Твой вопрос можно понять как "Безопасность? В Windows? О чём ты вообще?" :)

evgen5555

Критики приводят в пример UNIX-подобные операционные системы, где нет реестра, выполняемые им задачи решаются другими средствами
А зачем приводить их в пример, если решение задач кривее, чем в винде? Копирование папки /etc навернёт систему с вероятностью 0,75-0,8.

okunek

Про то, что юзер, не имеющий права изменять реестр, сможет-таки его изменить. Пусть и не сам напрямую.

okunek

Если ты не знаешь ничего про безопасность в винде, то это не значит, что ее нет, или что она херовая или глючная или что-нибудь в подобном роде :)

kill-still

Я думал ты про то, что наше ПО навернёт систему, или ещё какое-нибудь вредоносное действие совершит.

yolki

regedit в Win 3x есть ;)
и позволяет кое-чего посмотреть/подредактировать.
так что "реестр" там есть. правда он не древовидный.

dgaf

>Копирование папки /etc навернёт систему
поясни, речь про `cp -r /etc /tmp/` ?

bleyman

Это были рекомендации времен Windows 3.11 и Windows 95. После появления Windows 2000, Microsoft наконец-то прозрела и начала просить в реестр особо настройки не писать, а писать в Local Settings
Ты знаешь... Я не уверен, потому что до конца так и не расковырял, но: когда-то давно я попытался найти место, где эксплорер (локальный, который десктоп показывает) хранит положения иконок на оном десктопе. Потому что задолбало их перерасставлять после каждой загрузки в safe-mode (я тогда был молод и питал страсть к разнообразным бесчеловечным экспериментам, вроде запуска 2к3 на 64 метрах оперативки). Так вот, он хранит их в регистри, причём не отдельно и в явном виде, а у него там есть штуки четыре огромных блобов, в которых как-то лежит его текущее состояние. Так что советовать юзерам они могли что угодно, а сами вот так вот делали (и делают до сих пор, насколько я понимаю).
Оставить комментарий
Имя или ник:
Комментарий: