Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

Benutzer einer Gruppe zu ordnen

  Alt 28. Jan 2003, 03:41
So es geht in die letzte Runde des User-Managers. Wenn das Problem gelöst ist. Kann ich ihn veröffentlichen bzw. als Alpha-Release zum Testen freigeben und dann das große Geld damit machen.

Es geht jetzt darum einem Benutzer einer Gruppe zu zuordnen. Folgender Code läßt sich prima kompilieren (beide Versionen):
Delphi-Quellcode:
{ 1. Version }
      {dwEntries := 0;
      if IsDlgButtonChecked(hApp, IDC_CHKISADMIN) = BST_CHECKED then
      begin
        Inc(dwEntries);
        setlength(sGroupArray, dwEntries);
        sGroupArray[dwEntries-1] := 'Administratoren';
      end;
      if IsDlgButtonChecked(hApp, IDC_CHKISPOWERUSER) = BST_CHECKED then
      begin
        Inc(dwEntries);
        setlength(sGroupArray, dwEntries);
        sGroupArray[dwEntries-1] := 'Hauptbenutzer';
      end

      GetMem(gui0, dwEntries*sizeof(Pointer));
      for i := 0 to dwEntries-1 do
      begin
        Inc(Integer(gui0), sizeof(Pointer));
        PGroupInfo0(gui0)^.grpi0_name := PWideChar(WideString(sGroupArray[i]));
      end;

      dwError := NetUserSetGroups(nil, PWideChar(WideString(sUser)), 0, gui0, dwEntries); }

      //NetAPIBufferFree(gui0); // <- mag er nicht
      //FreeMem(gui0, dwEntries*sizeof(Pointer)); // <- mag er auch nicht :o(

      { 2. Version }
      if IsDlgButtonChecked(hApp, IDC_CHKISPOWERUSER) = BST_CHECKED then
        dwError := NetGroupAddUser(nil, PWideChar(WideString('Hauptbenutzer')), PWideChar(WideString(sUser)))
      else
        dwError := NetGroupDelUser(nil, PWideChar(WideString('Hauptbenutzer')), PWideChar(WideString(sUser)));

      case dwError 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;
Das Problem ist nur, ich bekomme jedes mal "Gruppe nicht gefunden". Obwohl das auslesen so geht:
Delphi-Quellcode:
if sUser <> 'then
  begin
    if NetUserGetLocalGroups(nil, PWideChar(WideString(sUser)), 0, 0, gui0, MAX_PREFERRED_LENGTH,
      dwEntriesRead, dwEntriesTotal) = NERR_SUCCESS then
    tmp := gui0;
    begin
      for i := 0 to dwEntriesRead-1 do
      begin
        s := String(PGroupInfo0(gui0)^.grpi0_name);
        if s = 'Administratorenthen
          CheckDlgButton(hApp, IDC_CHKISADMIN, Integer(TRUE));
        if s = 'Hauptbenutzerthen
          CheckDlgButton(hApp, IDC_CHKISPOWERUSER, Integer(TRUE));
        if s = 'Benutzerthen
          CheckDlgButton(hApp, IDC_CHKISUSER, Integer(TRUE));
        if s = 'Sicherungs-Operatorenthen
          CheckDlgButton(hApp, IDC_CHKISBACKUPOP, Integer(TRUE));
        if s = 'Replikations-Operatorthen
          CheckDlgButton(hApp, IDC_CHKISREPOP, Integer(TRUE));
        if s = 'Gästethen
          CheckDlgButton(hApp, IDC_CHKISGUEST, Integer(TRUE));
        Inc(Integer(gui0), sizeof(pointer));
      end;
        //Messagebox(0, pointer(s), '', 0);
    end;
    NetAPIBufferFree(tmp);
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat