Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#3
  Alt 28. Jan 2003, 14:15
Moin Luckie,

wie heute Früh im Chat versprochen hab' ich mir das noch einmal angesehen:

So geht's bei mir:

Delphi-Quellcode:
var
  pGroupname : PWideChar;
  pMember : PLOCALGROUP_MEMBERS_INFO_3;
  dwResult : NET_API_STATUS;

begin
  pGroupName := AllocMem((Length('Hauptbenutzer')+1) shl 1);
  pMember := AllocMem(SizeOf(LOCALGROUP_MEMBERS_INFO_3));
  pMember.lgrmi3_domainandname := AllocMem((Length('<Rechnername>\testuser')+1) shl 1);
  try
    // Kein Length + 1, wegen der abschliessenden #00#00
    StringToWideChar('Hauptbenutzer',pGroupName,Length('Hauptbenutzer') shl 1);
    StringToWideChar('<Rechnername>\testuser',pMember.lgrmi3_domainandname,Length('<Rechnername>\testuser') shl 1);
    dwResult := NetLocalGroupAddMembers(nil,pGroupName,3,pMember,1);
    case dwResult of
      NERR_SUCCESS : ShowMessage('OK');
      NERR_GROUPNOTFOUND : ShowMessage('Group not found');
      else ShowMessage(SysErrorMessage(dwResult)+#13#10+IntToStr(dwResult));
    end;
  finally
    FreeMem(pGroupname,(Length('Hauptbenutzer')+1) shl 1);
    FreeMem(pMember.lgrmi3_domainandname,(Length('<Rechnername>\testuser')+1) shl 1);
    FreeMem(pMember,SizeOf(LOCALGROUP_MEMBERS_INFO_3));
  end;
end;
Achtung:
Eventuell musst Du noch was im Aufruf anpassen, da ich nicht die Jedi Units benutze.

<Rechnername> muss natürlich gegen den Namen des Rechners ausgetauscht werden, auf dem die Funktion aufgerufen wird, aber Du wirst ja eh' nicht drum herumkommen das was ich da als Stringliterale angegeben habe in Form von Stringvariablen zu benutzen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat