In Windows, non esiste un modo supportato nativo per bloccare l'accesso a determinate unità a determinati processi, il che va "contro la natura attuale" del modo in cui il sistema operativo gestisce l'accesso alle unità.
Il diritto di accesso è determinato dai diritti dell'utente connesso che avvia l'applicazione. Quindi, se lo sviluppatore del software ha deciso che il suo software dovrebbe cercare tutte le unità accessibili e non ti dà la possibilità di disattivarlo ... beh, questa è una cattiva programmazione che non considera il tuo caso d'uso particolare. Ma ci sono alcune soluzioni alternative.
L'unica soluzione "sicura" è 2, poiché il livello di virtualizzazione hardware (dalla macchina virtuale) può bloccare qualsiasi applicazione per tentare di accedere completamente al "hardware reale". Anche se non ho avuto il caso in cui la soluzione 1 non funziona, ma teoricamente penso che potrebbe essere aggirata.
Opzione "1" - Disabilitazione delle unità a "livello basso" - Nessun software aggiuntivo necessario
Opzione 1a
È possibile disabilitare i volumi su un livello inferiore disabilitando del tutto le unità, ma ciò disabiliterà tutti i volumi sull'unità. Manualmente, puoi farlo avviando diskmgmt.msc
, quindi fai clic con il pulsante destro del mouse sull'unità e contrassegnalo come "offline".
Se necessario, dovresti essere in grado di farlo anche usando uno script da riga di comando. Sarebbe applicato in modo simile all'opzione 3a / b. Puoi farlo, ad esempio, tramite cmd come descritto qui o tramite PowerShell, come descritto qui .
Opzione 1b
È possibile disattivare del tutto il driver dell'unità. Per eseguire manualmente: avviare diskmgmt.msc
, quindi fare clic con il tasto destro, selezionare "opzioni". Quindi vai alla scheda "Driver" e seleziona "Disattiva". L'unità "scomparirà" nel gestore disco e non sarà più accessibile tramite il sistema operativo. A meno che il software non esegua i comandi del codice macchina per comunicare direttamente con l'hardware, l'applicazione non dovrebbe avere accesso alle unità. Almeno per quanto riguarda la mia conoscenza dei dettagli per i sistemi operativi.
Se necessario, dovresti essere in grado di farlo anche usando uno script da riga di comando. Sarebbe applicato in modo simile all'opzione 3a / b usando, ad esempio Devcon.exe
,. Puoi trovare una descrizione dettagliata qui .
Opzione 2: utilizzo di un ambiente virtuale (principalmente con software di terze parti)
Se l'esecuzione dell'applicazione in un ambiente virtuale è un'opzione, ci sono molte soluzioni disponibili:
a seconda della versione di Windows (Win7 e versioni successive) e della licenza ("Professional" richiesto, "Home" non funziona), è possibile utilizzare Hyper-V per configurare un ambiente virtuale senza software di terze parti.
puoi usare un software di terze parti per configurare un sistema virtuale come VMplayer, Virtual Box, ecc. Esistono molte alternative freeware e payware. Usando questa soluzione, avrai bisogno di una seconda licenza per Windows (o la lasci senza licenza, ma poi otterrai un overlay nell'angolo in basso a destra dello schermo che ti dirà di registrare Windows). Ciò impedirà sicuramente al software di accedere all'unità.
potresti usare un'applicazione "sandbox". Ma dipenderà dal livello di virualizzazione offerto dall'applicazione sandbox. In alcuni casi, può risolvere il problema; in altri casi no. Sandboxie, ad esempio (quello descritto da harrymc nella sua risposta ), non risolve il problema con la configurazione di harrymc descritta nella sua (originale) risposta. Sebbene il software possa bloccare l'accesso, l'unità continuerà a spostarsi verso l'alto. Un'alternativa sarebbe quella di utilizzare un'applicazione sandbox diversa come Cameyo, ecc.
A proposito, ecco un buon articolo per la principale differenza tra i diversi software di virtualizzazione, in particolare la differenza tra una macchina virtuale "intera" (come Virtual Box) o applicazioni "semi virtuali" (come Sandboxie).
Opzione 3 - Smontare solo i volumi (lasciando l'unità "intatta") - Nessun software aggiuntivo necessario, MA potrebbe non funzionare nel tuo caso
Opzione 3a
Invece di avviare l'applicazione tramite il suo collegamento regolare, è possibile scrivere un file batch utilizzando il comando mountvol
che prima smonta il volume inutilizzato, quindi avvia l'applicazione e quindi rimonta il volume quando l'applicazione non accede più all'unità. Il processo di montaggio / smontaggio tramite riga di comando è descritto qui e qui . Puoi anche usare diskpart
come descritto qui e qui .
Opzione 3b
In alternativa, è possibile lasciare l'unità smontata in generale e montarla tramite un file batch che monta l'unità che si avvia manualmente quando necessario. Dopo aver finito di usarlo, è possibile smontarlo manualmente utilizzando un secondo file batch. È possibile automatizzarlo monitorando le richieste di accesso al file system e montando / smontando l'unità come richiesto secondo determinate regole, ad esempio alcune applicazioni non avranno accesso. Ma non sono sicuro che l'automazione valga lo sforzo extra che comporta.
Opzione 4: limitazione dell'accesso a una lettera di unità (volume). Semplice da fare, ma necessari due piccoli strumenti di Microsoft: MA potrebbe non funzionare nel tuo caso
Se vuoi farlo senza software di terze parti ma non ti dispiace usare due piccoli strumenti di Microsoft (se non lo usi già). Preferisco questa soluzione perché ottiene il problema "dalla radice" (differenziazione tra i diritti dell'utente e dell'applicazione) ed è abbastanza semplice e non è necessario alcun "grande" software di terze parti.
Fondamentalmente, aggiungi un utente senza accesso all'unità e quindi avvii il programma con quei diritti limitati (accederai comunque come utente normale, non utilizzerai l'account limitato per accedere).
Aggiungi un account utente.
Limitare l'accesso del nuovo account utente all'unità utilizzando il controllo di accesso di Windows per il file system. Ecco un buon How-To che include schermate.
Quindi, avviare il software con tali diritti. Ad esempio, è possibile utilizzare PsExec.exe per farlo o Process Explorer, ecco come . Uno di questi due dovrai scaricare dal sito Web Microsoft, se non li hai già.