Hallo Kodezwerg,
schon mal danke für die Mühe.
Nein, die Jedis verwende ich nicht.
Habe das mal versucht hier umzusetzen, aber WTSQueryUserToken liefert false zurück, so dass in der Folge CreateProcressAsUser nicht ausgeführt wird.
Delphi-Quellcode:
function WTSQueryUserToken(SessionId: ULONG; var phToken: THandle): BOOL; stdcall; external 'Wtsapi32.dll';
procedure TForm3.Button1Click(Sender: TObject);
const
ProgramName = 'D:\DEV\DX10\FileIO\FileIO.exe';
var
hToken: THandle;
StartupInfo: TStartupInfo;
ProcessInfo: TProcessInformation;
res: boolean;
SessionID: Cardinal;
begin
GetStartupInfo(StartupInfo);
SessionID := WtsGetActiveConsoleSessionID;
if WTSQueryUserToken(SessionID, hToken) then
begin
res := CreateProcessAsUser(hToken, ProgramName, nil, nil, nil, False, CREATE_NEW_CONSOLE, nil, nil, StartupInfo, ProcessInfo);
if res then
WaitForSingleObject(ProcessInfo.hProcess,INFINITE);
end;
end;