Форум: "Начинающим";
Текущий архив: 2009.09.20;
Скачать: [xml.tar.bz2];
ВнизHKEY_CURRENT_USER и юзеры Найти похожие ветки
← →
Цукор5 (2009-07-15 15:30) [0]Так вот, если я размещу здесь свою "ветку" с некоторыми значениями будет ли любой пользователь видеть эти значения ?
Рассмотрим случаи :
1) на ПК несколько пользователей. Какой-то из них залогинился. Увидит ли он "ветку" со значениями ?
2) ПК загрузился до момента ввода юзера(ничего не вводим). Стартует служба и обращается к реестру в мою "ветку". Что будет ?
P.S. Долго проверять. Поэтому и спашиваю. Заранее спасибо!!!
← →
Palladin © (2009-07-15 15:31) [1]
> Так вот, если я размещу здесь свою "ветку" с некоторыми
> значениями будет ли любой пользователь видеть эти значения
> ?
Нет конечно. С чего ты взял?
1) Нет
2) В какую ТВОЮ ветку? Для него ЕГО веткой будет куст учетной записи под которой он стартовал.
← →
Anatoly Podgoretsky © (2009-07-15 15:37) [2]Что значит долго проверять, пару минут потратить, чем долго ждать ответа в форуме, а ведь могут и послать.
← →
Игорь Шевченко © (2009-07-15 15:39) [3]у задач от планировщика другой current_user, а именно .DEFAULT
← →
Anatoly Podgoretsky © (2009-07-15 15:45) [4]> Игорь Шевченко (15.07.2009 15:39:03) [3]
У задач от планировщика можно выбрать пользователя при создании задания.
← →
Цукор5 (2009-07-15 15:51) [5]Спасибо!
← →
Цукор5 (2009-07-15 17:30) [6]Пардон...и последний вопрос.
Соответственно, если я буду наполнять hkey_local_machine то подобных проблем не будет ? Т.е. все юзры будут видеть мою ветку ?
← →
TIF © (2009-07-15 21:13) [7]> Соответственно, если я буду наполнять hkey_local_machine
> то подобных проблем не будет ? Т.е. все юзры будут видеть
> мою ветку ?
Нет. Но самая главная проблема - твоя программа должна быть (просто обязана!) запущена с правами администратора
Самая главная ошибка программеров под XP...
PS: лучше в данном случае сохранять не в реестре, а в специальной общей папке для всех пользователей
← →
Anatoly Podgoretsky © (2009-07-15 22:30) [8]> TIF (15.07.2009 21:13:07) [7]
Чтобы видеть - не требуется.
← →
Цукор5 (2009-07-16 00:14) [9]
> PS: лучше в данном случае сохранять не в реестре, а в специальной
> общей папке для всех пользователей
О какой специальной папке идет речь (и как туда программно добраться)?
← →
TIF © (2009-07-16 03:45) [10]> 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 ;-)
← →
TIF © (2009-07-16 03:47) [11]> Соответственно вызываем GetCSIDLFolder(CSIDL_APPDATA);
В этом примере надо так:
GetCSIDLFolder(CSIDL_COMMON_APPDATA);
COMMON - "общий", то есть общая для всех папка
В PPS предыдущего сообщения описана разница :)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.09.20;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.004 c