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

#1 Alex GD
28/02/2005 - 22:07 | Informe spam
Set variable=X

Saludos
Regards
Alex
Respuesta Responder a este mensaje
#2 Sygrama Software
28/02/2005 - 22:20 | Informe spam
Hola Ricardo:

No entiendo bien la secuencia que estás siguiendo.
1 . Llamás al programa en C/C++ que averigua si ese 5 es un 5 u otro número en este momento ¿no?
2 . El programa arma un .bat con el set idsession=Numero que recién determinó ¿no? ¿Lo ejecutás en forma separada?
3 . Ejecutás un "determinado programa" que es el que hace uso de la variable.

Todo eso ¿lo hacés en un solo batch? Por ejemplo:
@echo ff
programitaC
call batch_generado_por_programitaC
determinado_programa

Esto tendría que funcionar. La ejecución aislada del "batch_generado_por_programitaC modifica el entorno en que él mismo corre. Pero al volver a Windows, la variable volvió a su valor original. Si el "determinado_programa" se lo llama luego, con un doble click, por ejemplo, SU entorno vuelve a ser el entorno standard.
No conozco la forma de cambiar desde una sesión con cmd, el entorno que recibirá _otro_ programa llamado desde otra sesión de cmd, o en forma directa desde el escritorio o desde Windows. Es decir, lo que uno hace en MiPc - Propiedades - Avanzadas - Variables de entorno, no sé hacerlo (al menos yo, obviamente), a través de un batch.
Espero haber servido para algo
Saludos
Claudia Podestá
Rosario - Argentina
Capital de la Lengua Española

"Ricardo" escribió en el mensaje news:
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.


Respuesta Responder a este mensaje
#3 Ricardo
28/02/2005 - 23:32 | Informe spam
Hola Claudia, saludos a todos los argentinos ;), gracias por responder. A
ver... te responderé primero a las tres preguntas ¿ok?, vamos allá:
1º.- El programa que hice en C/C++ averigua el valor del ID de usuario de la
sesión abierta en ese momento. Este programita se ejecuta en el equipo donde
quiero averiguar el ID de usuario.
2º.- Es el programa en C/C++ el que genera un fichero .bat con la línea "SET
IDSESSION=X", donde X es el valor que ha averiguado. También he probado a
meter la línea 'system("SET IDSESSION=X")' en el programa de C/C++, pero ya
lo probé antes y no me funcionó.
3º.- El "determinado programa" es una 2ª programa o aplicación de
contabilidad que para hacer uso de una impresora que está conectada en el
equipo, es necesario tener almacenado en una variable de entorno el ID del
usuario.

El batch que pones en tu respuesta es correcto, así es como lo haría, pero
mi problema es que no funciona. Para que puedas probarlo, haz lo siguiente:
1º.- Create un fichero, por ejemplo, llamado programa.bat con sólo la línea
'SET IDSESSION'
2º.- Create un fichero, por ejemplo, llamado inicio.bat con sólo la línea
'call programa.bat'

Verás que no funciona.
Con lo que pones en el resto del post, olvidate, sólo me interesa que se
pueda crear o actualizar una variable de entorno, el resto del problema no
es problema, jeje.

Un saludo.

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

No entiendo bien la secuencia que estás siguiendo.
1 . Llamás al programa en C/C++ que averigua si ese 5 es un 5 u otro número
en este momento ¿no?
2 . El programa arma un .bat con el set idsession=Numero que recién
determinó ¿no? ¿Lo ejecutás en forma separada?
3 . Ejecutás un "determinado programa" que es el que hace uso de la
variable.

Todo eso ¿lo hacés en un solo batch? Por ejemplo:
@echo ff
programitaC
call batch_generado_por_programitaC
determinado_programa

Esto tendría que funcionar. La ejecución aislada del
"batch_generado_por_programitaC modifica el entorno en que él mismo corre.
Pero al volver a Windows, la variable volvió a su valor original. Si el
"determinado_programa" se lo llama luego, con un doble click, por ejemplo,
SU entorno vuelve a ser el entorno standard.
No conozco la forma de cambiar desde una sesión con cmd, el entorno que
recibirá _otro_ programa llamado desde otra sesión de cmd, o en forma
directa desde el escritorio o desde Windows. Es decir, lo que uno hace en
MiPc - Propiedades - Avanzadas - Variables de entorno, no sé hacerlo (al
menos yo, obviamente), a través de un batch.
Espero haber servido para algo
Saludos
Claudia Podestá
Rosario - Argentina
Capital de la Lengua Española

"Ricardo" escribió en el mensaje
news:
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.


Respuesta Responder a este mensaje
#4 Alex GD
28/02/2005 - 23:42 | Informe spam
Pues vuelvo a decir... quieres asignar por ejemplo el valor 7 a la
variable pepito. Abres una ventana de comandos y escribes:

set pepito=7

después escribes
set
y te dará la salida de todas las variables de entorno, incluida pepito

Saludos
Regards
Alex
Respuesta Responder a este mensaje
#5 Sygrama Software
01/03/2005 - 15:47 | Informe spam
Hola Ricardo:

Sigo sin entender qué es lo que no te funciona. Preparo lo siguiente:

Defino en las propiedades de MiPC, la variable de usuario VARIABLEMIA con un valor inicial = 5.

Escribo un batch llamado CAMBIO.BAT
Contiene una línea SET VARIABLEMIA

Preparo un programita DETPRO.C que contiene únicamente un
printf( "Variable mia: =%s", getenv("VARIABLEMIA"));

Preparo un batch: LLAMADOR.BAT
set
pause
call cambio
set
pause
detpro

Inicio - Todos los programas - Accesorios - Símbolo del sistema
voy con CD hasta llegar al lugar donde está el programita
llamador
... el primer set dice VARIABLEMIA=5 (valor inicial) (OK)
... el segundo set dice VARIABLEMIA (después de cambio.bat)(OK)
... detpro dice Variable mia= 15 (OK)

¿no será que el programa al que estás llamado se sirve por sí mismo de algún otro lugar y carga solo la idsesion con otro valor, de un .ini, por ejemplo? ¿Tenés forma, dentro del programa de contabilidad, de averiguar con qué entorno está corriendo, o salir a un shell desde el programa, para ejecutar ahí un set?

Saludos
Claudia Podestá
Rosario - Argentina
Capital de la Lengua Española
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida