| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > Прочитать ключ HKCU из-под сервиса |
| Автор: djman2006 17.8.2008, 20:33 |
| Как прочитать ключ реестра из HKCU текущего пользователя (не SYSTEM) из сервиса? Или это не возможно? P.S. Имя текущего пользователя имеется P.P.S. надо узнать прокси из настроек IE (HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyServer) |
| Автор: Virtuals 17.8.2008, 21:27 |
| djman2006, в нашем мире все возможно... 1.из сервиса подсаживаем в сессию пользователя процесс, и читаем реестр 2.напрямую подгружаем реестр пользователя к себе, из папки Documents and Settings\user и ищем все чото нужно |
| Автор: djman2006 17.8.2008, 21:54 |
| Virtuals, к сожалению, первый метод я не реализую насчет второго, пытался читать ntuser.dat, но винда не дает доступа к нему |
| Автор: djman2006 17.8.2008, 22:19 | ||
Есть кое-какие идеи: сервис пишет в HKLM в автозагрузку путь к маленькой программе, которая при загрузке считает с HKCU данные и запишет куда-то в HKLM, откуда сервис уже может читать Идея очень бредовая но наверное будет работать |
| Автор: MbIcJIuBcJIyX 18.8.2008, 00:47 |
| хорошая статья по сервисам http://www.interface.ru/home.asp?artId=16705 немного освещается тема топика, но не сказал бы что решается читать с Настройки и взаимодействие с пользователем |
| Автор: Virtuals 18.8.2008, 07:11 | ||||
djman2006,
1. это почему же?, или не знаем как? (листаем страницу до самого низу и читаем ссылки которые движек форума любезно нашел для вас 2.
сказки, только что попробовал, от system подгружать куст в HCU влегкую, даже активного (залогиненого) в данный момент пользователя. |
| Автор: djman2006 18.8.2008, 11:47 | ||||
Может я что то не так делаю ?
|
| Автор: Virtuals 18.8.2008, 13:36 | ||||
| цтрл+клик по LoadKey...
стрл+ф1
ага, где там примерчик с перечслением привелегий,( спасибо Rouse_ ) SeRestorePrivilege - Выключена GetPrivileges('SeRestorePrivilege'); ура все получилось |
| Автор: Mayk 18.8.2008, 14:57 |
я могу ошибаться, но помему в реестре есть ветка Users не то внутри не то паралелльно с ней. И каждому юзеру соовтествует нечто типа GUID. И вообще говоря HKCU указывает на Users\{GUID}. Соответственно зная имя пользователя можно попробовать получить этот GUID и грузить ветку реестра из Users. По-моему я это наблюдал в вин2к. правда это было очень давно. Добавлено через 1 минуту и 10 секунд а ну собсно я похоже djman2006'а повторил |
| Автор: Virtuals 18.8.2008, 16:38 | ||
вы правы но только отчасти, реестр пользователя неподгружен в память, пока пользователь незалогинен, (ну представте что бы творилось с компом если бы на нем прописать 10-30 пользователей, а реестр занимает метров 10 и он обязан сидеть в памяти но решение есть (смотрите выше), это подгрузить внешний файл реестра в ветку hklm или hku. (в регедите это подгрузить куст ну или читать уже подгруженный реестр (если пользователь залогинился) из ветки вида HKU\S-1-5-21-1123561945-73586283-1801674531-... (а можно совместить эти 2 способа, что даст очень интересные возможности, например контроль изменений в реестре пользователя в процессе работы) |
| Автор: Virtuals 18.8.2008, 16:54 |
| кстати для способа чтения из реестра по guid профиля, а так же для самовольной подгрузки думаю эта ветка будет интересна HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList |