Ich habe folgendes versucht:
Zwei
VCL Projekte (Project1 und Project2 im gleichen Ordner - ohne
Win32 Ordner). Project2 läuft als Admin. Project1 ruft Project2 mit unterem (im Netz gefunden) Code auf. Geht nicht.
Code:
const
LOGON_WITH_PROFILE = $00000001;
function CreateProcessWithLogonW(
lpUsername,
lpDomain,
lpPassword:PWideChar;
dwLogonFlags:dword;
lpApplicationName: PWideChar;
lpCommandLine: PWideChar;
dwCreationFlags: DWORD;
lpEnvironment: Pointer;
lpCurrentDirectory: PWideChar;
lpStartupInfo: PStartupInfoW;
lpProcessInformation: PProcessInformation
): BOOL; stdcall; external 'advapi32.dll';
function CreateProcessAsLogon(const User, PW, Application, CmdLine: WideString):
Boolean;
var
si : TStartupInfoW;
pif : TProcessInformation;
begin
si.cb := SizeOf(TStartupInfoW);
si.dwFlags := STARTF_USESHOWWINDOW;
si.wShowWindow := 1;
si.lpReserved := nil;
si.lpDesktop := nil;
si.lpTitle := nil;
Result := CreateProcessWithLogonW(PWideChar(User), nil, PWideChar(PW),
LOGON_WITH_PROFILE, nil, PWideChar(Application +' '+CmdLine),
CREATE_DEFAULT_ERROR_MODE, nil, nil, @si, @pif);
end;
procedure TForm1.FormClick(Sender: TObject);
begin
CreateProcessAsLogon('Username', 'Password', 'Project2.exe', '');
end;
Was kann ich noch tun? Das alles unter Win10.