createprocess如何與環(huán)境變量交互

小樊
118
2024-06-26 16:59:46

在使用CreateProcess函數(shù)創(chuàng)建新進(jìn)程時(shí),可以通過(guò)傳入lpEnvironment參數(shù)來(lái)指定新進(jìn)程的環(huán)境變量。lpEnvironment參數(shù)是一個(gè)指向空終止多字符串?dāng)?shù)組的指針,每個(gè)字符串都采用“變量名=值”的形式表示一個(gè)環(huán)墋變量。

例如,可以創(chuàng)建一個(gè)包含兩個(gè)環(huán)境變量的新進(jìn)程:

TCHAR szCmdline[] = TEXT("child.exe");
TCHAR szEnv[] = TEXT("VAR1=Value1\0VAR2=Value2\0");
LPVOID lpvEnv = (LPVOID)szEnv;

STARTUPINFO si;
PROCESS_INFORMATION pi;

ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));

CreateProcess(NULL, szCmdline, NULL, NULL, FALSE, 0, lpvEnv, NULL, &si, &pi);

在上面的代碼中,通過(guò)將包含兩個(gè)環(huán)境變量的字符串?dāng)?shù)組傳遞給lpvEnv參數(shù),可以將這些環(huán)境變量傳遞給新進(jìn)程。新進(jìn)程將繼承這些環(huán)境變量并在其運(yùn)行過(guò)程中使用它們。

注意:在創(chuàng)建新進(jìn)程時(shí),需要確保lpEnvironment參數(shù)指向的字符串?dāng)?shù)組以兩個(gè)空終止字符終止。

0