Я хочу перечислить все рабочие столы в системе и получить зарегистрированное имя пользователя для этого рабочего стола.Пока у меня есть следующий фрагмент кода в качестве примера получения дескриптора HDESK и попытки определить имя пользователя, связанное с ним (если есть), но вызов LookupAccountSid завершается неудачно с ERROR_NONE_MAPPED («Не было сопоставления между именами учетной записи и идентификаторами безопасностиdone ").
HDESK desk = OpenDesktop( "Default", 0, FALSE, READ_CONTROL | DESKTOP_READOBJECTS );
DWORD size = 4096;
SID * sid = (SID *)malloc( size );
GetUserObjectInformation( desk , UOI_USER_SID, sid, size, &size );
char name[512], domain[512];
int namesz = 512, domainsz = 512;
LookupAccountSid( NULL, sid, &name, &namesz, &domain, &domainsz, &s);
Возможно, это связано с тем, что я извлекаю SID входа в систему через GetUserObjectInformation, а не из SID пользователя.Если да, могу ли я преобразовать это в SID вошедших в систему пользователей?
Кто-нибудь может указать мне правильное направление для получения имени пользователя, вошедшего в систему для произвольного рабочего стола (с помощью соответствующего дескриптора HDESK или HNWD?или даже десктоп станции HWINSTA обрабатывают)? заранее спасибо.