Добавление URL в кеш IE из сервиса

У меня есть сервис, который должен добавить URL-адреса в кеш IE вошедшего в систему пользователя

Для этого я сначала получаю токен пользователя с OpenProcessToken и позвонить ImpersonateLoggedOnUser

Я попытался добавить URL с помощью 2 методов

  1. С использованием IUrlHistoryStg2 COM-интерфейс и вызов AddUrlAndNotify метод
  2. С использованием CommitUrlCacheEntryW следующим образом
    CommitUrlCacheEntryW(urlToEnterWithPrefix, 0, ExpireTime, LastModifiedTime, URLHISTORY_CACHE_ENTRY | NORMAL_CACHE_ENTRY, NULL, 0, NULL, NULL);

Оба метода работают нормально, когда процессы выполняются от имени вошедшего в систему пользователя, но не работают, когда он работает под локальной системой

CommitUrlCacheEntryW статистика документации, которая:

WinINet не поддерживает серверные реализации. Кроме того, это
не должны использоваться из службы. Для серверных реализаций или
службы используют службы Microsoft Windows HTTP (WinHTTP).

Но я не мог найти какой-либо метод в WinHTTP что соответствует CommitUrlCacheEntryW

Я хотел бы помочь со следующими вопросами:

  1. Могу ли я использовать IUrlHistoryStg2 из службы для доступа к истории входа вошедшего в систему пользователя?
  2. Как я могу использовать CommitUrlCacheEntryW или более тонкая функция от службы для доступа к истории URL вошедшего в систему пользователя?
  3. Есть ли третий вариант, который я до сих пор не использовал?

3

Решение

После изменения API CommitUrlCacheEntryW я обнаружил, что он проверяет

  • Если текущий поток был олицетворением
  • Если процессы Сервис

Если какая-либо из проверок верна, она существует с кодом ошибки 0x80070078

Итак, то, чего я хотел достичь, невозможно из сервиса

0

Другие решения

Других решений пока нет …