elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ayuda CreateProcess con variables de entorno de sistema
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ayuda CreateProcess con variables de entorno de sistema  (Leído 4,279 veces)
kworld

Desconectado Desconectado

Mensajes: 30


Ver Perfil
ayuda CreateProcess con variables de entorno de sistema
« en: 5 Junio 2010, 07:32 am »

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.

Código:
#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?


En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: ayuda CreateProcess con variables de entorno de sistema
« Respuesta #1 en: 5 Junio 2010, 10:46 am »

¿Que error te da exactamente? ¿2 por casualidad? Si es asi es por no encontrar el cmd.exe, tenes que usar la ruta completa.


En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
kworld

Desconectado Desconectado

Mensajes: 30


Ver Perfil
Re: ayuda CreateProcess con variables de entorno de sistema
« Respuesta #2 en: 5 Junio 2010, 13:15 pm »

Era error 87, de parámetros.
Ya lo resolví, me ayudaron en el foro de la msdn, me dijeron que CreateEnvironmentBlock siempre devuelve un bloque unicode, así es que me faltaba el flag CREATE_UNICODE_ENVIRONMENT

Al final mi code quedó así:

Código:
#define UNICODE

#include <windows.h>
#include <stdio.h>
#include <userenv.h>

int main()
{   
    LPVOID env_block;   
    if (!CreateEnvironmentBlock(&env_block, 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 = TEXT("");
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|CREATE_UNICODE_ENVIRONMENT|NORMAL_PRIORITY_CLASS, env_block, NULL, &si, &pi);
    if (!b)
    {
          printf("No CreateProcess. Error:%d\n",GetLastError());
    }
   
    WaitForSingleObject(pi.hProcess, INFINITE);
    CloseHandle( pi.hProcess );
    CloseHandle( pi.hThread );
    DestroyEnvironmentBlock(env_block);
   
    getchar();
}
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Sistema de contraseñas variables
Programación Visual Basic
CAR3S? 4 2,894 Último mensaje 5 Febrero 2011, 18:00 pm
por 79137913
Variables De Entorno !!! Ayuda
Windows
Puma93 2 3,160 Último mensaje 26 Agosto 2011, 17:20 pm
por Puma93
PROBLEMA CreateProcess() en QT
Programación C/C++
mikeltxus 1 2,378 Último mensaje 18 Noviembre 2011, 14:06 pm
por mikeltxus
[BATCH] [RESULETO] Ayuda con variables de entorno.
Scripting
Juanker Time 2 1,909 Último mensaje 25 Febrero 2015, 23:22 pm
por Juanker Time
Pasar variables de entorno a variables del sistema
Scripting
Scry 0 1,865 Último mensaje 16 Mayo 2017, 11:09 am
por Scry
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines