Quiero negar algunas de las aplicaciones en mi computadora para acceder a ciertas unidades o volúmenes lógicos, pero hasta ahora no pude encontrar una solución.
Antecedentes: mi PC tiene un SSD como unidad de sistema y un Raid-6 de 15 TB con cinco discos duros. El controlador está configurado para girar las unidades después de ~ 10-15 minutos. Esto está bien ya que a veces no necesito acceder a nada en el Raid durante un par de horas o incluso más. Algunas aplicaciones como Adobe Reader acceden a todos los volúmenes lógicos cuando se inician por alguna razón que no puedo comprender. Mi suposición es que todos los volúmenes con una letra de unidad asignada se ven afectados. Eliminar las letras y reasignarlas no es una opción en absoluto;)
¿Cómo puedo restringir el acceso de Adobe Reader u otras aplicaciones a estos volúmenes de mis hosts Raid?
Respuestas:
En Windows, no hay una forma nativa compatible para bloquear el acceso de ciertos procesos a ciertas unidades, lo que va "en contra de la naturaleza actual" de cómo el sistema operativo maneja el acceso a las unidades.
El derecho de acceso está determinado por los derechos del usuario conectado que inicia la aplicación. Entonces, si el desarrollador de software decidió que su software debería buscar en todas las unidades accesibles y no le da la opción de desactivarlo ... bueno, esa es una mala programación que no considera su caso de uso particular. Pero hay algunas soluciones alternativas.
La única solución "segura" es 2, ya que la capa de virtualización de hardware (desde la máquina virtual) puede bloquear cualquier aplicación para intentar acceder por completo al "hardware real". Aunque no he tenido el caso en que la solución 1 no funciona, pero en teoría creo que podría pasarse por alto.
Opción "1" - Deshabilitar las unidades en un "nivel bajo" - No se necesita software adicional
Opcion 1a
Es posible deshabilitar los volúmenes en una capa inferior deshabilitando las unidades por completo, pero esto deshabilitará todos los volúmenes en la unidad. Manualmente, puede hacerlo iniciando
diskmgmt.msc
, luego haga clic derecho en la unidad y márquela "fuera de línea".Si es necesario, también debería poder hacerlo utilizando un script de línea de comando. Se aplicaría de manera similar a la Opción 3a / b. Puede hacerlo, por ejemplo, mediante cmd como se describe aquí o mediante PowerShell, como se describe aquí .
Opcion 1b
Puede desactivar el controlador de la unidad por completo. Para hacerlo manualmente: comienza
diskmgmt.msc
, luego haz clic derecho, elige "opciones". Luego vaya a la pestaña "Controlador" y seleccione "Desactivar". La unidad "desaparecerá" en el administrador de discos y ya no será accesible a través del sistema operativo. A menos que el software no ejecute comandos de código de máquina para comunicarse directamente con el hardware, la aplicación no debe tener acceso a las unidades. Al menos en lo que respecta a mi conocimiento de los entresijos de los sistemas operativos.Si es necesario, también debería poder hacerlo utilizando un script de línea de comando. Se aplicaría de manera similar a la Opción 3a / b usando, por ejemplo
Devcon.exe
,. Puede encontrar una descripción detallada aquí .Opción 2: uso de un entorno virtual (principalmente con software de terceros)
Si ejecutar la aplicación dentro de un entorno virtual es una opción, existen muchas soluciones:
dependiendo de su versión de Windows (se requiere Win7 y superior) y su licencia (no se requiere "Profesional", "Inicio"), puede usar Hyper-V para configurar un entorno virtual sin ningún software de terceros.
puede usar un software de terceros para configurar un sistema virtual como VMplayer, Virtual Box, etc. Existen muchas alternativas de software gratuito y de pago. Al usar esta solución, necesitará una segunda licencia para Windows (o la dejará sin licencia, pero luego obtendrá una superposición en la esquina inferior derecha de la pantalla que le indicará que registre Windows). Esto definitivamente evitará que el software acceda a la unidad.
podría usar una aplicación "sandbox". Pero dependerá del nivel de virualización que ofrece la aplicación sandbox. En algunos casos, puede resolver el problema; en otros casos, no lo hace. Sandboxie, por ejemplo (el que describe harrymc en su respuesta ), no resuelve el problema con la configuración que describe harrymc en su respuesta (original). Aunque el software puede bloquear el acceso, la unidad seguirá funcionando. Una alternativa sería usar una aplicación de sandbox diferente como Cameyo, etc.
Por cierto, aquí hay un buen artículo sobre la diferencia principal entre los diferentes software de virtualización, especialmente la diferencia entre una máquina virtual "completa" (como Virtual Box) o aplicaciones "semi virtuales" (como Sandboxie).
Opción 3: desmontar solo volúmenes (dejando la unidad "intacta"): no se necesita software adicional, PERO puede que no funcione en su caso
Opción 3a
En lugar de iniciar la aplicación a través de su acceso directo normal, puede escribir un archivo por lotes utilizando el comando
mountvol
que primero desmonta el volumen no utilizado, luego inicia la aplicación y luego vuelve a montar el volumen una vez que la aplicación ya no accede a la unidad. El proceso de montaje / desmontaje a través de la línea de comandos se describe aquí y aquí . También puede usardiskpart
como se describe aquí y aquí .Opción 3b
Alternativamente, puede dejar la unidad desmontada en general y montarla a través de un archivo por lotes que monta la unidad que inicia manualmente cuando sea necesario. Una vez que haya terminado de usarlo, puede desmontarlo manualmente usando un segundo archivo por lotes. Puede automatizar eso al monitorear las solicitudes de acceso al sistema de archivos y montar / desmontar la unidad según sea necesario siguiendo ciertas reglas, por ejemplo, que ciertas aplicaciones no tendrán acceso. Pero no estoy seguro de que la automatización valga la pena el esfuerzo adicional que implica.
Opción 4: restringir el acceso a una letra de unidad (volumen). Simple de hacer, pero se necesitan dos pequeñas herramientas de Microsoft, PERO puede que no funcione en su caso
Si desea hacerlo sin software de terceros pero no le importa usar dos pequeñas herramientas de Microsoft (si aún no lo usa). Prefiero esta solución porque consigue el problema "por la raíz" (diferenciación entre los derechos del usuario y de la aplicación) y es bastante simple y no se necesita ningún software de terceros "grande".
Básicamente, agrega un usuario sin acceso a la unidad y luego inicia el programa con esos derechos limitados (seguirá iniciando sesión como usuario habitual, no utilizará la cuenta restringida para iniciar sesión).
Agregar una cuenta de usuario.
Restrinja el acceso de la nueva cuenta de usuario a la unidad mediante el Control de acceso de Windows para el sistema de archivos. Aquí hay un buen tutorial que incluye capturas de pantalla.
Luego, inicie el software con esos derechos. Puede, por ejemplo, usar PsExec.exe para hacer eso o Process Explorer, así es como . Tendrá que descargar uno de esos dos desde el sitio web de Microsoft, si aún no los tiene.
fuente
Propongo una solución que usa Sandboxie . No tengo su entorno, así que probé la ejecución
Acrobat.exe
en un entorno limitado dondeD:
estaba bloqueado su acceso . Al abrir en Acrobat el menú Archivo> Abrir , obtengo esto:Tenga en cuenta que Acrobat ni siquiera puede encontrar la etiqueta del disco
D:
, por lo que se ve obligado a mostrarla de manera poco convincente y a cómo se bloquea cuando hago clic en "Disco local (D :)".Los pasos que utilicé fueron:
C:\Program Files (x86)\Adobe\Acrobat DC\Acrobat\Acrobat.exe
)D:
C:\Program Files (x86)\Adobe\Acrobat DC\Acrobat
)De ahora en adelante, todos los programas que se inician desde la carpeta Acrobat están obligados a ejecutar sandboxed, y específicamente
Acrobat.exe
se bloquea el acceso al discoD:
. Es posible que deba abrir otras restricciones de sandbox si Acrobat tendrá algunas dificultades para ejecutarse dentro del sandbox.No sé si esto también bloqueará la llamada específica de la API de Windows que Acrobat usa para provocar la activación del disco, pero podría valer la pena intentarlo.
Sandboxie es un producto excelente y versátil que recomiendo, gratis para un sandbox predeterminado. Para múltiples sandboxes es payware, pero el precio de la licencia de por vida es muy razonable (pagué). Por ejemplo, instalo productos que pruebo en un sandbox y luego puedo eliminarlos con un solo clic, y no necesito un desinstalador.
Otra solución de aislamiento es mediante el uso de Adobe Reader dentro de un contenedor Docker . Los contenedores Docker son pequeños y funcionan como máquinas virtuales, pero sin necesidad de crear la máquina, ya que los contenedores ya preparados se descargan de la galería Docker.
Puede usar Chocolatey como administrador de paquetes.
Chocolatey tiene muchos paquetes preconstruidos disponibles con Adobe Reader en Adobe Acrobat Reader DC 2018.011.20063 .
Con Docker, es posible un aislamiento absoluto con respecto a los recursos, y por otro lado, uno puede compartir recursos como carpetas de una manera completamente nativa.
fuente