Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2012.04.22;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.006 c
15-1324302501
aka
2011-12-19 17:48
2012.04.22
поиск по списку слов.


15-1324025146
Win7_comp
2011-12-16 12:45
2012.04.22
Windows 7 64x отключается экран


3-1274956779
Николай2010
2010-05-27 14:39
2012.04.22
Access+Delphi+Ado - про транзакции


15-1323969847
Jeer
2011-12-15 21:24
2012.04.22
Гениальные сподвижники IT


2-1325109344
TThread
2011-12-29 01:55
2012.04.22
TPotok_Com.Terminate