Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Problem mit NetUserGetInfo (https://www.delphipraxis.net/2452-problem-mit-netusergetinfo.html)

CalganX 23. Jan 2003 19:37


Problem mit NetUserGetInfo
 
Hi,
also ich kriege heute noch die Krätze!!!
Ersteinmal mein erstes Problem: Ich versuche Informationen zum User zu bekommen. Dazu hole ich mir die Infos mit NetUserGetInfo. Username ist der aktuell selektierte Eintrag in einer ListBox, deren Einträge aus NetUserEnum kommen. Um die Infos herauszubekommen nutze ich folgenden Source (*abtipp*; Remotedesktopverbindung funktioniert nicht!):
Delphi-Quellcode:
CurSelUser_i := SendMessage(hWndListBox_RegUsers, LB_GETCURSEL, 0, 0);
SendMesage(hWndListBox_RegUsers, LB_GETTEXT, CurSelUser_i, integer(@CurSelUser));
case NetUserGetInfo(nil, @GetCurSel, 1, @aBuffer) of
  NERR_SUCCESS:
   begin
     // tue was!
   end;
  // folgliches Fehlerhandling
end;
Problem ist, dass immer der Fehler kommt, dass der Benutzername falsch sei. Ich habe aber bereits geprüft, was der Wert von CurSelUser ist, aber der scheint richtig zu sein. Was kann man da machen?

Bitte keine Links o.ä. Ich bin kurz davor durchzudrehen!

Chris

PS: Mein zweites Problem kommt gleich hinterher in einem anderen Thread.

Christian Seehase 23. Jan 2003 19:58

Moin Chris,

welchen Fehlercode erhältst Du, wenn Du bei Misserfolg GetLastError aufrufst? (ich rate 87).
Andere Möglichkeit:
Erweitere mal die Case Anweisung um ERROR_ACCESS_DENIED, NERR_InvalidComputer und NERR_UserNotFound.
Dann kannst Du ja eventuell sehen, was der Funktion nicht passt.

Luckie 23. Jan 2003 19:58

Laß hier: NetUserGetInfo(nil, {->}@{<-}GetCurSel, 1, @aBuffer) mal das @ weg.

Bei mir sieht das übrigens so aus:
Delphi-Quellcode:
procedure GetUserInfo(sUser: String);
var
  s   : String;
  ui11 : Pointer;
begin
  if sUser <> ''then
  begin
    NetUserGetInfo(nil, PWideChar(WideString(sUser)), 11, ui11);
    s := String(PUserInfo11(ui11)^.usri11_name);
    SetDlgItemText(hApp, 103, @s[1]);
    s := String(PUserInfo11(ui11)^.usri11_full_name);
    SetDlgItemText(hApp, 104, @s[1]);
    s := String(PUserInfo11(ui11)^.usri11_comment);
    SetDlgItemText(hApp, 105, @s[1]);
    s := String(PUserInfo11(ui11)^.usri11_home_dir);
    SetDlgItemText(hApp, 111, @s[1]);
    s := '';
    s := FormatTime(PUserInfo11(ui11)^.usri11_password_age*1000);
    SetDlgItemText(hApp, 112, @s[1]);
    s := SecsToDateTime(PUserInfo11(ui11)^.usri11_last_logon);
    SetDlgItemText(hApp, 113, @s[1]);
    s := IntToStr(PUserInfo11(ui11)^.usri11_num_logons);
    SetDlgItemText(hApp, 114, @s[1]);
    //s := SecsToDateTime(PUserInfo11(ui11)^.usri11_last_logoff);
    s := '';
    SetDlgItemText(hApp, 115, @s[1]);
    s := IntToStr(PUserInfo11(ui11)^.usri11_bad_pw_count);
    SetDlgItemText(hApp, 116, @s[1]);
  end;
end;

CalganX 24. Jan 2003 11:59

Hi,
also das weglassen kannst du vergessen, da ich diese @s nur dann mache, wenn er meckert. Genaueren Source, sowie Fehlermeldungen gibt es, wenn ich wieder zu Hause bin.
@ Christian: Habe ich ja! Aber GetLastError noch nicht. Was meinst du mit "ich empfehle 87"? Ich habe noch nie mit GetLastError gearbeitet.

Chris

PS: nutze nonVCL.

Christian Seehase 24. Jan 2003 12:53

Moin Chris,

also bei "ich rate 87", war das rate nicht im Sinne von empfehle, sondern im Sinne von raten, wie bei einem Rätsel gemeint ;-)

Fehlercode 87 wäre ERROR_INVALID_PARAMETER.

um den zu erhalten müsstest Du nur mal im else Zweig Deiner Case Anweisung ein

Delphi-Quellcode:
ShowMessage(SysErrorMessage(GetLastError));
// oder
ShowMessage(IntToStr(GetLastError));
einbauen.

Zum Testen müsste das wohl akzeptabel sein.

@Luckie:
Wenn ich das richtig sehe, hast Du NetApiBufferFree vergessen, um den Buffer wieder freizugeben.

Luckie 24. Jan 2003 13:32

Nein, zu dem Zeitpunkt war ich noch nicht fertig. Keine Angst also, es ist alles drin und da, wo es hingehört.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:58 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz