Situación extraña con RUN, bajo Windows 10...
Publicado por Santiago (42 intervenciones) el 03/06/2020 16:57:57
Hola, a todos...
Se me presenta la siguiente situación extraña. Tengo el archivo sesiones.bat, cuya única instrucción me permite ver las sesiones Windows en una máquina:
query session > sesiones.txt
Si ejecuto el archivo dando doble click sobre él, la salida es la esperada, cuya imagen adjunto.
Por supuesto, en mi máquina de desarrollo, con Windows 10 Pro, solo veo mi sesión, tal como se puede observar en la imagen. Lo interesante es que si ejecuto esa misma instrucción mediante el comando RUN, directamente o utilizando el archivo sesiones.bat, bien sea en la ventana Comandos de VFP9 o dentro del programa, el archivo de salida (es decir, sesiones.txt) es creado pero sin contenido, está vacío. Incluso, hice todas las pruebas corriendo tanto VFP9 como el programa en calidad de usuario administrador de Windows... Y nada...
Ayer probé la instrucción ejecutando el programa en una máquina con Windows Server y funciona perfectamente, lo cual haría pensar que, en Windows 10, el programa debe tener algún permiso especial para que la instrucción sea permitida.
Dato adicional: la variable COMSPEC está correcta (C:\WINDOWS\system32\cmd.exe); de lo contrario, ni siquiera vacío habría sido creado el archivo de salida.
Pregunto: ¿Alguien sabe qué condición adicional se requiere DENTRO del programa, para que funcione la instrucción "query" en Windows 10?
Olvidaba mencionar que también hice la prueba sustituyendo el comando RUN por el comando Shellexecute, por medio de la ventana de Comandos y dentro del programa:
----------
DECLARE INTEGER ShellExecute IN shell32.dll INTEGER hndWin, STRING cAction, STRING cFileName, STRING cParams, STRING cDir, INTEGER nShowWin
= ShellExecute(0,"Runas","sesiones.bat","","",0)
----------
pero ocurre exactamente lo mismo: el archivo sesiones.txt es creado, pero vacío, bien sea usando el parámetro "Open" o bien el parámetro "Runas" (correr como administrador). Si en la ventana de Comandos muestro el resultado de Shellexecute (sustituyendo "=" por "?"), el resultado es 42, que indica que NO hubo problema al ejecutar sesiones.bat (menos de 32 indica algún fallo).
Esto recalca que el problema parece ser de permisos especiales del programa en Windows 10 (por fuera del programa, la instrucción "query" no tiene problema, como mostré en la imagen).
Muchas gracias por su paciencia en la lectura y quedo agradecido por cualquier ayuda para resolver ese misterio...
Se me presenta la siguiente situación extraña. Tengo el archivo sesiones.bat, cuya única instrucción me permite ver las sesiones Windows en una máquina:
query session > sesiones.txt
Si ejecuto el archivo dando doble click sobre él, la salida es la esperada, cuya imagen adjunto.
Por supuesto, en mi máquina de desarrollo, con Windows 10 Pro, solo veo mi sesión, tal como se puede observar en la imagen. Lo interesante es que si ejecuto esa misma instrucción mediante el comando RUN, directamente o utilizando el archivo sesiones.bat, bien sea en la ventana Comandos de VFP9 o dentro del programa, el archivo de salida (es decir, sesiones.txt) es creado pero sin contenido, está vacío. Incluso, hice todas las pruebas corriendo tanto VFP9 como el programa en calidad de usuario administrador de Windows... Y nada...
Ayer probé la instrucción ejecutando el programa en una máquina con Windows Server y funciona perfectamente, lo cual haría pensar que, en Windows 10, el programa debe tener algún permiso especial para que la instrucción sea permitida.
Dato adicional: la variable COMSPEC está correcta (C:\WINDOWS\system32\cmd.exe); de lo contrario, ni siquiera vacío habría sido creado el archivo de salida.
Pregunto: ¿Alguien sabe qué condición adicional se requiere DENTRO del programa, para que funcione la instrucción "query" en Windows 10?
Olvidaba mencionar que también hice la prueba sustituyendo el comando RUN por el comando Shellexecute, por medio de la ventana de Comandos y dentro del programa:
----------
DECLARE INTEGER ShellExecute IN shell32.dll INTEGER hndWin, STRING cAction, STRING cFileName, STRING cParams, STRING cDir, INTEGER nShowWin
= ShellExecute(0,"Runas","sesiones.bat","","",0)
----------
pero ocurre exactamente lo mismo: el archivo sesiones.txt es creado, pero vacío, bien sea usando el parámetro "Open" o bien el parámetro "Runas" (correr como administrador). Si en la ventana de Comandos muestro el resultado de Shellexecute (sustituyendo "=" por "?"), el resultado es 42, que indica que NO hubo problema al ejecutar sesiones.bat (menos de 32 indica algún fallo).
Esto recalca que el problema parece ser de permisos especiales del programa en Windows 10 (por fuera del programa, la instrucción "query" no tiene problema, como mostré en la imagen).
Muchas gracias por su paciencia en la lectura y quedo agradecido por cualquier ayuda para resolver ese misterio...
Valora esta pregunta
0