ログインしたユーザーの IE キャッシュに URL を追加する必要があるサービスがあります。
そのために、まずOpenProcessTokenでユーザーのトークンを取得し、 ImpersonateLoggedOnUserを呼び出します
2つの方法でURLを追加してみました
- IUrlHistoryStg2 COM インターフェイスを使用し、AddUrlAndNotifyメソッドを呼び出す
- 次の方法で
CommitUrlCacheEntryWを使用する
CommitUrlCacheEntryW(urlToEnterWithPrefix, 0, ExpireTime, LastModifiedTime, URLHISTORY_CACHE_ENTRY | NORMAL_CACHE_ENTRY, NULL, 0, NULL, NULL);
プロセスがログイン ユーザーで実行されている場合は両方の方法が正常に機能しますが、LocalSystem で実行されている場合は失敗します。
CommitUrlCacheEntryWドキュメントの統計は次のとおりです。
WinINet はサーバーの実装をサポートしていません。また、サービスからは使用しないでください。サーバーの実装またはサービスには、Microsoft Windows HTTP サービス (WinHTTP) を使用します。
しかし、 CommitUrlCacheEntryWに対応するWinHTTPのメソッドが見つかりませんでした
次の問題についてサポートをお願いします。
- サービスからIUrlHistoryStg2を使用して、ログインしているユーザーの URL 履歴にアクセスできますか?
- CommitUrlCacheEntryWまたはサービスのよりスリムな関数を使用して、ログインしているユーザーの URL 履歴にアクセスするにはどうすればよいですか?
- まだ使用していない 3 番目のオプションはありますか?