DelphiSiWin32

Win32 api funkcije.
Odgovori
Uporabniški avatar
gabr
Prispevkov: 4129
Pridružen: 28.08.2001 14:10:47

DelphiSiWin32

Odgovor Napisal/-a gabr » 16.01.2008 08:04:44

Nadvse hvala. Bom vključil v DSiWin32.

Gp

Uporabniški avatar
gabr
Prispevkov: 4129
Pridružen: 28.08.2001 14:10:47

DelphiSiWin32

Odgovor Napisal/-a gabr » 16.01.2008 12:47:28

Hm.

Ta tvoja koda je identična tisti, vključeni v DSiWin32, za katero sem dobil report, da ne dela :((

Gp

Uporabniški avatar
gabr
Prispevkov: 4129
Pridružen: 28.08.2001 14:10:47

DelphiSiWin32

Odgovor Napisal/-a gabr » 16.01.2008 12:54:17

Zdaj sem ugotovil, da je tudi JclSecurity.IsAdministrator identičen.

Po moje je problem v premajhnem bufferju. Help za GetTokenInformation pravi:
ReturnLength
[out] Pointer to a variable that receives the number of bytes needed for the buffer pointed to by the TokenInformation parameter. If this value is larger than the value specified in the TokenInformationLength parameter, the function fails and stores no data in the buffer.
Bom predelal na dinamičen buffer. Mogoče bo pomagalo. V JclSecurity je buffer že sedaj rešen dinamično in to je edina razlika med njihovo kodo in mojo.

Gp
Zadnjič spremenil gabr, dne 16.01.2008 12:55:20, skupaj popravljeno 1 krat.

aoven
Prispevkov: 2338
Pridružen: 27.06.2001 23:56:07

DelphiSiWin32

Odgovor Napisal/-a aoven » 16.01.2008 13:05:18

Ni ravno identično. V Runnerjevem primeru ni tegale checka, ki pa v DSi implementaciji je:

Koda: Izberi vse

if ((groups.Groups[iGroup].Attributes and SE_GROUP_ENABLED) = SE_GROUP_ENABLED) and
Aleksander

Uporabniški avatar
gabr
Prispevkov: 4129
Pridružen: 28.08.2001 14:10:47

DelphiSiWin32

Odgovor Napisal/-a gabr » 16.01.2008 13:12:44

Hm, imaš prav. Tudi v JclSecurity ni tega checka.

Zanimivo.

Zdaj sem našel enega kolega, ki je local admin v domeni in bo preizkusil mojo novo verzijo.

Gp

Uporabniški avatar
gabr
Prispevkov: 4129
Pridružen: 28.08.2001 14:10:47

DelphiSiWin32

Odgovor Napisal/-a gabr » 16.01.2008 14:14:51

Pravi kolega, da moja verzija - s preverjanjem SE_GROUP_ENABLE - dela OK na njegovem local_admin_v_domeni računu.

Gp

aoven
Prispevkov: 2338
Pridružen: 27.06.2001 23:56:07

DelphiSiWin32

Odgovor Napisal/-a aoven » 16.01.2008 15:14:00

Heh, kaj boš pa zdaj? :)

Aleksander

Uporabniški avatar
gabr
Prispevkov: 4129
Pridružen: 28.08.2001 14:10:47

DelphiSiWin32

Odgovor Napisal/-a gabr » 16.01.2008 15:26:01

Pravi drugi kolega, da moja verzija ne dela na njegovi mašini, ki je hkrati local admin in domain admin. Tako da bova z njim nekako razvozlala zadevo, pa bo.

Gp

Uporabniški avatar
Runner
Prispevkov: 1079
Pridružen: 03.02.2005 12:05:25

DelphiSiWin32

Odgovor Napisal/-a Runner » 16.01.2008 16:58:30

Šele zdajle vidim da ste že v vroči debati :) Sploh nisem vedel da je koda skoraj identična (nisem šel včeraj gledat v DSi). Jaz sem tole kodo uporabljal v par programih in do sedaj nisem opazil kakšnih problemov (kar še ne pomeni da jih ni bilo).

A je ta kolega, ki je javil napako preveril mojo kodo če mu deluje pravilno? Meni je namreč včeraj test deloval uspešno. Kje bi bila lahko napaka pa še nisem šel preverjat. Mogoče se zvečer malo bolj potopim v problem če bom imel kaj časa.

Uporabniški avatar
gabr
Prispevkov: 4129
Pridružen: 28.08.2001 14:10:47

DelphiSiWin32

Odgovor Napisal/-a gabr » 16.01.2008 17:37:05

Ja, problem je natanko v testu za SE_GROUP_ENABLE, ki ga tvoja koda - enako kot tista iz JclSecurity - nima. Več pa še ne vem.

Gp

Odgovori