-
Подскажите, пожалуйста, есть ли какие-то особенности получения PIDL-указателя, если нужно получить путь SHGetPathFromiDList, из значения параметра реестра HKCU из службы. В обычном приложении с формой SHGetPathFromiDList дает значение true, через службу (этот же код) false
-
А какой у службы HKCU ?
-
Мне нужно, чтобы сервис написанный на делфи получал путь сохранения файла, например txt из HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\Op enSavePidlMRU У меня есть рабочий код, работающий в обычном приложении, получающий нужный PIDL-указатель, который затем преобразуется с помощью функции SHGetPathFromiDList в путь файловой системы. В сервисе SHGetPathFromiDList выдает false. (неверный PIDL). Помогите разобраться
-
Так служба-то под каким пользователем запущена? ИШ подозревает, что под другим :)
-
Вход с ситесной учетной записью не будет работать? запуск NET START имя службы
-
Shell Folders для каждого пользователя свои. HKCU для каждого пользователя свой. Какую задачу надо решить ?
-
Я хочу прочитать из OpenSavePidlMRU путь последнего сохранения файла. HKCU для текущего пользователя.
-
> Я хочу прочитать из OpenSavePidlMRU путь последнего сохранения > файла.
Зайди под пользователем, открой редактор реестра, прочитай. Задача решена.
> HKCU для текущего пользователя.
У сервиса пользователь NT AUTHORITY\SYSTEM. Он что-то сохраняет ?
-
Сохраняет. но не получает тот самый PIDL
-
> serlup © (16.02.17 22:21) [6] > Я хочу прочитать из OpenSavePidlMRU путь последнего сохранения > файла. > HKCU для текущего пользователя.
погугли WTSQueryUserToken ImpersonateLoggedOnUser
-
после получения токена с помощью WTSQueryUserToken служба стала считывать данные из реестра HKEY_CURRENT_USER запущена как Local system. получает PIDL из параметра OpenSavePidlMRU и путь с помощью SHGetPathFromiDList. Спасибо получилось!!! Если файл сохранен на рабочем столе, локальных дисках, то путь получается, но если файл сохранен в директориях (таких как: мои документы, рисунки, загрузки и т. д.) SHGetPathFromiDList выдает false. Видимо, в этом случае, pidl не получается получить, хотя реестр читается. Если этот же код использовать в обычном приложении, то все - OK. Помогите разобраться!!!
|