Обновление реестра
От: kuzama Украина  
Дата: 15.07.03 11:07
Оценка: 7 (1)
Меняю значение реестра (типа List separator) с помощю API функций:
RegOpenKey
RegSetValueEx
RegCloseKey
значение меняется, но.... при дальнейшем его использовании в проге вылазит старое значение Новое же вступает в силу, только после тупого нажатия кнопки Apply в Control Panel
Вопрос: что я делаю не так? как програмно заставить изменения вступить в силу?
Re: Обновление реестра
От: ioni Россия  
Дата: 15.07.03 11:49
Оценка:
Здравствуйте, kuzama, Вы писали:

K>Меняю значение реестра (типа List separator) с помощю API функций:

K>RegOpenKey
K>RegSetValueEx
K>RegCloseKey
K>значение меняется, но.... при дальнейшем его использовании в проге вылазит старое значение Новое же вступает в силу, только после тупого нажатия кнопки Apply в Control Panel
K>Вопрос: что я делаю не так? как програмно заставить изменения вступить в силу?

а RegFlushKey не пробовол вызывать
Re[2]: Обновление реестра
От: kuzama Украина  
Дата: 15.07.03 13:47
Оценка:
Здравствуйте, ioni, Вы писали:

I>Здравствуйте, kuzama, Вы писали:


K>>Меняю значение реестра (типа List separator) с помощю API функций:

K>>RegOpenKey
K>>RegSetValueEx
K>>RegCloseKey
K>>значение меняется, но.... при дальнейшем его использовании в проге вылазит старое значение Новое же вступает в силу, только после тупого нажатия кнопки Apply в Control Panel
K>>Вопрос: что я делаю не так? как програмно заставить изменения вступить в силу?

I>а RegFlushKey не пробовол вызывать


А то как же, и это тоже пробовал.
Может я не совсем точно выразился. Мои изменеия вступают в силу либо после перезагрузки, либо путем захода в Панель управления — Региональные настройки и нажатия княпки Применить. А мне нужно сразу, т.к. от этих изменеий зависит корректность работы программы.
Re[3]: Обновление реестра
От: SchweinDeBurg Россия https://zarezky.spb.ru/
Дата: 15.07.03 13:58
Оценка:
Здравствуйте, kuzama, Вы писали:

K>Здравствуйте, ioni, Вы писали:


I>>Здравствуйте, kuzama, Вы писали:


K>>>Меняю значение реестра (типа List separator) с помощю API функций:

K>>>RegOpenKey
K>>>RegSetValueEx
K>>>RegCloseKey
K>>>значение меняется, но.... при дальнейшем его использовании в проге вылазит старое значение Новое же вступает в силу, только после тупого нажатия кнопки Apply в Control Panel
K>>>Вопрос: что я делаю не так? как програмно заставить изменения вступить в силу?

I>>а RegFlushKey не пробовол вызывать


K>А то как же, и это тоже пробовал.

K>Может я не совсем точно выразился. Мои изменеия вступают в силу либо после перезагрузки, либо путем захода в Панель управления — Региональные настройки и нажатия княпки Применить. А мне нужно сразу, т.к. от этих изменеий зависит корректность работы программы.

Вы пишете в реестр что-то, относящееся к региональным настройкам? Если так, то, может, стоит взглянуть на функцию SystemParametersInfo(). Не уверен, конечно, но...
- Искренне ваш, Поросенок Пафнутий
Re[4]: Обновление реестра
От: kuzama Украина  
Дата: 15.07.03 14:29
Оценка:
Здравствуйте, SchweinDeBurg, Вы писали:

SDB>Здравствуйте, kuzama, Вы писали:


K>>Здравствуйте, ioni, Вы писали:


I>>>Здравствуйте, kuzama, Вы писали:


K>>>>Меняю значение реестра (типа List separator) с помощю API функций:

K>>>>RegOpenKey
K>>>>RegSetValueEx
K>>>>RegCloseKey
K>>>>значение меняется, но.... при дальнейшем его использовании в проге вылазит старое значение Новое же вступает в силу, только после тупого нажатия кнопки Apply в Control Panel
K>>>>Вопрос: что я делаю не так? как програмно заставить изменения вступить в силу?

I>>>а RegFlushKey не пробовол вызывать


K>>А то как же, и это тоже пробовал.

K>>Может я не совсем точно выразился. Мои изменеия вступают в силу либо после перезагрузки, либо путем захода в Панель управления — Региональные настройки и нажатия княпки Применить. А мне нужно сразу, т.к. от этих изменеий зависит корректность работы программы.

SDB>Вы пишете в реестр что-то, относящееся к региональным настройкам? Если так, то, может, стоит взглянуть на функцию SystemParametersInfo(). Не уверен, конечно, но...


Ага к региональным, а именно меняю значение List separator для создания текстового файла нужного мне формата. SystemParametersInfo() к сожалению не падходит.
Re[5]: Обновление реестра
От: Аноним  
Дата: 15.07.03 15:20
Оценка:
Понятно что проблемма не с регистром. Где то просто эти значения в системе скешированы. И надо оповестить систему чтоб она их считала по новой после того как реест подправлен.
Это и делает Apply.

Посмотри SetLocaleInfo.

George.


K>Здравствуйте, SchweinDeBurg, Вы писали:


SDB>>Здравствуйте, kuzama, Вы писали:


K>>>Здравствуйте, ioni, Вы писали:


I>>>>Здравствуйте, kuzama, Вы писали:


K>>>>>Меняю значение реестра (типа List separator) с помощю API функций:

K>>>>>RegOpenKey
K>>>>>RegSetValueEx
K>>>>>RegCloseKey
K>>>>>значение меняется, но.... при дальнейшем его использовании в проге вылазит старое значение Новое же вступает в силу, только после тупого нажатия кнопки Apply в Control Panel
K>>>>>Вопрос: что я делаю не так? как програмно заставить изменения вступить в силу?
Re[3]: Обновление реестра
От: ioni Россия  
Дата: 15.07.03 19:06
Оценка:
Здравствуйте, kuzama, Вы писали:

а если приложению попробовать мониторить нужный тебе ключ
с помощью RegNotifyChangeKeyValue.
Re[6]: Обновление реестра
От: kuzama Украина  
Дата: 16.07.03 13:02
Оценка:
Здравствуйте, Аноним, Вы писали:


А>Понятно что проблемма не с регистром. Где то просто эти значения в системе скешированы. И надо оповестить систему чтоб она их считала по новой после того как реест подправлен.

А>Это и делает Apply.

А>Посмотри SetLocaleInfo.


А>George.



K>>Здравствуйте, SchweinDeBurg, Вы писали:


SDB>>>Здравствуйте, kuzama, Вы писали:


K>>>>Здравствуйте, ioni, Вы писали:


I>>>>>Здравствуйте, kuzama, Вы писали:


K>>>>>>Меняю значение реестра (типа List separator) с помощю API функций:

K>>>>>>RegOpenKey
K>>>>>>RegSetValueEx
K>>>>>>RegCloseKey
K>>>>>>значение меняется, но.... при дальнейшем его использовании в проге вылазит старое значение Новое же вступает в силу, только после тупого нажатия кнопки Apply в Control Panel
K>>>>>>Вопрос: что я делаю не так? как програмно заставить изменения вступить в силу?



SetLocaleInfo(GetSystemDefaultLCID(), LOCALE_SLIST, "^") // значение поменялось
PostMessage HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0 // послал соответствующее сообщение

.... и все равно потом вылазит старое значение! Может я что с посылом сообщения намудрил?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.