AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Benutzer einer Gruppe zu ordnen

Ein Thema von Luckie · begonnen am 28. Jan 2003 · letzter Beitrag vom 29. Jan 2003
Antwort Antwort
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1
  Alt 28. Jan 2003, 21:20
Ja, steckt aber in SysUtils drin. Du verstehen?

Jetzt bekomme ich aber hier einen RunTimeError:

Delphi-Quellcode:
procedure AddUserProc(sComputer: String);
var
  ui3 : PUSERINFO3; //Pointer;
  szBuffer : array[0..255] of Char;
  s, sUser : String;
  dwNetError : NET_API_STATUS;
begin
  Sender := VOID;
  GetMem(ui3, (sizeof(USER_INFO_3)) shl 1);
  GetDlgItemText(hApp, IDC_EDTNAME, szBuffer, sizeof(szBuffer));
  sUser := s;
  s := String(szBuffer);
  ui3.usri3_name := PWideChar(WideString(s));
  GetDlgItemText(hApp, IDC_EDTDESCRIPTION, szBuffer, sizeof(szBuffer));
  s := String(szBuffer);
  ui3.usri3_comment := PWideChar(WideString(s));
  GetDlgItemText(hApp, IDC_EDTFULLNAME, szBuffer, sizeof(szBuffer));
  s := String(szBuffer);
  ui3.usri3_full_name := PWideChar(WideString(s));
  GetDlgItemText(hApp, IDC_EDTHOMEDIR, szBuffer, sizeof(szBuffer));
  s := String(szBuffer);
  ui3.usri3_home_dir := PWideChar(WideString(s));

  ui3.usri3_flags := 0;
  if IsDlgButtonChecked(hApp, IDC_CHKCANTCHNGPW) = BST_CHECKED then
    ui3.usri3_flags := ui3.usri3_flags or UF_PASSWD_CANT_CHANGE
  else
    ui3.usri3_flags := ui3.usri3_flags and not UF_PASSWD_CANT_CHANGE;
  if IsDlgButtonChecked(hApp, IDC_CHKDISABLED) = BST_CHECKED then
    ui3.usri3_flags := ui3.usri3_flags or UF_ACCOUNTDISABLE
  else
    ui3.usri3_flags := ui3.usri3_flags and not UF_ACCOUNTDISABLE;
  if IsDlgButtonChecked(hApp, IDC_CHKDONTEXPIRE) = BST_CHECKED then
    ui3.usri3_flags := ui3.usri3_flags or UF_DONT_EXPIRE_PASSWD
  else
    ui3.usri3_flags := ui3.usri3_flags and not UF_DONT_EXPIRE_PASSWD;
  if IsDlgButtonChecked(hApp, IDC_CHKLOCKED) = BST_CHECKED then
    ui3.usri3_flags := ui3.usri3_flags or UF_LOCKOUT
  else
    ui3.usri3_flags := ui3.usri3_flags and not UF_LOCKOUT;
  if IsDlgButtonChecked(hApp, IDC_CHKMUSTCHNGPW) = BST_CHECKED then
    ui3.usri3_password_expired := 1
  else
    ui3.usri3_password_expired := 0;

  dwNetError := NetUserAdd(nil, 3, ui3, nil); // <- hier kommt der RunTimeError. Was habe ich übersehen?
  NetAPIBufferFree(ui3);

  if IsDlgButtonChecked(hApp, IDC_CHKISADMIN) = BST_CHECKED then
    dwNetError := AddToGroup('Administratoren', sUser, sComputer);
  if IsDlgButtonChecked(hApp, IDC_CHKISPOWERUSER) = BST_CHECKED then
    dwNetError := AddToGroup('Hauptbenutzer', sUser, sComputer);
  if IsDlgButtonChecked(hApp, IDC_CHKISUSER) = BST_CHECKED then
    dwNetError := AddToGroup('Benutzer', sUser, sComputer);
  if IsDlgButtonChecked(hApp, IDC_CHKISGUEST) = BST_CHECKED then
    dwNetError := AddToGroup('Gäste', sUser, sComputer);
  if IsDlgButtonChecked(hApp, IDC_CHKISBACKUPOP) = BST_CHECKED then
    dwNetError := AddToGroup('Sicherungs-Operatoren', sUser, sComputer);
  if IsDlgButtonChecked(hApp, IDC_CHKISREPOP) = BST_CHECKED then
    dwNetError := AddToGroup('Replikations-Operator', sUser, sComputer);

  case dwNetError of
    ERROR_ACCESS_DENIED : s := 'Zugriff verweigert.';
    ERROR_INVALID_PARAMETER : s := 'Ungültiger Parameter.';
    NERR_InvalidComputer : s := 'Ungültiger Computer';
    NERR_NotPrimary : s := 'Operation darf nur auf dem Domain-Controller ausgeführt werden.';
    NERR_SpeGroupOp : s := 'Operation darf nicht auf diese Gruppe angewandt werden.';
    NERR_LastAdmin : s := 'Der letzte macht das Licht aus, aber nicht bei Windows. :o)'
                                +#13#10+'Der letzte Administrator Account kann nicht gelöscht werden';
    NERR_BadPassword,
    NERR_PasswordTooShort : s := 'Ungültiges Passwort';
    NERR_UserNotFound : s := 'Ungültiger Benutzer.';
    NERR_GroupNotFound : s := 'Gruppe nicht gefunden.';
    NERR_Success : s := 'Konto erfolgreich geändert.';
  end;
  if dwNetError <> NERR_Success then
    Messagebox(hApp, pointer(s), 'Konto ändern', MB_ICONSTOP);
end;
Wozu eigentlich das shl 1 bei GetMem?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:40 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