Ich möchte einigen Anwendungen auf meinem Computer den Zugriff auf bestimmte Laufwerke oder logische Volumes verweigern, konnte jedoch bisher keine Lösung finden.
Hintergrund: Mein PC verfügt über eine SSD als Systemlaufwerk und ein 15 TB Raid-6 mit fünf Festplatten. Der Controller ist so konfiguriert, dass die Laufwerke nach ~ 10-15 Minuten heruntergefahren werden. Dies ist in Ordnung, da ich manchmal für ein paar Stunden oder länger auf nichts im Schlachtzug zugreifen muss. Einige Anwendungen wie Adobe Reader greifen beim Start aus irgendeinem Grund, den ich nicht verstehe, auf alle logischen Volumes zu. Ich gehe davon aus, dass alle Volumes mit einem zugewiesenen Laufwerksbuchstaben betroffen sind. Die Buchstaben zu entfernen und neu zuzuweisen ist überhaupt keine Option;)
Wie kann ich den Zugriff von Adobe Reader oder anderen Anwendungen auf diese Volumes auf meinen Raid-Hosts beschränken?
Antworten:
In Windows gibt es keine systemeigene unterstützte Methode, um den Zugriff bestimmter Prozesse auf bestimmte Laufwerke zu blockieren. Dies widerspricht der aktuellen Vorgehensweise des Betriebssystems beim Zugriff auf Laufwerke.
Das Zugriffsrecht richtet sich nach den Rechten des angemeldeten Benutzers, der die Anwendung startet. Wenn der Softwareentwickler also beschließt, dass seine Software alle zugänglichen Laufwerke durchsuchen soll und Ihnen nicht die Möglichkeit gibt, diese zu deaktivieren, ist dies eine schlechte Programmierung, die Ihren speziellen Anwendungsfall nicht berücksichtigt. Es gibt jedoch einige Problemumgehungen.
Die einzige "sichere" Lösung ist 2, da die Hardwarevirtualisierungsebene (von der virtuellen Maschine) alle Anwendungen blockieren kann, um zu versuchen, vollständig auf die "echte Hardware" zuzugreifen. Ich hatte zwar nicht den Fall, dass Lösung 1 nicht funktioniert, aber theoretisch denke ich, dass es umgangen werden könnte.
Option "1" - Deaktivieren der Laufwerke auf einer "niedrigen Ebene" - Keine zusätzliche Software erforderlich
Option 1a
Sie können die Volumes auf einer niedrigeren Ebene deaktivieren, indem Sie die Laufwerke insgesamt deaktivieren. Dadurch werden jedoch alle Volumes auf dem Laufwerk deaktiviert. Sie können dies manuell tun, indem Sie mit der
diskmgmt.msc
rechten Maustaste auf das Laufwerk klicken und es als "offline" markieren.Bei Bedarf sollte dies auch über ein Befehlszeilenskript möglich sein. Es würde auf ähnliche Weise angewendet wie Option 3a / b. Sie können das tun, beispielsweise über cmd , wie hier oder über Powershell, wie es beschrieben wird hier .
Option 1b
Sie können den Treiber des Laufwerks insgesamt deaktivieren. So machen Sie es manuell: Starten Sie
diskmgmt.msc
, klicken Sie mit der rechten Maustaste und wählen Sie "Optionen". Gehen Sie dann auf die Registerkarte "Treiber" und wählen Sie "Deaktivieren". Das Laufwerk "verschwindet" im Datenträgermanager und ist über das Betriebssystem nicht mehr zugänglich. Sofern die Software keine Maschinencodebefehle ausführt, um direkt mit der Hardware zu kommunizieren, sollte es für die Anwendung nicht möglich sein, auf die Laufwerke zuzugreifen. Zumindest soweit ich die Vor- und Nachteile von Betriebssystemen kenne.Bei Bedarf sollte dies auch über ein Befehlszeilenskript möglich sein. Es würde auf ähnliche Weise wie Option 3a / b angewendet, beispielsweise unter Verwendung von
Devcon.exe
. Eine ausführliche Beschreibung finden Sie hier .Option 2 - Verwenden einer virtuellen Umgebung (hauptsächlich mit Software von Drittanbietern)
Wenn die Anwendung in einer virtuellen Umgebung ausgeführt werden soll, gibt es zahlreiche Lösungen:
Abhängig von Ihrer Windows-Version (Win7 und höher erforderlich) und der Lizenz ("Professional" erforderlich, "Home" nicht erforderlich) können Sie Hyper-V verwenden, um eine virtuelle Umgebung ohne Software von Drittanbietern einzurichten.
Sie können eine Drittanbieter-Software verwenden, um ein virtuelles System wie VMplayer, Virtual Box usw. einzurichten. Es gibt viele Freeware- und Payware-Alternativen. Wenn Sie diese Lösung verwenden, benötigen Sie eine zweite Lizenz für Windows (oder Sie lassen sie unlizenziert, aber dann wird in der unteren rechten Ecke des Bildschirms eine Überlagerung angezeigt, die Sie auffordert, Windows zu registrieren). Dadurch wird definitiv verhindert, dass die Software auf das Laufwerk zugreift.
Sie könnten eine "Sandbox" -Anwendung verwenden. Dies hängt jedoch vom Grad der Virualisierung ab, den die Sandbox-Anwendung bietet. In einigen Fällen kann das Problem dadurch behoben werden. In anderen Fällen ist dies nicht der Fall. Sandboxie, zum Beispiel (derjenige, den Harrymc in seiner Antwort beschreibt ), löst das Problem nicht mit der Konfiguration, die Harrymc in seiner (ursprünglichen) Antwort beschreibt. Obwohl die Software den Zugriff möglicherweise blockiert, läuft das Laufwerk immer noch hoch. Eine Alternative wäre die Verwendung einer anderen Sandbox-Anwendung wie Cameyo usw.
Übrigens, hier ist ein guter Artikel über den Hauptunterschied zwischen den verschiedenen Virtualisierungssoftware, insbesondere den Unterschied zwischen einer "ganzen" virtuellen Maschine (wie Virtual Box) oder "halbvirtuellen" Anwendungen (wie Sandboxie).
Option 3 - Nur Volumes aushängen (Laufwerk "intakt" lassen) - Keine zusätzliche Software erforderlich, ABER in Ihrem Fall funktioniert dies möglicherweise nicht
Option 3a
Anstatt die Anwendung über ihre reguläre Verknüpfung zu starten, können Sie eine Batch-Datei mit dem Befehl schreiben, mit dem
mountvol
zuerst das nicht verwendete Volume abgemeldet, dann die Anwendung gestartet und das Volume erneut abgemeldet wird, sobald die Anwendung nicht mehr auf das Laufwerk zugreift. Das Ein- und Aushängen über die Befehlszeile wird hier und hier beschrieben . Sie können auchdiskpart
wie hier und hier beschrieben verwenden .Option 3b
Alternativ können Sie das Laufwerk auch im Allgemeinen nicht bereitstellen und es über eine Batch-Datei bereitstellen, die das Laufwerk bereitstellt, das Sie bei Bedarf manuell starten. Nachdem Sie es verwendet haben, können Sie es mithilfe einer zweiten Batchdatei manuell aushängen. Sie können dies automatisieren, indem Sie Zugriffsanforderungen für das Dateisystem überwachen und das Laufwerk nach bestimmten Regeln ein- und aushängen, z. B. wenn bestimmte Anwendungen keinen Zugriff haben. Ich bin mir jedoch nicht sicher, ob Automatisierung den zusätzlichen Aufwand wert ist.
Option 4 - Beschränkung des Zugriffs auf einen Laufwerksbuchstaben (Volume). Einfach zu machen, aber es werden zwei kleine Tools von Microsoft benötigt - ABER es könnte in Ihrem Fall nicht funktionieren
Wenn Sie auf Software von Drittanbietern verzichten möchten, aber keine Probleme haben, zwei kleine Tools von Microsoft zu verwenden (sofern Sie diese nicht bereits verwenden). Ich bevorzuge diese Lösung, weil sie das Problem "durch die Wurzel" (Unterscheidung zwischen den Rechten des Benutzers und der Anwendung) verursacht und ziemlich einfach ist und keine "große" Software von Drittanbietern benötigt wird.
Grundsätzlich fügen Sie einen Benutzer hinzu, der keinen Zugriff auf das Laufwerk hat, und starten dann das Programm mit diesen eingeschränkten Rechten (Sie werden sich weiterhin als normaler Benutzer anmelden und das eingeschränkte Konto nicht zum Anmelden verwenden).
Fügen Sie ein Benutzerkonto hinzu.
Beschränken Sie den Zugriff des neuen Benutzerkontos auf das Laufwerk mithilfe der Windows-Zugriffssteuerung für das Dateisystem. Hier ist eine gute Anleitung mit Screenshots.
Starten Sie dann die Software mit diesen Rechten. Sie können zum Beispiel verwenden psexec.exe dass oder Process Explorer zu tun, hier ist , wie . Eines dieser beiden Programme müssen Sie von der Microsoft-Website herunterladen, sofern Sie es noch nicht haben.
quelle
Ich schlage eine Lösung vor, die Sandboxie verwendet . Ich habe Ihre Umgebung nicht, also habe ich getestet,
Acrobat.exe
ob ich in einer Sandbox laufen kann, auf die der ZugriffD:
blockiert war. Beim Öffnen in Acrobat über das Menü Datei> Öffnen erhalte ich Folgendes:Beachten Sie, dass Acrobat die Bezeichnung der Festplatte nicht finden kann
D:
und daher gezwungen ist, sie lahm anzuzeigen, und wie sie blockiert wird, wenn ich auf "Lokale Festplatte (D :)" klicke.Die Schritte, die ich verwendet habe, waren:
C:\Program Files (x86)\Adobe\Acrobat DC\Acrobat\Acrobat.exe
)D:
C:\Program Files (x86)\Adobe\Acrobat DC\Acrobat
)Von nun an müssen alle Programme, die aus dem Acrobat-Ordner gestartet werden, Sandboxed ausführen. Insbesondere
Acrobat.exe
wird der Zugriff auf die Festplatte gesperrtD:
. Möglicherweise müssen Sie einige andere Sandbox-Einschränkungen öffnen, wenn Acrobat Probleme bei der Ausführung in der Sandbox hat.Ich weiß nicht, ob dies auch den spezifischen Windows-API-Aufruf blockiert, den Acrobat zum Aufwecken des Datenträgers verwendet, aber möglicherweise einen Versuch wert ist.
Sandboxie ist ein großartiges und vielseitiges Produkt, das ich empfehlen kann und für eine Standard-Sandbox kostenlos ist. Für mehrere Sandboxes ist es Payware, aber der Preis für eine lebenslange Lizenz ist sehr vernünftig (ich habe bezahlt). Beispielsweise installiere ich Produkte, die ich teste, in einer Sandbox und kann sie dann mit einem Klick entfernen, ohne dass ein Deinstallationsprogramm erforderlich ist.
Eine andere Isolationslösung ist die Verwendung von Adobe Reader in einem Docker-Container . Docker-Container sind klein und funktionieren wie virtuelle Maschinen, müssen jedoch nicht erstellt werden, da vorgefertigte Container aus der Docker-Galerie heruntergeladen werden.
Sie können Chocolatey als Paketmanager verwenden.
Chocolatey hat viele vorgefertigte Pakete mit Adobe Reader im Adobe Acrobat Reader DC 2018.011.20063 verfügbar .
Mit Docker ist absolute Isolation in Bezug auf Ressourcen möglich, und andererseits ist es möglich, Ressourcen wie Ordner auf eine völlig native Art und Weise gemeinsam zu nutzen.
quelle