У меня есть сервис, который необходимо добавить URL-адреса в кэш IE, вошедшего в систему пользователяДобавление URL в кэше IE от службы
Для того, чтобы сделать это, я сначала получить маркер пользователя с OpenProcessToken и вызвать ImpersonateLoggedOnUser
Я попытался добавить URL с 2-мя методами
- Использование IUrlHistoryStg2 COM-интерфейс, и вызвать метод AddUrlAndNotify
- Использование CommitUrlCacheEntryW следующим образом
CommitUrlCacheEntryW(urlToEnterWithPrefix, 0, ExpireTime, LastModifiedTime, URLHISTORY_CACHE_ENTRY | NORMAL_CACHE_ENTRY, NULL, 0, NULL, NULL);
Оба метода работают хорошо, когда процессы работает под вошедшего пользователя, но не когда он работает под LocalSystem
CommitUrlCacheEntryW статистика документации, что:
WinINet does not support server implementations. In addition, it should not be used from a service. For server implementations or services use Microsoft Windows HTTP Services (WinHTTP).
Но я не нашел ни одного способа в WinHTTP, который соответствует CommitUrlCacheEntryW
Я хотел бы помочь со следующими вопросами:
- Могу ли я использовать IUrlHistoryStg2 от службы для доступа вошедшего в URL-истории пользователя?
- Как я могу использовать CommitUrlCacheEntryW или более тонкую функцию из службы для доступа к URL-адресам входа в систему?
- Есть ли третий вариант, который я до сих пор не использовал?
3) Настольное приложение, которое запускается при входе пользователя в систему, с которым обменивается ваш сервис. –
Спасибо @AlexK., Я пытаюсь избежать добавления дополнительного приложения \ процесса на данный момент. Вы знаете, можно ли это сделать только с помощью сервиса? – 4x6hw
Ну, метод Commit отсутствует, поскольку документы говорят вам не делать этого, что происходит, когда вы используете метод интерфейса из службы? –