Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2008.08.10;
Скачать: [xml.tar.bz2];

Вниз

Вопрос про идеологию работы с реестром в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.56 MB
Время: 0.007 c
15-1214150174
KilkennyCat
2008-06-22 19:56
2008.08.10
XML-парсеры для Delphi.


2-1215600820
IvanS
2008-07-09 14:53
2008.08.10
TreeNode


15-1214153592
Raisa
2008-06-22 20:53
2008.08.10
C# - посоветуйте форум


2-1215514162
Newss
2008-07-08 14:49
2008.08.10
работа с базой данных


15-1214071119
data
2008-06-21 21:58
2008.08.10
а я в отпуске))) пишу из Турции





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский