Negar acesso ao aplicativo para disco rígido ou volume no Windows 7 ou superior


12

Quero negar que alguns aplicativos do meu computador acessem determinadas unidades ou volumes lógicos, mas não consegui encontrar uma solução até agora.

Antecedentes: Meu PC possui um SSD como unidade do sistema e um 15TB Raid-6 com cinco discos rígidos. O controlador está configurado para desligar as unidades após ~ 10 a 15 minutos. Isso é bom, já que às vezes não preciso acessar nada no Raid por algumas horas ou mais. Alguns aplicativos, como o Adobe Reader, acessam todos os volumes lógicos ao iniciar, por algum motivo que não consigo compreender. Minha suposição é que todos os volumes com uma letra de unidade atribuída são afetados. Remover as letras e atribuí-las novamente não é uma opção;)

Como posso impedir que o Adobe Reader ou outros aplicativos acessem esses volumes que meus hosts Raid?


Não sei como desativar o acesso a determinados aplicativos. Mas suspeito que, se houver uma ferramenta para negar o acesso ao SSD para algum aplicativo, você perderá a capacidade de abrir arquivos desses volumes. Portanto, nesse caso, é melhor tentar descobrir qual função faz com que o Adobe Reader leia / grave algo de / para SSD. Veja o recurso "arquivos recentes". Talvez verifique a disponibilidade deles sempre.
VIK

Eu quero restringir o acesso ao RAID, não ao SSD. De fato, não há nada no volume do Raid que seja útil para o Adobe Reader no meu computador. Portanto, sim, no meu caso, quero explicitamente perder a capacidade de acessar qualquer coisa do Adobe Reader que não esteja no SSD. Você pode estar correto sobre a característica "arquivos recentes" (embora neste caso não exista nenhum arquivo recente desses volumes).
user654123

1
Que tal uma solução radical, como usar outro visualizador de PDF? Isso não resolve problemas com outros aplicativos, mas, pelo que entendi, o Adobe Reader é a coisa mais irritante para você. pt.wikipedia.org/wiki/List_of_PDF_software
VIK

Sim, é o aplicativo mais irritante :) Eu esperava que houvesse uma solução interna para esse problema, já que negar o acesso à Internet pelo firewall do Windows funciona bem para outros programas.
user654123

1
Você já pensou em executar o Reader como um usuário separado que não tem acesso a esses volumes?
TWIStErRob

Respostas:


6

No Windows, não existe uma maneira nativa suportada de impedir que certos processos acessem determinadas unidades, o que é "contrário à natureza atual" de como o sistema operacional lida com o acesso à unidade.

O direito de acesso é determinado pelos direitos do usuário conectado que inicia o aplicativo. Portanto, se o desenvolvedor de software decidiu que seu software deveria procurar todas as unidades acessíveis e não lhe dá a opção de desativá-lo ... bem, isso é uma programação ruim que não considera seu caso de uso específico. Mas existem algumas soluções alternativas.

A única solução "certa" é 2, pois a camada de virtualização de hardware (da máquina virtual) pode bloquear qualquer aplicativo para tentar acessar completamente o "hardware real". Embora eu não tenha tido o caso em que a solução 1 não funciona, mas teoricamente acho que poderia ser contornada.

Opção "1" - Desativando as unidades em um "nível baixo" - Nenhum software adicional é necessário

Opção 1a

É possível desativar os volumes em uma camada inferior, desativando completamente as unidades, mas isso desativará todos os volumes na unidade. Manualmente, você pode fazer isso iniciando diskmgmt.msc, clique com o botão direito do mouse na unidade e marque-a como "offline".

insira a descrição da imagem aqui

Se necessário, você também poderá fazer isso usando um script de linha de comando. Seria aplicado de maneira semelhante à opção 3a / b. Você pode fazer isso, por exemplo, via cmd, conforme descrito aqui ou via PowerShell, conforme descrito aqui .

Opção 1b

Você pode desativar completamente o driver da unidade. Para fazer manualmente: inicie diskmgmt.msce clique com o botão direito do mouse, escolha "opções". Em seguida, vá para a guia "Driver" e selecione "Desativar". A unidade "desaparecerá" no gerenciador de disco e não estará mais acessível através do sistema operacional. A menos que o software não execute comandos de código de máquina para se comunicar diretamente com o hardware, o aplicativo não deve ter como acessar as unidades. Pelo menos no que diz respeito ao meu conhecimento dos meandros dos sistemas operacionais.

insira a descrição da imagem aqui

Se necessário, você também poderá fazer isso usando um script de linha de comando. Seria aplicado de maneira semelhante à Opção 3a / b usando, por exemplo Devcon.exe,. Você pode encontrar uma descrição detalhada aqui .

Opção 2 - Usando um ambiente virtual (principalmente com software de terceiros)

Se a execução do aplicativo em um ambiente virtual é uma opção, existem várias soluções disponíveis:

  • dependendo da versão do Windows (é necessário o Win7 e posterior) e a licença (o "Professional" necessário, o "Home" não funciona)), basta usar o Hyper-V para configurar um ambiente virtual sem nenhum software de terceiros.

  • você pode usar um software de terceiros para configurar um sistema virtual como VMplayer, Virtual Box, etc. Existem muitas alternativas de freeware e payware. Ao usar esta solução, você precisará de uma segunda licença para Windows (ou a deixará sem licença, mas receberá uma sobreposição no canto inferior direito da tela que solicitará que você registre o Windows). Isso definitivamente impedirá que o software acesse a unidade.

  • você pode usar um aplicativo "sandbox". Mas isso dependerá do nível de virualização que o aplicativo sandbox oferece. Em alguns casos, pode resolver o problema; em outros casos, não. O Sandboxie, por exemplo (o que harrymc descreve em sua resposta ), não resolve o problema com a configuração harrymc descrita em sua resposta (original). Embora o software possa bloquear o acesso, a unidade ainda funcionará. Uma alternativa seria usar um aplicativo de sandbox diferente, como Cameyo, etc.

A propósito, aqui está um bom artigo sobre a principal diferença entre os diferentes softwares de virtualização, especialmente a diferença entre uma máquina virtual "inteira" (como o Virtual Box) ou aplicativos "semi-virtuais" (como o Sandboxie).

Opção 3 - Desmontar apenas volumes (deixando a unidade "intacta") - Nenhum software adicional é necessário, mas pode não funcionar no seu caso

Opção 3a

Em vez de iniciar o aplicativo por meio de seu atalho regular, você pode gravar um arquivo em lotes usando o comando mountvolque primeiro desmonta o volume não utilizado, inicia o aplicativo e remonta o volume quando o aplicativo não acessa mais a unidade. O processo de montagem / desmontagem via linha de comando é descrito aqui e aqui . Você também pode usar diskpartcomo descrito aqui e aqui .

Opção 3b

Como alternativa, você pode simplesmente deixar a unidade desmontada e montá-la através de um arquivo em lotes que monta a unidade, que você inicia manualmente quando necessário. Depois de terminar de usá-lo, você pode desmontá-lo manualmente usando um segundo arquivo em lotes. Você pode automatizar isso monitorando as solicitações de acesso ao sistema de arquivos e montar / desmontar a unidade conforme necessário, seguindo determinadas regras, por exemplo, que certos aplicativos não terão acesso. Mas não tenho certeza se a automação vale o esforço extra envolvido.

Opção 4 - Restringindo o acesso a uma letra de unidade (volume). Simples de fazer, mas são necessárias duas pequenas ferramentas da Microsoft - mas pode não funcionar no seu caso

Se você quiser fazê-lo sem software de terceiros, mas não se preocupe em usar duas pequenas ferramentas da Microsoft (se ainda não o usar). Prefiro esta solução porque ela obtém o problema "pela raiz" (diferenciação entre os direitos do usuário e do aplicativo) e é bastante simples e não é necessário nenhum software "grande" de terceiros.

Basicamente, você adiciona um usuário sem acesso à unidade e inicia o programa com esses direitos limitados (você ainda efetuará logon como usuário comum, não usará a conta restrita para efetuar logon).

  • Adicione uma conta de usuário.

  • Restrinja o acesso da nova conta de usuário à unidade usando o Controle de Acesso do Windows para o sistema de arquivos. Aqui está um bom tutorial, incluindo capturas de tela.

  • Em seguida, inicie o software com esses direitos. Você pode, por exemplo, usar PsExec.exe para fazer isso ou o Process Explorer, eis como . Um desses dois você precisará fazer o download no site da Microsoft, se ainda não o tiver.


4

Proponho uma solução que usa o Sandboxie . Eu não tenho o seu ambiente, então testei a execução Acrobat.exeem uma sandbox onde seu acesso D:foi bloqueado. Ao abrir no Acrobat o menu Arquivo> Abrir , recebo o seguinte:

imagem

Observe que o Acrobat não consegue nem encontrar o rótulo do disco D:; portanto, é forçado a exibi-lo de maneira esfarrapada e como ele é bloqueado quando clico em "Disco local (D :)".

As etapas que eu usei foram:

  • Sandboxie instalado
  • No Sandboxie Control, clique com o botão direito do mouse na sandbox padrão e escolha Sandbox Settings
  • Abra a ramificação de Acesso a recursos> Acesso a arquivos e clique em Acesso bloqueado
  • Clique em Adicionar programa e adicione o Acrobat (o meu era C:\Program Files (x86)\Adobe\Acrobat DC\Acrobat\Acrobat.exe)
  • Clique em Adicionar e adicionar discoD:
  • Clique em OK
  • No Sandboxie Control, abra a ramificação de Programa Iniciar> Pastas Forçadas
  • Clique em Adicionar pasta
  • Adicione a pasta onde reside o Acrobat (o meu era C:\Program Files (x86)\Adobe\Acrobat DC\Acrobat)
  • Clique OK

A partir de agora, todos os programas iniciados na pasta Acrobat são forçados a executar na área restrita e, especificamente, Acrobat.exe são impedidos de acessar o disco D:. Pode ser necessário abrir outras restrições da caixa de areia se o Acrobat tiver dificuldades em executar dentro da caixa de areia.

Não sei se isso também bloqueará a chamada específica da API do Windows que o Acrobat usa para causar a ativação do disco, mas pode valer a pena tentar.

Sandboxie é um produto excelente e versátil que eu recomendo, grátis para uma sandbox padrão. Para várias caixas de areia, é payware, mas o preço da licença vitalícia é muito razoável (eu paguei). Por exemplo, instalo produtos que testo em uma sandbox e, em seguida, posso limpá-los com um clique, sem a necessidade de um desinstalador.


Outra solução de isolamento é usar o Adobe Reader dentro de um contêiner do Docker . Os contêineres do Docker são pequenos e funcionam como máquinas virtuais, mas sem a necessidade de criar a máquina, pois os contêineres prontos são baixados da galeria do Docker.

Você pode usar o Chocolatey como gerenciador de pacotes.

O Chocolatey tem muitos pacotes pré-criados disponíveis com o Adobe Reader no Adobe Acrobat Reader DC 2018.011.20063 .

Com o Docker, é possível um isolamento absoluto em relação aos recursos e, por outro lado, é possível compartilhar recursos, como pastas, de uma maneira completamente nativa.


2
@WackGet: Algum comentário?
harrymc

Ele diz que não funciona, a unidade ainda gira, pelo menos em seu caso de uso. Eu estou pensando, o Sandboxie oferece a opção de ocultar recursos na camada de hardware? Ainda não o instalei.
Albin

@WackGet: Sandboxie tem mais configurações disponíveis em seus arquivos de configuração. Mas primeiro: os discos são ativados no momento em que a Adobe é iniciada, ou apenas ao usar o menu Arquivo> Abrir ?
harrymc 27/09/18

Além da pergunta acima, adicionei outra opção de isolamento leve, usando o Docker. Os contêineres do Docker são pequenos e funcionam como máquinas virtuais, mas sem a necessidade de criá-los, pois os contêineres são prontos e são baixados da galeria do Docker.
harrymc 27/09/18

Escolha interessante. A qual aplicativo Docker você está se referindo, pois é uma solução de desenvolvedor / empresa. Infelizmente, os produtos docker que eu olhei não são de uso gratuito (apenas trialware possível) ... mas talvez eu tenha esquecido o s.th.
Albin
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.