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

#6 Ricardo
01/03/2005 - 23:38 | Informe spam
Hola Claudia, gracias por tu respuesta. He estado probando el ejemplo que me
has planteado, es similar a mi problema. Me he dado cuenta que cuando abro
una consola y ejecuto el fichero bat "llamador", el valor de VARIABLEMIA se
modifica por 15, pero si se cierra esta ventana, el valor de VARIABLEMIA
vuelve a tomar el valor 5. Me interesaría que el valor de VARIABLEMIA
permaneciese durante toda la sesión.
Saludos.

"Sygrama Software" escribió en el mensaje
news:
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
#7 Ricardo
01/03/2005 - 23:40 | Informe spam
Gracias por responder a mi problema. Si hago eso que me comentas y cierro
luego esa ventana de comandos, la variable pepito desaparece. Me interesa
que esa variable permanezca durante toda la sesión del usuario. Saludos.

"Alex GD" escribió en el mensaje
news:
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
#8 Sygrama Software
02/03/2005 - 01:07 | Informe spam
Hola Ricardo:

Justamente, ése es el problema "que no era tu problema". No sé cómo afectar el entorno de afuera, el entorno "padre". Solamente sé cómo afectar el entorno del programa "hijo". ¿no podés llamar desde línea de comandos al programa de contabilidad?
algo así como:

"h:\Archivos de Programa\contaxxx\binarios\ejecutable del programa" y todos sus parámetros, si los tiene?

De esta manera, podrías hacer un "llamador.bat" reemplazando el detpro.exe por toda esa línea fea.

Saludos
Claudia Podestá
Rosario - Argentina
Capital de la Lengua Española

"Ricardo" escribió en el mensaje news:eBomg%
Hola Claudia, gracias por tu respuesta. He estado probando el ejemplo que me
has planteado, es similar a mi problema. Me he dado cuenta que cuando abro
una consola y ejecuto el fichero bat "llamador", el valor de VARIABLEMIA se
modifica por 15, pero si se cierra esta ventana, el valor de VARIABLEMIA
vuelve a tomar el valor 5. Me interesaría que el valor de VARIABLEMIA
permaneciese durante toda la sesión.
Saludos.

Respuesta Responder a este mensaje
#9 Ricardo
02/03/2005 - 15:47 | Informe spam
Hola Claudia, no entendí la respuesta de tu primer post, pero ahora que le
estoy echando un vistazo y tienes razón. Me he dado cuenta de que el valor
de la variable de entorno desaparece una vez que cierro la consola de
comandos por las últimas pruebas que he hecho. Mi problema está resuelto con
modificar la variable de entorno y llamar al programa de contabilidad en la
misma consola de comandos, tal y como tú me expones en tu última respuesta.
Quería preguntarte, porque he notado que sabes de programación en C, que si
es posible poder cambiar el valor de una variable de entorno desde un
programa en C. He estado probando con el comando system("SET VARIABLE=5"),
pero al devolverme el programa al símbolo del sistema, hago un SET VARIABLE
y mi valor permanece igual. Por cierto, la variable de entorno VARIABLE, la
he creado en "Panel de Control"->"Sistema"->"Opciones avanzadas"->"Variables
de entorno"->"Variables de usuario", dándole un valor 0 de inicialización.
En un principio mi idea era sólo hacer una llamada al programa en C y,
posteriormente, llamar al programa de contabilidad, pero como vi que no me
funcionaba, probé al generar el .bat. Como ya se de donde viene el problema,
me gustaría saber si es posible resolver el problema con la solución que
tenía pensada al comienzo. Saludos.

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

Justamente, ése es el problema "que no era tu problema". No sé cómo afectar
el entorno de afuera, el entorno "padre". Solamente sé cómo afectar el
entorno del programa "hijo". ¿no podés llamar desde línea de comandos al
programa de contabilidad?
algo así como:

"h:\Archivos de Programa\contaxxx\binarios\ejecutable del programa" y todos
sus parámetros, si los tiene?

De esta manera, podrías hacer un "llamador.bat" reemplazando el detpro.exe
por toda esa línea fea.

Saludos
Claudia Podestá
Rosario - Argentina
Capital de la Lengua Española

"Ricardo" escribió en el mensaje
news:eBomg%
Hola Claudia, gracias por tu respuesta. He estado probando el ejemplo que
me
has planteado, es similar a mi problema. Me he dado cuenta que cuando abro
una consola y ejecuto el fichero bat "llamador", el valor de VARIABLEMIA
se
modifica por 15, pero si se cierra esta ventana, el valor de VARIABLEMIA
vuelve a tomar el valor 5. Me interesaría que el valor de VARIABLEMIA
permaneciese durante toda la sesión.
Saludos.

Respuesta Responder a este mensaje
#10 Sygrama Software
02/03/2005 - 22:20 | Informe spam
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
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida