Registriert seit: 29. Mai 2002
37.621 Beiträge
Delphi 2006 Professional
|
Benutzer einer Gruppe zu ordnen
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 = 'Administratoren' then
CheckDlgButton(hApp, IDC_CHKISADMIN, Integer(TRUE));
if s = 'Hauptbenutzer' then
CheckDlgButton(hApp, IDC_CHKISPOWERUSER, Integer(TRUE));
if s = 'Benutzer' then
CheckDlgButton(hApp, IDC_CHKISUSER, Integer(TRUE));
if s = 'Sicherungs-Operatoren' then
CheckDlgButton(hApp, IDC_CHKISBACKUPOP, Integer(TRUE));
if s = 'Replikations-Operator' then
CheckDlgButton(hApp, IDC_CHKISREPOP, Integer(TRUE));
if s = 'Gäste' then
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.
|