• 13 odgovora
  • 5.015 pregleda
Get Active User 18.11.2003. u 01:48 · pre 279 meseci #1
Ovo me muci vec par dana i nikako ne mogu da nadjem resenje.
Radi se o servisu koji treba da izvuce username (ili bilo koju drugu informaciju)trenutno aktivnog usera.
Da li moram da radim as Aktivnim Direktorijumima (ADSI), s obzirom da iako je user domenski on je ipak logovan i na lokalnu masinu. Probao sam svasta ali nikako ne uspevam.

Kako?
Potpis
Fear not the dark within this night
Beneath the sky of deadly light
Of raging fire seen from afar
The fear inside of who you are
Re: Get Active User 18.11.2003. u 05:39 · pre 279 meseci #2
Pogledaj NetWksta... funkcije, npr NetWkstaUserGetInfo
Potpis
IOCC
Re: Get Active User 18.11.2003. u 09:27 · pre 279 meseci #3
Probao sam ali ona vraca podatke o useru ali samo ako je pozovem iz konteksta logovanog usera. Ja kad bih znao taj kontekst nebih je ni zvao.
Jedino mi jos preostaje da preko NetWkstaUserEnum enumerisem sve usere pa da onda filterisem sistemske, ali to mi i dalje ne daje aktivnog usera.
Potpis
Fear not the dark within this night
Beneath the sky of deadly light
Of raging fire seen from afar
The fear inside of who you are
Re: Get Active User 18.11.2003. u 16:37 · pre 279 meseci #4
A, tek sad vidim da to treba da obaviš iz servisa. Samo, nije mi jasno kako onda definišeš ko je "aktivan korisnik". Svi koji su ulogovani su "aktivni", zar ne?
Potpis
IOCC
Re: Get Active User 18.11.2003. u 21:38 · pre 279 meseci #5
Da to je tacno tek sad vidim tu stranu problema. I uopste mi se ne svidja:)

Ali s obzirom da bih ja trebao da izbacim dialog box i u zavisnosti od grupe kojoj user pripada da mu prikazem odgovarajuca polja.. Opet mi ostaje pitanje kako da dodjem do logovanog ("aktivnog") korisnika.. Ok mora enumeracija.. Ali sad bih morao i da pazim gde koji dijalog izbacujem.. Ovo postaje previse komplikovano za moj mali mozak:))

Nazad na tablu za crtanje.
U svakom slucaju hvala.
Potpis
Fear not the dark within this night
Beneath the sky of deadly light
Of raging fire seen from afar
The fear inside of who you are
Re: Get Active User 18.11.2003. u 22:10 · pre 279 meseci #6
Jesi li probao sa GetUserName() API
Code:

GetUserName
The GetUserName function retrieves the user name of the current thread. This is the name of the user currently logged onto the system. 

BOOL GetUserName(
  LPTSTR lpBuffer,  // address of name buffer
  LPDWORD nSize     // address of size of name buffer
);

Potpis
-I know UNIX, PASCAL, C, FORTRAN,
COBOL, and nineteen other high-tech
words.
Re: Get Active User 18.11.2003. u 22:14 · pre 279 meseci #7
servis po definiciji ne bi trebao da (direktno) interaguje sa krajnjim korisnikom. znači, ne bi trebalo da ima bilo kakav UI.

za takve prilike, obično servis startuje neku "običnu" aplikaciju koja će da korisniku prikaže/pita to što treba.

a time rešavaš i pitanje aktivnog korisnika...
Potpis
blogče :: unescaped beta
  »
go-paste extenzija
  »
reč dana: backup
  »
bočne koalicije
Re: Get Active User 19.11.2003. u 08:47 · pre 279 meseci #8
GetUserName ne radi jer je fora bas u prvoj recenici da vraca korisnicko ime trenutnog threda. A servis radi u kontekstu lokalnog sistema.
Nasao sam neko resenje da enumerisem sve sesije, pa da iz njih vidim koja je aktivna i na osnovu nje vidim aktivnog usera.
Jos nisam implementirao ali cinimi se da ce uspeti javicu ako proradi.

Ako startujem aplikaciju iz servisnog threada zar nece ona da se opet izvrsi pod kontekstom sistema?
Potpis
Fear not the dark within this night
Beneath the sky of deadly light
Of raging fire seen from afar
The fear inside of who you are
Re: Get Active User 19.11.2003. u 18:50 · pre 279 meseci #9
Ako nekog interesuje. Resenje koje je kod mene proradilo je
WTSQuerySessionInformation(WTS_CURRENT_SERVER_HANDLE, WTS_CURRENT_SESSION, WTSUserName, ppUserName, pBytesReturned);
Potpis
Fear not the dark within this night
Beneath the sky of deadly light
Of raging fire seen from afar
The fear inside of who you are
Re: Get Active User 19.11.2003. u 19:04 · pre 279 meseci #10
Terminal Services?

Duhovito, nema šta. Samo, obrati pažnju da te funkcije ne dolaze sa svim verzijama Windows-a (čak ni svim NT verzijama).
Potpis
IOCC
Re: Get Active User 20.11.2003. u 17:25 · pre 279 meseci #11
Duhovito je zapravo, da ne kazem tragikomicno, sto se covek uopste muci oko ovih stvari. Necu da spominjem da jedan poularni OS ima veoma proste getpwuid(), getuid(), (...) funkcije koje postoje decenijama... Kao i uvek M$ ekipa radi po proverenom sistemu "sto mora lako, kad moze komplikovano?".
Potpis
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
Re: Get Active User 20.11.2003. u 17:37 · pre 279 meseci #12
getpwuid(getuid()) - GetUserName. Šta je lakše i jednostavnije procenite sami.

Jedino što mi nije jasno kako to čoveku rešava problem.
Potpis
IOCC
Re: Get Active User 20.11.2003. u 20:08 · pre 279 meseci #13
getpwuid i getuid ne resavaju ovaj problem. Proces koji je vlasnik se vrti pod sistemskim nalogom, a ne korisnickim. A i GetUserName je lakse od ta dva...
Re: Get Active User 22.11.2003. u 12:59 · pre 279 meseci #14
Znam, ali gazde su mi odobrile, a ja se nisam uopste bunio.
Specifikacija je cudo. :))
Potpis
Fear not the dark within this night
Beneath the sky of deadly light
Of raging fire seen from afar
The fear inside of who you are
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme