Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK |
KOL и MCK - Компактные программы на Delphi
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

PIDL-указатель [D6]


serlup ©   (16.02.17 00:09

Подскажите, пожалуйста, есть ли какие-то особенности получения PIDL-указателя, если нужно получить путь SHGetPathFromiDList, из значения параметра реестра HKCU из службы.
В обычном приложении с формой SHGetPathFromiDList дает значение true, через службу (этот же код) false


Игорь Шевченко ©   (16.02.17 10:24[1]

А какой у службы HKCU ?


serlup ©   (16.02.17 16:40[2]

Мне нужно, чтобы сервис написанный на делфи получал путь сохранения файла, например txt из HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\Op enSavePidlMRU
У меня есть рабочий код, работающий в обычном приложении, получающий нужный PIDL-указатель, который затем преобразуется с помощью функции SHGetPathFromiDList  в путь файловой системы. В сервисе SHGetPathFromiDList выдает false. (неверный PIDL).  Помогите разобраться


Styx   (16.02.17 20:42[3]

Так служба-то под каким пользователем запущена? ИШ подозревает, что под другим :)


serlup ©   (16.02.17 21:27[4]

Вход с ситесной учетной записью не будет работать?
запуск NET START имя службы


Игорь Шевченко ©   (16.02.17 21:48[5]

Shell Folders для каждого пользователя свои. HKCU для каждого пользователя свой. Какую задачу надо решить ?


serlup ©   (16.02.17 22:21[6]

Я хочу прочитать из OpenSavePidlMRU путь последнего сохранения файла.
HKCU для текущего пользователя.


Игорь Шевченко ©   (16.02.17 22:36[7]


> Я хочу прочитать из OpenSavePidlMRU путь последнего сохранения
> файла.


Зайди под пользователем, открой редактор реестра, прочитай. Задача решена.


> HKCU для текущего пользователя.


У сервиса пользователь NT AUTHORITY\SYSTEM. Он что-то сохраняет ?


serlup ©   (16.02.17 23:43[8]

Сохраняет. но не получает тот самый PIDL


Eraser ©   (17.02.17 20:08[9]


> serlup ©   (16.02.17 22:21) [6]
> Я хочу прочитать из OpenSavePidlMRU путь последнего сохранения
> файла.
> HKCU для текущего пользователя.

погугли
WTSQueryUserToken
ImpersonateLoggedOnUser


serlup ©   (18.02.17 14:13[10]

после получения токена с помощью WTSQueryUserToken служба стала считывать данные из реестра HKEY_CURRENT_USER
запущена как Local system.
получает PIDL из параметра OpenSavePidlMRU и путь с помощью SHGetPathFromiDList. Спасибо получилось!!!
Если файл сохранен на рабочем столе, локальных дисках, то путь получается, но если файл сохранен в директориях (таких как: мои документы, рисунки, загрузки и  т. д.) SHGetPathFromiDList выдает false.    Видимо, в этом случае, pidl не получается получить, хотя реестр читается. Если этот же код использовать в обычном приложении, то все - OK.
Помогите разобраться!!!


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо