У меня есть служба, работающая как система, написанная на C ++
Служба должна читать историю IE (версии 7-11) текущего вошедшего в систему пользователя.
Я использую олицетворение, чтобы бежать под привилегиями пользователя
Когда я запускаю этот код из контекста пользователя (без олицетворения), он печатает историю IE, но при запуске из системы ничего не возвращает.
Есть идеи, что не так?
//Some impersonation code
CoInitialize(NULL);
STATURL url;
wstring strUrl;
ULONG uFetched;
IUrlHistoryStg2Ptr history;
IEnumSTATURLPtr enumPtr;
if (FAILED(CoCreateInstance(CLSID_CUrlHistory,
NULL,
CLSCTX_INPROC_SERVER,
IID_IUrlHistoryStg2,
(void**)&history)))
{
cout << "ERROR CoCreateInstance";
return false;
}
if (FAILED(history->EnumUrls(&enumPtr))) {
cout << "ERROR EnumUrls";
return false;
}
while (SUCCEEDED(enumPtr->Next(1, &url, &uFetched)))
{
if (uFetched == 0)
break;
strUrl = url.pwcsUrl;
wcout << strUrl << endl;
}
CoUninitialize();
Задача ещё не решена.
Других решений пока нет …