Chcę wymienić wszystkie komputery w systemie i uzyskać nazwę zalogowanego użytkownika dla tego pulpitu. Do tej pory mam następujący kod snippitu jako przykład uzyskania uchwytu HDESK i próby określenia nazwy użytkownika z nim powiązanej (jeśli jest), ale wywołanie LookupAccountSid kończy się niepowodzeniem z ERROR_NONE_MAPPED ("Nie było mapowania między nazwami kont i identyfikatorami bezpieczeństwa Gotowe").Uzyskaj zalogowaną nazwę użytkownika systemu Windows skojarzoną z pulpitem
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);
Być może dlatego jestem wyciągając SID logowania, a następnie poprzez GetUserObjectInformation użytkownika SID. Jeśli tak, czy mogę przekonwertować to na identyfikator SID zalogowanego użytkownika?
Czy ktoś może wskazać mi właściwy kierunek, aby uzyskać uzyskanie nazwy użytkownika dla dowolnego pulpitu (za pomocą odpowiedniego uchwytu HDESK lub HNWD, a nawet uchwytu pulpitu HWINSTA)? z góry dzięki.
Dzięki, dobrą propozycję, ale po wypróbowaniu go. podczas gdy mogę wyświetlić listę sesji i skojarzone nazwy użytkowników (jeśli są), nazwa sesji sesji jest zawsze nazwą sesji RDP, a nie nazwą stacji Windows (patrz definicja WTSWinStationName w http://msdn.microsoft.com/en-us/library/ aa383861% 28VS.85% 29.aspx). Gdybym mógł połączyć identyfikator sesji ze stacją Windows, chociaż ta technika byłaby doskonała, ale nie mogę tego znaleźć. – QAZ
@QAZ, który nie działa, każda sesja ma stację okna winsta0, która jest stacją okien, która ma wszystkie widoczne widnows (jedyną inną stacją będącą przedmiotem zainteresowania jest bezpieczny deaktop dla tej sesji). – Joshua