Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.003 c
2-1324724185
igorium
2011-12-24 14:56
2012.04.22
ShellTreeView - мультивыбор и рефреш


15-1324223374
wl
2011-12-18 19:49
2012.04.22
подарите iPad


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


2-1325168892
Gu
2011-12-29 18:28
2012.04.22
Pointer


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





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский