Modificar el valor de una variable de entorno

28/02/2005 - 15:38 por Ricardo | Informe spam
Hola, tengo una pequeña duda de como establecer el valor de una variable de
entorno que varia cada vez que se inicia la sesión. El problema es que tengo
un pequeño programita en C/C++ que genera un fichero bat con únicamente la
línea "SET IDSESSION=5" para después ejecutarlo antes de entrar en un
determinado programa. Necesito esta variable porque me almacena el ID de la
sesión Terminal Server abierta por el usuario en dicho equipo, este valor lo
lee una aplicación instalada en el equipo para su funcionamiento. El
problema es que por más que ejecuto el fichero bat, el valor de la variable
de entorno no se modifica, aún teniendo previamente definida en
Inicio->Panel de Control->Sistema->Opciones avanzadas->Variables de
entorno->Variables de usuario. He estado probando con el comando cmd.exe /C
/S "SET IDSESSION=5" y tampoco se actualiza el valor. ¿Alguna idea?.
Gracias.

Preguntas similare

Leer las respuestas

#11 Ricardo
03/03/2005 - 15:49 | Informe spam
Hola Claudia, acabo de leer tu respuesta. He estado probando el código que
comentas en tu mensaje, he visto que durante la ejecución del programa en C,
es cierto que la variable de entorno se modifica, pero que una vez que
termina el programa vuelve a recuperar el valor inicial, aún si haber
cerrado la consola de comandos que he usado para lanzar el programa en C. En
fin, tienes razón al decir que es más efectivo el hecho de usar un fichero
.bat por medio, para no tener que modificar las rutas del programa de
contabilidad continuamente en el programa escrito en C.
Te agradezco toda la ayuda prestada, un abrazo y espero no molestarte más.

"Sygrama Software" escribió en el mensaje
news:
Hola Ricardo:

El tema de las variables de entorno me trajo muchas horas de intentos
frustrados, hasta que me convencí de que no puedo cambiar el entorno de
afuera. El programa en C puede cambiar su propio entorno para los pasos que
siguen al cambio, pero al cerrar el programa, el entorno vuelve a su estado
inicial, el que tenía cuando llamaste al ejecutable.

Una solución compacta sería algo así:

main() {
long VariableParaIdSession;
string StringEntorno[100];
string ProgramaContabilidad[100];

VariableParaIdSession = FuncionQueBuscaIdSession(); //esta ya la tenés
programada

strcpy( ProgramaContabilidad, "H:\\Archivos de
Programa\\xxx\\programa.exe " );
//las barras invertidas tienen que ir dobles, si no,
desaparecen en el string destino

sprintf( StringEntorno, "IDSESSION=%ld", VariableParaIdSession );

putenv( StringEntorno ); // esta cambia el entorno para lo que viene
después,
// pero siempre dentro del
programa.

system( ProgramaContabilidad );

}

Así, tendrías que hacer un acceso directo al ejecutable que surja de esto.
Claro que si cambia la ubicación o los parámetros del programa de
contabilidad, tendrás que modificar el programita lanzador. ¿No sigue siendo
más simple el batch, que ya funciona?
Me alegro que se esté desenredando el problema.

Nota:
"Panel de Control"->"Sistema"->"Opciones avanzadas"->"Variables de
entorno"->"Variables de usuario"
es lo mismo que entrando desde MiPC.

Saludos
Claudia Podestá
Rosario - Argentina
Capital de la Lengua Española
Respuesta Responder a este mensaje
#12 Sygrama Software
03/03/2005 - 16:31 | Informe spam
Hola Ricardo:

Me alegro que haya dado resultado, y desde luego no fue ninguna molestia.
Saludos, y hasta la próxima.

Claudia Podestá
Rosario - Argentina
Capital de la Lengua Española
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida