Конференция "WinAPI" » PIDL-указатель [D6]
 
  • serlup © (16.02.17 00:09) [0]
    Подскажите, пожалуйста, есть ли какие-то особенности получения 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.
    Помогите разобраться!!!
 
Конференция "WinAPI" » PIDL-указатель [D6]
Есть новые Нет новых   [118684   +12][b:0][p:0]