Autor
|
Tema: ayuda CreateProcess con variables de entorno de sistema (Leído 4,479 veces)
|
kworld
Desconectado
Mensajes: 30
|
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. #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
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
¿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
Mensajes: 30
|
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í: #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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Sistema de contraseñas variables
Programación Visual Basic
|
CAR3S?
|
4
|
3,065
|
5 Febrero 2011, 18:00 pm
por 79137913
|
|
|
Variables De Entorno !!! Ayuda
Windows
|
Puma93
|
2
|
3,367
|
26 Agosto 2011, 17:20 pm
por Puma93
|
|
|
PROBLEMA CreateProcess() en QT
Programación C/C++
|
mikeltxus
|
1
|
2,559
|
18 Noviembre 2011, 14:06 pm
por mikeltxus
|
|
|
[BATCH] [RESULETO] Ayuda con variables de entorno.
Scripting
|
Juanker Time
|
2
|
2,125
|
25 Febrero 2015, 23:22 pm
por Juanker Time
|
|
|
Pasar variables de entorno a variables del sistema
Scripting
|
Scry
|
0
|
2,073
|
16 Mayo 2017, 11:09 am
por Scry
|
|