![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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) В какую ТВОЮ ветку? Для него ЕГО веткой будет куст учетной записи под которой он стартовал.