Hey,
ich wollte mal bisschen mit der RtlCreateUserProcess
API rumspielen und habe folgenden Code geschrieben:
Delphi-Quellcode:
procedure TfrmMain.Button2Click(Sender: TObject);
var
ProcessParameters: PRTL_USER_PROCESS_PARAMETERS;
ProcessInfo: RTL_PROCESS_INFORMATION;
ImageFileName,
SystemDirectory: UNICODE_STRING;
begin
FillChar(ProcessInfo, SizeOf(RTL_PROCESS_INFORMATION), #0);
ProcessInfo.Size := SizeOf(RTL_PROCESS_INFORMATION);
RtlInitUnicodeString(@ImageFileName, '\??\C:\Windows\notepad.exe');
RtlInitUnicodeString(@SystemDirectory, '\??\C:\Windows\System32');
RtlCreateProcessParameters(@ProcessParameters, @ImageFileName,
@SystemDirectory, nil, nil, 0, nil, nil, nil, nil);
RtlCreateUserProcess(@ImageFileName, OBJ_CASE_INSENSITIVE,
ProcessParameters, nil, nil, 0, false, 0, 0, @ProcessInfo);
NtResumeThread(ProcessInfo.hThread, nil);
RtlDestroyProcessParameters(@ProcessParameters);
end;
Der Prozess wird erzeugt, alle APIs geben STATUS_SUCCESS zurück, aber wenn ich mit NtResumeThread den Prozess laufen lasse, erscheint folgende Fehlermeldung:
Zitat:
---------------------------
notepad.exe - Fehler in Anwendung
---------------------------
Die Anwendung konnte nicht richtig initialisiert werden (0xc0000033). Klicken Sie auf "OK", um die Anwendung zu beenden.
---------------------------
OK
---------------------------
Ich nehme mal an, dass ich irgendwas bei den ProcessParameters falsch gemacht habe. Hat jemand ne Idee woran das liegen könnte?
Gruß Zacherl