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.