다음 코드는 CreateProcess
을 사용하여 환경 변수로 명령을 실행합니다. 여기에서 notepad %APPDATA%\test.txt
을 실행하려고 시도합니다.CreateProcess로 인스턴스화 된 명령에서 환경 변수를 사용하거나 확장하는 방법은 무엇입니까?
notepad %APPDATA%\test.txt
을 Windows' CMD
에서 직접 실행하면 % APPDATA %이 (가) 확장됩니다. 그러나 CreateProcess
을 실행하면 환경 변수를 확장 할 수 없습니다. 이유 및 해결 방법에 대한 의견을 제시 하시겠습니까? 모든 의견을 주시면 감사하겠습니다!
program TestConsole2;
{$APPTYPE CONSOLE}
uses
Windows, SysUtils;
var
I: Integer;
ProgramName: String;
StartInfo : TStartupInfo;
ProcInfo : TProcessInformation;
CreateOK : Boolean;
begin
try
FillChar(StartInfo, SizeOf(StartInfo), #0);
FillChar(ProcInfo, SizeOf(ProcInfo), #0);
StartInfo.cb := SizeOf(StartInfo);
ProgramName := 'NOTEPAD %APPDATA%\test.txt';
CreateOK := CreateProcess(
nil, PChar(ProgramName), nil, nil, True, 0, nil, nil, StartInfo, ProcInfo);
if CreateOK then WaitForSingleObject(ProcInfo.hProcess, INFINITE);
Readln(ProgramName);
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
많은 의견을 보내 주셔서 감사합니다. :) – SOUser