доброго времени суток. кто-нибудь знает как получить из Outlook'а почтовый адрес и пароль к нему? где хранится эта инфа? спасибо за внимание.
Очень меня эта тема интересует в отношении Outlook XP/2003/2007 (НЕ Express) Из реестра можно вытянуть все про почтовый аккаунт кроме пароля. Опять же в реестре хранится, что-то похожее на пароль в зашифрованном виде (KEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\%profile_name%\9375CFF0413111d3B88A00104B2A6676\00000004\POP3 Password) Однако совершенно непонятно, что с ним делать дальше. Любые идеи приветствуются.
Код (Text): typedef HRESULT (WINAPI *PStoreCreateInstancePtr)(IPStore **, DWORD, DWORD, DWORD); int IsUnicode(unsigned char *data, unsigned long length) { for(unsigned int i=0; i<length-1; i++) { if(data[i] == 0) return 1; } return 0; } void GetStoredPasswords(void) { HRESULT hRes; HMODULE hPstoreDLL; IPStorePtr spPStore; IEnumPStoreTypesPtr spEnumTypes, spEnumSubTypes; IEnumPStoreItemsPtr spEnumItems; GUID typeGUID, subtypeGUID; LPWSTR szItemName; unsigned long pcbData = 0; unsigned char *ppbData = NULL; _PST_PROMPTINFO *pi = NULL; char szPw[512]=""; hPstoreDLL = LoadLibrary("pstorec.dll"); PStoreCreateInstancePtr PStoreCreateInstance = (PStoreCreateInstancePtr)GetProcAddress(hPstoreDLL, "PStoreCreateInstance"); hRes = PStoreCreateInstance(&spPStore, 0, 0, 0); hRes = spPStore->EnumTypes(0, 0, &spEnumTypes); while(spEnumTypes->raw_Next(1, &typeGUID, 0) == S_OK) { printf("TypeGUID = %.8x\r\n", typeGUID); hRes = spPStore->EnumSubtypes(0, &typeGUID, 0, &spEnumSubTypes); while(spEnumSubTypes->raw_Next(1, &subtypeGUID, 0) == S_OK) { printf("\tSubtypeGUID = %.8x\r\n", subtypeGUID); hRes = spPStore->EnumItems(0, &typeGUID, &subtypeGUID, 0, &spEnumItems); while(spEnumItems->raw_Next(1, &szItemName, 0) == S_OK) { printf("\t\tItemName = %ws\r\n", szItemName); pcbData = 0; ppbData = NULL; pi = NULL; hRes = spPStore->ReadItem(0, &typeGUID, &subtypeGUID, szItemName, &pcbData, &ppbData, pi, 0); if(IsUnicode(ppbData, pcbData)) { printf("\t\tItemData = %ws\r\n",ppbData); } else { printf("\t\tItemData = %s\r\n",ppbData); } } } } }
Спасибо большое, но к сожалению, Outlook 2003/2007 не хранит пароли в Protected Storage. По крайней мере я не могу там увилеть, хоть что-то, что могло бы быть паролем