Ilość sesij Windows

0

Witam!

Wiem, że się powtarzam, ale na uprzednio zadane pytanie nie otrzymałem odpowiedzi. Mianowicie szukam sposobu na pobranie informacji ilu użytkowników jest zalogowanych do systemu WinXP (użytkownicy korzystają z opcji szybkiego przełączania użytkowników Start->Wyloguj->Przełącz użytkownika). Jedak chciałbym, aby funkcja ta działała również na koncie użytkownika Windows z ograniczeniami.

Z góry bardzo, bardzo dziękuje za pomoc, pozdrawiam.

0

Ciekawy pomysł, nie chce mi się teraz grzebać za przykładem ale wymysliłem coś takiego:

Można pobrać listę procesów systemowych wraz z Użytkownikami i policzyć użytkowników usuwając konta systemowe... Jak znajde czas to może wyskrobie przykładzik....

0

Wiem jak tego dokonać z konta administratora, używam funkcji WTSEnumerateSessionsA:

function WTSEnumerateSessionsA(AServer: THANDLE; AReserved, AVersion: DWORD; AWTS_SESSION_INFO, ACount: Pointer): Boolean; stdcall;
external 'Wtsapi32.dll';

function TMainFrm.GetSessionCount: DWORD;
var
AWTS_SESSION_INFO, ACOUNT: DWORD;
begin

if WTSEnumerateSessionsA(0, 0, 1, @AWTS_SESSION_INFO, @ACOUNT) then
result:= ACOUNT
else
result:= 0;

end;

jednak działa ona tylko na koncie użytkownika będącego administratorem systemu Windows. Na pozostałych kontach, zwracana wartość zawsze wynosi 1, niezależnie od ilości sesji.

0

Zawsze można napisać serwis(usługe) uruchamianą jako system i udostępniać dane innym programom.

0
ClockMan napisał(a)

Ciekawy pomysł, nie chce mi się teraz grzebać za przykładem ale wymysliłem coś takiego:

Można pobrać listę procesów systemowych wraz z Użytkownikami i policzyć użytkowników usuwając konta systemowe... Jak znajde czas to może wyskrobie przykładzik....

To nie jest rozwiązanie, na terminalu można mieć wiele osobnych sesji tego samego użytkownika. Poczytaj to co podsunął ŁF i ogólnie poszukaj o uprawnieniach na MSDN

1 użytkowników online, w tym zalogowanych: 0, gości: 1