[Python-es] Problemas con entornos Windows de 32 bits y 64 bits y elevar un CMD con privilegios de Administrador.

Héctor J. Benítez Corredera facturasxebolax en gmail.com
Dom Mayo 9 14:55:53 EDT 2021


Buenas, no el problema es que los complementos escritos para NVDA al ser 
ejecutados con las librerías que trae NVDA que son de 32 bits si 
pretendo por ejemplo ejecutar el comando en un Windows de 64 Bits no me 
deja, en una maquina virtualizada con Windows de 32 bits no hay ningún 
problema.

Bien el complemento que estoy haciendo es un lanzador de aplicaciones y 
comandos para CMD y PowerShell por lo que me encuentro con la limitación 
que hay comandos que necesitan ser lanzados en la misma arquitectura que 
el sistema.

Por ejemplo si el comando sfc /scannow lo llamo desde el complemento 
subiéndole privilegios no funciona desde un Windows de 64 Bits si desde 
uno de 32 Bits.

El usuario será quien añada sus propios comandos yo estoy usando ese 
para pruebas.

Bien con la clase que pase que desactiva el redireccionamiento del 
sistema de archivos funciona perfectamente haciendo lo que toca. Solo e 
tenido que hacer que el complemento detecte en que arquitectura esta si 
NVDA esta en un entorno ejecutándose de 32 Bits simplemente lanza el 
comando normal si detecta que está en 64 Bits desactivo el 
redireccionamiento del sistema de archivos y entonces ya se ejecuta 
correctamente, modifique algo el ejemplo que compartí para activar el 
redireccionamiento por si algo falla cuando se ejecuta el comando que 
deseamos o se produce un error critico el cual no deja volver a 
activarlo, para que no sea la clase la que lo active si no yo al acabar 
el hilo en el que lance el comando.

Realmente NVDA no necesita tener instalado Python ya que maneja los 
complementos escritos en Python como hace Calibre por poner un ejemplo.

Yo si tengo Python 3.8 64 Bits instalado que es con el que suelo 
programar pero también tengo el de 32 Bits para hacer las pruebas antes 
de portar el código a complemento ya que hay que adaptarlos a librerías 
propias que trae NVDA.

No obstante muchísimas gracias por su tiempo y el molestarse en contestar.

Un cordial saludo.

El 09/05/2021 a las 20:20, Chema Cortes escribió:
> Buenas,
>
> A ver si lo entiendo: has instalado python 32 en un windows 64bits 
> para ejecutar NVDA, utilidad que usa librerías de 32 bits. No dices 
> qué versión de python, ni si tienes otras instalaciones de python (que 
> podrían ser de 64 bits).
>
> El fallo que comentas que te da python es cuando intentas ejecutar sfc 
> /scannow que, interpreto, no tiene relación alguna con NVDA. Por
>  lo que veo, es muy común que falle esta utilidad de escaneo de 
> archivos, por lo que no se puede achacar ni a python ni a que sea de 
> 32 bits.
>
> Te recomiendo que primero intentes hacer funcionar sfc sin usar 
> python. Revisa este artículo:
>
> https://mundowin.com/la-proteccion-de-recursos-de-windows-no-pudo-iniciar-el-servicio-de-reparacion/ 
> <https://mundowin.com/la-proteccion-de-recursos-de-windows-no-pudo-iniciar-el-servicio-de-reparacion/>
>
> También consulta esta referencia sobre cómo forzar el uso de python 
> 32bits o 64bits en windows:
>
> https://docs.python.org/3/whatsnew/3.7.html#windows-only-changes 
> <https://docs.python.org/3/whatsnew/3.7.html#windows-only-changes>
>
> Saludos.
>
>
> El vie, 7 may 2021 a las 22:22, Héctor J. Benítez Corredera 
> (<facturasxebolax en gmail.com <mailto:facturasxebolax en gmail.com>>) escribió:
>
>     Buenas, me contesto por si a alguien le puede servir.
>
>     Esto explica mejor que yo lo que quería hacer, realmente
>     desactivar el redireccionamiento del sistema de archivos.
>
>     Esta la fuente.
>
>     https://code.activestate.com/recipes/578035-disable-file-system-redirector/
>     <https://code.activestate.com/recipes/578035-disable-file-system-redirector/>
>
>     Muchas gracias.
>
>     El 07/05/2021 a las 2:07, Chema Cortes escribió:
>>
>>     El jue, 6 may 2021 a las 20:18, Héctor J. Benítez Corredera
>>     (<facturasxebolax en gmail.com <mailto:facturasxebolax en gmail.com>>)
>>     escribió:
>>
>>         winpath = os.path.join(os.environ['SystemRoot'], "SysNative",
>>         "cmd.exe") # Esta es la que debería funcionar en 32 bits
>>
>>         #winpath = os.path.join(os.environ['SystemRoot'], "system32",
>>         "cmd.exe") Esta es la que funciona en 64 bits pero no en 32 bits
>>
>>         #winpath = os.path.join(os.environ['SystemRoot'], "SysWOW64",
>>         "cmd.exe") No funciona
>>
>>         ejecutaAdmin(winpath, "/c" + "sfc /scannow" + "&pause")
>>
>>
>>
>>     Esta parte la ejecuta python, que es de 64 bits. No necesita
>>     emular nada, por lo que siempre accede a "system32".
>>
>>     Creo que estás confundido con el funcionamiento de las
>>     aplicaciones 32 bits en win 64 bits. Todas las aplicaciones están
>>     programadas para acceder a system32, sean de 32 ó 64 bits. Es el
>>     sistema operativo quien deriva luego las aplicaciones de 32 bits
>>     a sysWOW64 de forma transparente. SysNative sería un truco para
>>     que las aplicaciones de 32 bits accedan a las DLLs de 64 bits que
>>     de verdad se encuentran en system32. Ni python ni cmd.exe se
>>     ejecutan en modo 32 bits; es NVDA la que entra en modo emulación
>>     32 bits cuando es ejecutada por una CPU x64.
>>
>>     Dicho esto, no entiendo qué problema tienes para ejecutar NVDA. A
>>     todos los efectos, se debería comportar como una aplicación de 64
>>     bits normal
>>     ¿Da algún error o no funciona como se espera?
>>
>>
>>
>>     -- 
>>     Hyperreals *R  "Quarks, bits y otras criaturas infinitesimales":
>>     https://blog.ch3m4.org <https://blog.ch3m4.org>
>>     Buscador Python Hispano: http://busca.ch3m4.org
>>     <https://blog.ch3m4.org/pages/busqueda-python-es/>
>>
>>     _______________________________________________
>>     Python-es mailing list
>>     Python-es en python.org  <mailto:Python-es en python.org>
>>     https://mail.python.org/mailman/listinfo/python-es  <https://mail.python.org/mailman/listinfo/python-es>
>     _______________________________________________
>     Python-es mailing list
>     Python-es en python.org <mailto:Python-es en python.org>
>     https://mail.python.org/mailman/listinfo/python-es
>     <https://mail.python.org/mailman/listinfo/python-es>
>
>
>
> -- 
> Hyperreals *R  "Quarks, bits y otras criaturas infinitesimales": 
> https://blog.ch3m4.org <https://blog.ch3m4.org>
> Buscador Python Hispano: http://busca.ch3m4.org 
> <https://blog.ch3m4.org/pages/busqueda-python-es/>
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <https://mail.python.org/pipermail/python-es/attachments/20210509/73333f08/attachment.html>


Más información sobre la lista de distribución Python-es