Главная страница
    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.46 MB
Время: 0.004 c
2-1324569664
brother
2011-12-22 20:01
2012.04.22
Закрытие файла...


2-1325161149
gvozdkoff
2011-12-29 16:19
2012.04.22
вывод некоторых строк из файла


1-1291843738
alex870
2010-12-09 00:28
2012.04.22
TRegistry в службе


15-1324023715
sniknik
2011-12-16 12:21
2012.04.22
Безопастность SSL... есть ли вероятность обмана?


15-1324240202
Юрий
2011-12-19 00:30
2012.04.22
С днем рождения ! 19 декабря 2011 понедельник





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский