Передача параметра через переменную среды для дочернего процесса
Есть родительский процесс, через него открываю дочерний процесс.
Нужно через переменную среды передать параметр UserProfile в дочерний процесс.
Когда пишу следующий код - выдает ошибку доступа.
STARTUPINFO si;
PROCESS_INFORMATION pi;
SetEnvironmentVariable(L"UserProfile", L"%UserProfile%");
GetEnvironmentVariable(L"UserProfile", buffer1, 100);
wstring star1(buffer1);
wstring str12 = L"C:\\ConsoleApplication1\\Debug\\ConsoleApplication1.exe";
TCHAR szCmdline1[] = TEXT("C:\\ConsoleApplication1\\Debug\\ConsoleApplication1.exe");
CreateProcess(NULL, szCmdline1, NULL, NULL, TRUE, CREATE_NEW_CONSOLE, NULL, L"C:\\ConsoleApplication1", &si, &pi);
В котором ConsoleApplication1.exe - дочерний процесс.
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
А попроще не хотите? У меня вполне работает такое, например:
int main(int argc, const char * argv[])
{
const char* user = getenv("UserProfile");
cout << "UserProfile = " << user << endl;
if (strcmp(user,"tester") != 0)
{
const char * env[] = {"UserProfile=tester", nullptr };
_spawnle(_P_WAIT,argv[0],argv[0],nullptr,env);
}
}
(чтоб не преумножать сущности сверх необходимости, процесс вызывает сам себя).