(Gast)
n/a Beiträge
|
AW: CreateProcess wirft Kernelbase Error
2. Apr 2021, 16:40
Ich hatte oben noch bissl was geändert. pps:
Vorallem siehe "Tipp"
Habe ich
Delphi-Quellcode:
function PipeExec(CommandLine, Path: String; EnvironementStrings: PChar; var StdIO: TStdIO; UserToken: THandle; ShowWindow: DWORD = SW_HIDE): TProcessInformation;
const
ProcessCreationFlags: DWord = NORMAL_PRIORITY_CLASS;
var
SI : TStartupInfo;
PathPChar : PChar;
begin
// initialize the structure we are going to use
Zeromemory(@SI, SizeOf(SI));
Zeromemory(@result, SizeOf(result));
// Fill the necessary fields
SI.cb := sizeof(SI); // Size of the structure. The OS uses that to validat it
SI.dwFlags := STARTF_USESHOWWINDOW or // Use the wShowWindow field
STARTF_USESTDHANDLES; // use the handles we created for the std IO pipes
SI.wShowWindow := ShowWindow; // Show the console or not...
SI.hStdError := StdIO.stdError.hWrite; // Write errors to the error pipe
SI.hStdInput := StdIO.stdIn.hRead; // read input from input pipe
SI.hStdOutput := StdIO.stdOut.hWrite; // Write Ouput to output pipe
if length(path) > 0 then
PathPChar := PChar(Path)
else
PathPChar := nil;
UniqueString(CommandLine); //<<<<<<< Hier!
if UserToken = 0 then
begin
if not CreateProcess( nil, // must be NIL for win16 apps under NT, including DOS progs
pchar(CommandLine),
nil, // Process security attibutes. Sue same as current
nil, // Thread security attibutes. Sue same as current
true, // Inherite handles. Must be true for IO redirection
ProcessCreationFlags, // creation flags
EnvironementStrings, // If using with a CGI aplication, you MUST pass the HTTP headers as env. strings in this variable
PathPChar, // Directory of the new process
SI, // SISTEMINFO Structure used to initialize the new process
result) // PROCESINFORMATION structure used to control the newly created process
then
RaiseLastOSError;
end
else
begin
if not CreateProcessAsUser( UserToken, // UserToken of desired user. That token must be retreived with LogonUser or DuplicatteToken from a Impersonation token
nil, // must be NIL for win16 apps under NT, including DOS progs
pchar(CommandLine),
nil, // Process security attibutes. Sue same as current
nil, // Thread security attibutes. Sue same as current
true, // Inherite handles. Must be true for IO redirection
ProcessCreationFlags, // creation flags
EnvironementStrings, // If using with a CGI aplication, you MUST pass the HTTP headers as env. strings in this variable
PathPChar, // Directory of the new process
SI, // SISTEMINFO Structure used to initialize the new process
result) // PROCESINFORMATION structure used to control the newly created process
then
RaiseLastOSError;
end;
end;
|
|
Zitat
|