Текущий архив: 2008.08.10;
Скачать: CL | DM;
Вниз
Вопрос про идеологию работы с реестром в CURRENT_USER Найти похожие ветки
← →
тимохов (2008-06-23 12:34) [0]Здравствуйте.
Помогите советом, пожалуйста.
Есть программа, которая сохраняет настройки пользователя в CURRENT_USER. При этом сама программа при инсталляции и деинсталляции требует прав. админа. (драйвера ставит).
Может быть такая ситуация:
1. Пользователь АДМИНИСТРАТОР поставил программу. Программа в меню ПУСК видна всем.
2. Пользователь СИДОРОВ попользоватлся программой. В результате в CURRENT_USER сформировалась запись, относящаяся к СИДОРОВУ.
3. Пользователь АДМИНИСТРАТОР решил удалить программу. Моя программа деинсталляции удаляет в реестре все, что туда добавила. Из LOCAL_MACHINE все удалается без следа. А вот в CURRENT_USER остается информация о СИДОРОВЕ - ведь на момент удаления программы CURRENT_USER соответсвовал АДМИНИСТРАТОРУ, а не СИДОРОВУ,
В общем вопрос - как тут все правльно реализовать?
Видимо, нужно лезть в HKEY_USERS и под каждым SID"ом в соответствующем разделе искать информацию, относящуюся к моей программе, и чистить. Верно?
← →
Rouse_ © (2008-06-23 12:35) [1]Верно, я так и делаю в случае деинстала...
← →
тимохов (2008-06-23 12:39) [2]Я с этой проблемой столкнулся совершенно случайно :)
Долго думал, почему вроде деинсталл сделал, а настройки у сидорова остались. Потом понял, что это из-за CURRENT_USER :)
Розыч, ты просто пробегаешься по всем подключам HKEY_USERS и просматриваешь в них свой раздел?
А прав админа на это хватит?
← →
brother © (2008-06-23 12:40) [3]
> А прав админа на это хватит?
смешно) а иначе, какой он админ? ;))))
← →
Игорь Шевченко © (2008-06-23 12:42) [4]
> Видимо, нужно лезть в HKEY_USERS и под каждым SID"ом в соответствующем
> разделе искать информацию, относящуюся к моей программе,
> и чистить. Верно?
Я все понимаю, но в HKEY_USERS информация появится только тогда, когда будет загружен профиль соответствующего пользователя. Если Сидоров в момент деинсталляции программы отдыхал в 10 километрах от Углича, то никаких сведений о нем в HKEY_USERS не появится...
← →
тимохов (2008-06-23 12:45) [5]
> Я все понимаю, но в HKEY_USERS информация появится только
> тогда, когда будет загружен профиль соответствующего пользователя.
> Если Сидоров в момент деинсталляции программы отдыхал в
> 10 километрах от Углича, то никаких сведений о нем в HKEY_USERS
> не появится...
Я вот тоже не понима как-то про USERS. Я на своей машине входил разными юзерами. Сейчас я админ домена. Но вижу в USERS только свой SID (это точно мой, согласно утилитке getsid).
Где остальные SID"ы?
← →
Игорь Шевченко © (2008-06-23 12:47) [6]
> Где остальные SID"ы?
на диске
← →
brother © (2008-06-23 12:47) [7]
> Я все понимаю, но в HKEY_USERS информация появится только
> тогда, когда будет загружен профиль соответствующего пользователя.
>
странно, но там ключи для всех пользователей лежат... просто система обращается к нужному в зависимости от профиля...
зы ща тока через regedit проверил... все ключи вижу)
← →
brother © (2008-06-23 12:49) [8]
> Где остальные SID"ы?
прально.... ведь ты грузил только СВОЙ профиль и о других профилях системе пока не известно
← →
тимохов (2008-06-23 12:50) [9]делать то что? :)
← →
Игорь Шевченко © (2008-06-23 12:50) [10]brother © (23.06.08 12:47) [7]
> странно, но там ключи для всех пользователей лежат... просто
> система обращается к нужному в зависимости от профиля...
>
Вот смотри - у меня зарегистрировано 5 пользователей (в "Управление компьютером/локальные пользователи и группы").
В HKEY_USERS всего 4 SID-а (S-5-1-18, S-5-1-19, S-5-1-20 и мой личный)
← →
Игорь Шевченко © (2008-06-23 12:50) [11]тимохов (23.06.08 12:50) [9]
> делать то что? :)
MSDN читать :)
← →
brother © (2008-06-23 12:52) [12]
> Вот смотри - у меня зарегистрировано 5 пользователей (в
> "Управление компьютером/локальные пользователи и группы").
> В HKEY_USERS всего 4 SID-а (S-5-1-18, S-5-1-19, S-5-1-20
> и мой личный)
кто-то не логинился в системе? как я помню, только при логине профиль создается, так сказать по факту логона?
← →
Игорь Шевченко © (2008-06-23 12:53) [13]Дима, читай
http://www.winblog.ru/2007/09/28/28090702.html
brother © (23.06.08 12:52) [12]
> кто-то не логинился в системе?
Да, Сидоров отдыхает в 10 километрах под Угличем
← →
Поросенок Винни-Пух © (2008-06-23 12:54) [14]а кому плохо-то от того, что настройки сохранились?
← →
тимохов (2008-06-23 12:56) [15]
> Поросенок Винни-Пух © (23.06.08 12:54) [14]
> а кому плохо-то от того, что настройки сохранились?
нас однажды не взяли на демо-диск самой известной фирмы в россии, потому как оставляли в реестре что-то. не знаю, как уж они это проверяли, но нашли.
← →
brother © (2008-06-23 12:57) [16]
> Да, Сидоров отдыхает в 10 километрах под Угличем
везет ему, он хоть отдыхает)
← →
brother © (2008-06-23 12:59) [17]
> а кому плохо-то от того, что настройки сохранились?
кому пофигу, тому и не важно)
← →
Поросенок Винни-Пух © (2008-06-23 13:01) [18]я с некоторых пор не использую реестр только в исключительных случаях.
(например выкачанному обновлению надо знать где установлена текущая версия программы)
остальное пишу в xml лежащий рядом.
основная причина и цель - простота переностимости приложения с машины на машину. забрал exe с настройками - и все работает на новом месте.
← →
Поросенок Винни-Пух © (2008-06-23 13:02) [19]я с некоторых пор не использую реестр только в исключительных случаях.
точнее использую только в исключительных
← →
brother © (2008-06-23 13:02) [20]
> основная причина и цель - простота переностимости приложения
> с машины на машину. забрал exe с настройками - и все работает
> на новом месте.
если настройки такие универсальные, то деф. значения должны помочь ;)
← →
Поросенок Винни-Пух © (2008-06-23 13:04) [21]они не универсальные. у каждого юзера программы есть например настройка на путь к файлу ключевого контейнера.
и если он в реестре, то при переносе надо импортировать реестр.
а если в xml, то все переезжает вместе с самим xml.
← →
brother © (2008-06-23 13:10) [22]
> путь к файлу ключевого контейнера.
Его тоже на другую машину тащить?)
← →
brother © (2008-06-23 13:18) [23]
> ключевого контейнера
те я про него,
> а если в xml
ну и чем ini то не понравился? ИМХО проще...
← →
Пробегал... (2008-06-23 13:27) [24]
> остальное пишу в xml лежащий рядом.
Рядом?
Если exe лежит в Program Files, то получить полный доступ к xml-файлу можно будет получить только под админом!
Microsoft вообще-то для таких целей рекомендует всё-таки реестр или %localappdata%. Чтобы потом даже под вистой проблем с виртуализацией не было.
← →
brother © (2008-06-23 13:30) [25]
> только под админом!
не правда Ваша... Кто угодно может получить туда доступ (если добрый/ленивый админ изменил доступ к этой папке для ВСЕХ юзверей), такое сам делал, чтоб Nная программа не под админом могла корректно работать, собственно и продвинутые пользователи туда тож могут иметь доступ
← →
McSimm © (2008-06-23 13:33) [26]
> такое сам делал, чтоб Nная программа не под админом могла
> корректно работать
Попутно ассоциируя с нехорошими абстракциями автора программы.
← →
Пробегал... (2008-06-23 13:34) [27]
> (если добрый/ленивый админ изменил доступ к этой папке для
> ВСЕХ юзверей),
И как это делали? Вручную? Или при установке программно меняли? Заморочки это :)
Ну это вообще "плохо катит". В системе специально выделены места под хранение настроек и конфигураций, поэтому не надо изобретать велосипед.
К тому же это вообще прямая угроза безопасности! Если любой юзер может получить доступ к папке, он сможет запросто туда добавить (в папку) вредоносное, или вирус сможет атаковать exe, или вообще подменить.
Ну это не решение! Почитайте MSDN Magazine, там это хорошо разобрано и не единожды.
← →
brother © (2008-06-23 13:42) [28]
> К тому же это вообще прямая угроза безопасности! Если любой
> юзер может получить доступ к папке, он сможет запросто туда
> добавить (в папку) вредоносное, или вирус сможет атаковать
> exe, или вообще подменить.
в крайности не надо впадать...
← →
KSergey © (2008-06-23 13:45) [29]> Поросенок Винни-Пух © (23.06.08 13:01) [18]
> я с некоторых пор не использую реестр только в исключительных
> случаях.
> остальное пишу в xml лежащий рядом.
> основная причина и цель - простота переностимости приложения
> с машины на машину. забрал exe с настройками - и все работает
> на новом месте.
Не мне вам рассказывать, но различия в хранении в реестре и файлом "лежащим рядом" - известны.
Реестр удобнее для доменного администрирования, но плох для легкой переноски за пределы. "Файл, лежащий рядом" (если это буквально) вызывает проблемы начиная с висты, а то и ранее, нет записи прав в Program Files. Хотя можно не буквально рядом складывать, но тогда уже и переносить не так удобно. Либо не в Program Files устанавливать.
← →
brother © (2008-06-23 13:45) [30]
> Если любой юзер может получить доступ к папке, он сможет
> запросто туда добавить (в папку) вредоносное, или вирус
> сможет атаковать exe, или вообще подменить.
это ваше не понял....
> Почитайте MSDN Magazine, там это хорошо разобрано
Спасибо, но вкурсе....
← →
clickmaker © (2008-06-23 13:48) [31]неисповедимы пути MS... Сначала ini. Потом ini - ацтой, все кладем в реестр. Потом реестр - ацтой, все фтыкаем в xml... )
← →
Пробегал... (2008-06-23 13:49) [32]
> в крайности не надо впадать...
:) Я это вам хотел сказать, не успел.
Это не крайности. Win32.Trojan.DelFiles (или что-то вроде этого, могу сказать точное название, если сильно надо) сканировал у меня програм файлс и пытался удалить файлы. Конечно же, под XP и обычной учёткой всё нормально. Под XP и админом - несколько файлов исчезло к чертям собачьим.
Под вистой под любым юзером всё нормально - доступа нет.
Ещё раз поворюсь, что это не крайности, а реалии и признаки хорошего тона в создании ПО.
К тому же сейчас бум на защиту данных и обеспЕчение безопасности во всех отраслях IT. К примеру, Adobe AIR использует для работы веб-приложений специальное подстранство "поверх ОС" (виртуальное), а в Silverlight всё выполняется в sandbox (песочнице), что по идее одно и то же
← →
brother © (2008-06-23 13:53) [33]
> Если exe лежит в Program Files
если он там лежит, то либо его туда ПРОИНСТАЛИРОВАЛИ, либо скопировал админ...
намек понятен?
← →
Поросенок Винни-Пух © (2008-06-23 13:54) [34]почему xml а не ини?
потому что иерархия как в реджистри
← →
brother © (2008-06-23 13:55) [35]
> потому что иерархия как в реджистри
не понял это как?
типа крутое название?)
← →
Поросенок Винни-Пух © (2008-06-23 13:56) [36]древовидная иерархия данных
← →
brother © (2008-06-23 13:58) [37]
> древовидная иерархия данных
и шибко большие ветки нужны чтоб хранить настройки?)
Секция-ключ-значение, что еще надо? )))
← →
Пробегал... (2008-06-23 13:58) [38]
> если он там лежит, то либо его туда ПРОИНСТАЛИРОВАЛИ, либо
> скопировал админ...
> намек понятен?
"Твоя моя не понимай" ©
Ну молодцы, проинсталлировали, Setup закрыли, комп вырубили.
На следующий день приходит Вася Пупкин, запускает прогу под своей учёткой (обычной, без прав админа) - БАЦ! Прога работает, но настройки сохранить не может. Ибо сохраняет их в C:\progra~1\...\траляля.xml
А к этому файлу доступа нет :)
А вот через programdata (название по-моему в XP не такое) - есть ДЛЯ ВСЕХ юзеров доступ к настройкам.
Кстати, для удобства переноса настроек 75% разработчиков встраивают функцию "Импорт/Экспорт настроек" в свой софт.
← →
Поросенок Винни-Пух © (2008-06-23 13:59) [39]большие ветки?
нужны не большие, а иерархические.
← →
Поросенок Винни-Пух © (2008-06-23 14:00) [40]На следующий день приходит Вася Пупкин, запускает прогу под своей учёткой (обычной, без прав админа) - БАЦ! Прога работает, но настройки сохранить не может. Ибо сохраняет их в C:\progra~1\...\траляля.xml
даем права на файл натроек и живем дальше
Страницы: 1 2 3 вся ветка
Текущий архив: 2008.08.10;
Скачать: CL | DM;
Память: 0.56 MB
Время: 0.007 c