3

ログインしたユーザーの IE キャッシュに URL を追加する必要があるサービスがあります。

そのために、まずOpenProcessTokenでユーザーのトークンを取得し、 ImpersonateLoggedOnUserを呼び出します

2つの方法でURLを追加してみました

  1. IUrlHistoryStg2 COM インターフェイスを使用し、AddUrlAndNotifyメソッドを呼び出す
  2. 次の方法で 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のメソッドが見つかりませんでした

次の問題についてサポートをお願いします。

  1. サービスからIUrlHistoryStg2を使用して、ログインしているユーザーの URL 履歴にアクセスできますか?
  2. CommitUrlCacheEntryWまたはサービスのよりスリムな関数を使用して、ログインしているユーザーの URL 履歴にアクセスするにはどうすればよいですか?
  3. まだ使用していない 3 番目のオプションはありますか?
4

1 に答える 1

0

CommitUrlCacheEntryW API を逆にした後、チェックすることがわかりました

  • 現在のスレッドが偽装していた場合
  • がサービスを処理する場合

チェックのいずれかが true の場合、エラー コード 0x80070078 で存在します。

だから、私が達成したかったことはサービスからは不可能です

于 2016-04-19T14:44:57.177 に答える