Форум: "Основная";
Текущий архив: 2012.04.22;
Скачать: [xml.tar.bz2];
ВнизTRegistry в службе Найти похожие ветки
← →
alex870 (2010-12-09 00:28) [0]Здравствуйте!
Не могу обратится к параметру реестра из службы.
Вот функция
function TServ.RegQueryStr():String;
var
Reg : TRegistry;
str : string;
begin
Result := "";
Reg := TRegistry.Create(KEY_READ);
try
Reg.RootKey := HKEY_CURRENT_USER;
if Reg.OpenKey("Software\Microsoft\MediaPlayer\Player\RecentFileList") then
begin
Result := Reg.ReadString("File0");
Reg.CloseKey;
end;
finally
Reg.Free;
end;
end;
Если написать просто программу - работает, а если вставляю в службу -нет. Не находит параметр "File0". Я подозреваю, что это из-за того, что служба запускается из-под Системы, а не от пользователя, но сомнительно, что в этом причина, я же указываю RootKey. Подскажите пожалуйста как победить. Или хотябы в чем особенность работы с реестром из службы.
Спасибо.
← →
Eraser © (2010-12-09 01:15) [1]>
>
> [0] alex870 (09.12.10 00:28)
> Системы, а не от пользователя, но сомнительно, что в этом
> причина, я же указываю RootKey
в этом, как раз и причина.
HKEY_CURRENT_USER - переводится как текущий пользователь. в случае службы - это система.
hint: см. ветку HKEY_USERS + почитай у Руссановича про реестр.
← →
Palladin © (2010-12-09 09:38) [2]...или запускать службу от имени нужного пользователя
← →
alex870 (2010-12-09 21:30) [3]Спасибо большое! Почитаю. Т.е. как я понял, система не видит ветку HKEY_CURRENT_USER? Ну не суть, главное развеяли мои сомнения, еще раз огромное спасибо.
← →
Eraser © (2010-12-09 21:35) [4]> [3] alex870 (09.12.10 21:30)
> Т.е. как я понял, система не видит ветку HKEY_CURRENT_USER?
почитай ;-)
← →
Anatoly Podgoretsky © (2010-12-09 21:48) [5]
> .е. как я понял, система не видит ветку HKEY_CURRENT_USER?
Не так, прекрасно видит.
← →
alex870 (2010-12-09 22:33) [6]Спасибо, разобрался. Для тех кому интересно как: CURRENT_USER для службы это Система (SYSTEM). Настройки пользователей хранятся в HKEY_USERS в разделах с названиями, совпадающими с их SID"ами (Security ID). Нужно просто найти нужный SID. Путь же к разделам пользователя будет выглядеть не HKCU\... а HKU\SID\... Если смотреть его из службы. Если где не прав - Мэтры, поправьте. Единственное, что хочу сказать, что все заработало. Правда пришлось искать ф-цию для получения SID"a, но это мелочи.
Eraser © а Вам отдельное спасибо!
← →
Anatoly Podgoretsky © (2010-12-10 09:14) [7]> alex870 (09.12.2010 22:33:06) [6]
Это неверно, очень неверно, CURRENT_USER для службы это тот кто установлен в
настройках и это вполне можешь быть ты.
Искать в HKU бесполезно, для этого сначала надо перезагрузиться под нужным
пользователем, а нафиг оно все это нужно, показать какой крутой или есть
реальная, а не придуманая цель?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2012.04.22;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.002 c