ich bin auch gerade dabei eine möglichkeit zu finden, die workgroup/domain am lokalen rechner zu ändern.
Delphi-Quellcode:
function NetJoinDomain(const lpServer: PWChar; const lpDomain:
PWChar; const lpAccountOU: PWChar; const lpAccount: PWChar; const lpPassword:
PWChar; const fJoinOptions: DWord): NET_API_STATUS; stdcall; external
'netapi32.dll';
ich habe es mit oben beschriebener funktion versucht. NET_API_STATUS wird als nicht deklariert angegeben.
habe es mal spaßeshalber durch
String ersetzt.
siehe da es lässt sich komplilieren. und beim aurufen mit
domainmsg := NetJoinDomain('test',nil,nil,nil,nil,NETSETUP_DOMAIN_JOIN_IF_JOINED);
wird die workgroup auch tatsächlich in 'test' umgeändert. aber leider kommt eine zugriffsverletzung gleich darauf und domainmsg ist immer noch leer.
Code:
access violation at 0012f7c4: write of address 0xf95be744
für was steht denn dieses NET_API_STATUS und wie komm ich da dran?
EDIT
auweia. die fehlermeldung ist ja ein fehlercode. also integer. NET_API_STATUS durch integer ersetzt und schon gehts
domainmsg ist nach dem setzen '0' also keine fehlermeldung.
zwei fragen bleiben dann trotzdem noch:
1. was ist NET_API_STATUS und warum ist das sinnvoller als einfach nur 'Integer'?
2. wie komme ich an die fehlercodes von folgenden meldungen ran?
Code:
ERROR_INVALID_PARAMETER A parameter is incorrect.
ERROR_NO_SUCH_DOMAIN The specified domain did not exist.
NERR_SetupAlreadyJoined The computer is already joined to a domain.
NERR_InvalidWorkgroupName The specified workgroup name is not valid.