Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

HKEY_CURRENT_USER и юзеры [95/98, XP, 2003]


Цукор5 ©   (2009-07-15 15:30:00) 

Так вот, если я размещу здесь свою "ветку" с некоторыми значениями будет ли любой пользователь видеть эти значения ?
Рассмотрим случаи :
1) на ПК несколько пользователей. Какой-то из них залогинился. Увидит ли он "ветку" со значениями ?
2) ПК загрузился до момента ввода юзера(ничего не вводим). Стартует служба и обращается к реестру в мою "ветку". Что будет ?

P.S. Долго проверять. Поэтому и спашиваю. Заранее спасибо!!!


TIF   (2009-07-16 03:47:00) [1]

> Соответственно вызываем GetCSIDLFolder(CSIDL_APPDATA);

В этом примере надо так:
GetCSIDLFolder(CSIDL_ COMMON_APPDATA);

COMMON - "общий", то есть общая для всех папка

В PPS предыдущего сообщения описана разница :)


TIF   (2009-07-16 03:45:00) [2]

> Anatoly Podgoretsky ©   (15.07.09 22:30) [8]
> > TIF  (15.07.2009 21:13:07)  [7]Чтобы видеть - не требуется.
>

Что правда, то правда :) Исправляюсь. Прочитать из ветки HKLM можно без прав администратора, но вот записать туда что-то - только с правами...

> О какой специальной папке идет речь (и как туда программно
> добраться)?

Ну, например,
CSIDL_COMMON_APPDATA
("Каталог файловой системы, служащий общим репозиторием данных,         специфичных для приложения для ВСЕХ пользователей")
Windows Vista: C:\ProgramData
Windows XP: C:\Documents and Settings\All Users\Application Data
где C:\ соответственно системный диск

Запоминать эти пути НЕ надо, жёстко задавать их в своей программе НЕ надо, так как они могут оказаться другими, например, если система установлена на диске J

Их надо получать программно :) Пути я дал лишь для того, чтобы туда заглянуть и посмотреть внутреннее устройство (у каждой программы своя папка)

function GetCSIDLFolder(CSIDL: Byte): String;
begin
 SetLength(Result, MAX_PATH);
 if not SHGetSpecialFolderPath(0, PChar(Result), CSIDL, false)
   then Result:='';
end;


Соответственно вызываем
GetCSIDLFolder(CSIDL_APPDATA);
и получаем путь к этой папке

Подробности - в MSDN:
http://msdn.microsoft.com/en-us/library/bb762494(VS.85).aspx

PS:
Начиная с Windows Vista рекомендуется использовать Known Folders, но этот момент я затрагивать не буду, потому что в висте (и в Windows 7) есть обратная совместимость, поэтому и определение через CSIDL там прекрасно сработает :)

PPS: дополнение для любознательных
индивидуальная папка конкретного пользователя - CSIDL_APPDATA
Windows Vista: C:\Users\Пользователь\AppData\Roaming
Windows XP: C:\Documents and Settings\Пользователь\Application Data

Ещё в CSIDL_APPDATA можно попасть написав в адресной строке любой открытой папки %appdata%и нажав Enter ;-)


Цукор5   (2009-07-16 00:14:00) [3]


> PS: лучше в данном случае сохранять не в реестре, а в специальной
> общей папке для всех пользователей


О какой специальной папке идет речь (и как туда программно добраться)?


Anatoly Podgoretsky   (2009-07-15 22:30:00) [4]

> TIF  (15.07.2009 21:13:07)  [7]

Чтобы видеть - не требуется.


TIF   (2009-07-15 21:13:00) [5]

> Соответственно, если я буду наполнять hkey_local_machine
> то подобных проблем не будет ? Т.е. все юзры будут видеть
> мою ветку ?

Нет. Но самая главная проблема - твоя программа должна быть (просто обязана!) запущена с правами администратора

Самая главная ошибка программеров под XP...

PS: лучше в данном случае сохранять не в реестре, а в специальной общей папке для всех пользователей


Цукор5   (2009-07-15 17:30:00) [6]

Пардон...и последний вопрос.
Соответственно, если я буду наполнять hkey_local_machine то подобных проблем не будет ? Т.е. все юзры будут видеть мою ветку ?


Цукор5   (2009-07-15 15:51:00) [7]

Спасибо!


Anatoly Podgoretsky   (2009-07-15 15:45:00) [8]

> Игорь Шевченко  (15.07.2009 15:39:03)  [3]

У задач от планировщика можно выбрать пользователя при создании задания.


Игорь Шевченко   (2009-07-15 15:39:00) [9]

у задач от планировщика другой current_user, а именно .DEFAULT


Anatoly Podgoretsky   (2009-07-15 15:37:00) [10]

Что значит долго проверять, пару минут потратить, чем долго ждать ответа в форуме, а ведь могут и послать.


Palladin   (2009-07-15 15:31:00) [11]


> Так вот, если я размещу здесь свою "ветку" с некоторыми
> значениями будет ли любой пользователь видеть эти значения
> ?

Нет конечно. С чего ты взял?

1) Нет
2) В какую ТВОЮ ветку? Для него ЕГО веткой будет куст учетной записи под которой он стартовал.


Наверх

Титульная страница Поиск, карта сайта Написать письмо