Ich hab die Lösung ...
Wenn ich beim zuweisen des Users und Passworts den Wert nochmal als PChar caste funktioniert es auch mit Delphi 12.1 ohne Probleme.
Könnte jetzt auch die Variablen lUser und lPass auf PChar ändern, müsste beim zuweisen dann aber aufjedenfall ja als PChar casten.
Kann mir einer erklären warum das mit Delphi 11.3 nun immer funktioniert hat und es sich bei Delphi 12.1 anders verhält?
Delphi-Quellcode:
var
lError: integer;
NRW : TNetResource;
hToken: NativeUInt;
lUser,
lPass: string;
begin
LogonUser('NETWORK SERVICE', '"NT AUTHORITY', Nil, 9{LOGON32_LOGON_NEW_CREDENTIALS}, LOGON32_PROVIDER_WINNT50, &hToken );
ImpersonateLoggedOnUser(hToken);
NRW.dwScope := RESOURCE_GLOBALNET;
NRW.dwType := RESOURCETYPE_DISK;
NRW.dwUsage := RESOURCEUSAGE_CONNECTABLE;
NRW.dwDisplayType := RESOURCEDISPLAYTYPE_SHARE;
NRW.lpLocalName := nil;
NRW.lpComment := '';
NRW.lpRemoteName := PChar('\\<REMOTENAME>');
//lUser := '<USER>';
//lPass := '<PASSWORD>';
lUser := PChar('<USER>');
lPass := PChar('<PASSWORD>');
lError := WNetAddConnection2(NRW, PChar(lPass), PChar(lUser), 0);
...
end;