Hola, estoy intentando crear un proceso para una aplicación de consola, pero no quiero que el proceso creado herede las variables de entorno del proceso que lo crea, por eso quiero crear un bloque de proceso con solamente variables de sistema, sin embargo algo estoy haciendo mal porque CreateProcess me arroja error en el parámetro de la variable de entorno.
¿Alguien podría ayudarme por favor?
Código [Seleccionar]
#include <windows.h>
#include <stdio.h>
#include <userenv.h>
int main()
{
LPVOID env;
if (!CreateEnvironmentBlock(&env, NULL, FALSE))
{
printf("No CreateEnvironmentBlock. Error:%d\n",GetLastError());
}
PROCESS_INFORMATION pi;
memset(&pi, 0, sizeof(pi));
STARTUPINFO si;
memset(&si, 0, sizeof(si));
si.cb = sizeof(si);
si.dwFlags = STARTF_USESHOWWINDOW;
si.lpTitle = "";
si.wShowWindow = SW_NORMAL;
LPTSTR program = TEXT("cmd.exe");
LPTSTR params = TEXT("/c \"C:\\Users\\Carlos\\Desktop\\hola.cmd\"");
BOOL b;
b = CreateProcess(program, params, NULL, NULL, FALSE, CREATE_NEW_CONSOLE|NORMAL_PRIORITY_CLASS, env, NULL, &si, &pi);
if (!b)
{
printf("No CreateProcess. Error:%d\n",GetLastError());
}
WaitForSingleObject(pi.hProcess, INFINITE);
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
getchar();
}
¿Alguien podría ayudarme por favor?