Chcę odmówić niektórym aplikacjom na moim komputerze dostępu do niektórych dysków lub woluminów logicznych, ale jak dotąd nie mogłem znaleźć rozwiązania.
Tło: Mój komputer ma dysk SSD jako dysk systemowy i 15 TB Raid-6 z pięcioma dyskami twardymi. Sterownik jest skonfigurowany do wyłączania napędów po ~ 10-15 minutach. Jest w porządku, ponieważ czasami nie potrzebuję uzyskiwać dostępu do niczego w Raidzie przez kilka godzin lub nawet dłużej. Niektóre aplikacje, takie jak Adobe Reader, uzyskują dostęp do wszystkich woluminów logicznych podczas uruchamiania z jakiegoś powodu, którego nie rozumiem. Zakładam, że dotyczy to wszystkich woluminów z przypisaną literą dysku. Usunięcie liter i ponowne przypisanie ich nie jest opcją;)
Jak mogę ograniczyć dostęp programu Adobe Reader lub innych aplikacji do tych woluminów moich hostów Raid?
Odpowiedzi:
W systemie Windows nie ma natywnego obsługiwanego sposobu blokowania dostępu do niektórych dysków niektórym procesom, co jest sprzeczne z obecnym charakterem sposobu, w jaki system operacyjny obsługuje dostęp do dysku.
Prawo dostępu określa prawa zalogowanego użytkownika, który uruchamia aplikację. Więc jeśli twórca oprogramowania zdecydował, że jego oprogramowanie powinno przeszukać wszystkie dostępne dyski i nie daje ci możliwości wyłączenia go ... cóż, to złe programowanie, które nie uwzględnia twojego konkretnego przypadku użycia. Ale jest kilka obejść.
Jedynym „pewnym” rozwiązaniem jest 2, ponieważ warstwa wirtualizacji sprzętowej (z maszyny wirtualnej) może blokować dowolne aplikacje w celu próby uzyskania pełnego dostępu do „prawdziwego sprzętu”. Chociaż nie miałem przypadku, w którym rozwiązanie 1 nie działa, ale teoretycznie myślę, że można to obejść.
Opcja „1” - Wyłączanie napędów na „niskim poziomie” - Nie jest wymagane dodatkowe oprogramowanie
Opcja 1a
Możliwe jest wyłączenie woluminów w dolnej warstwie poprzez całkowite wyłączenie dysków, ale spowoduje to wyłączenie wszystkich woluminów na dysku. Możesz to zrobić ręcznie, uruchamiając
diskmgmt.msc
, a następnie klikając dysk prawym przyciskiem myszy i oznaczając go jako „offline”.W razie potrzeby powinieneś być w stanie to zrobić również za pomocą skryptu wiersza poleceń. Byłby zastosowany w podobny sposób jak wariant 3a / b. Możesz to zrobić na przykład za pomocą cmd, jak opisano tutaj, lub za pomocą programu PowerShell, jak opisano tutaj .
Opcja 1b
Możesz całkowicie wyłączyć sterownik napędu. Aby zrobić to ręcznie: uruchom
diskmgmt.msc
, a następnie kliknij prawym przyciskiem myszy, wybierz „opcje”. Następnie przejdź do zakładki „Sterownik” i wybierz „Dezaktywuj”. Dysk „zniknie” w menedżerze dysków i nie będzie już dostępny przez system operacyjny. O ile oprogramowanie nie wykonuje poleceń kodu maszynowego w celu bezpośredniej komunikacji ze sprzętem, aplikacja nie powinna mieć dostępu do napędów. Przynajmniej o ile wiem o tajnikach systemów operacyjnych.W razie potrzeby powinieneś być w stanie to zrobić również za pomocą skryptu wiersza poleceń. Byłoby zastosować w podobny sposób jak w przypadku opcji 3a / b, przy użyciu, na przykład
Devcon.exe
. Szczegółowy opis można znaleźć tutaj .Opcja 2 - Korzystanie ze środowiska wirtualnego (głównie z oprogramowaniem innych firm)
Jeśli uruchomienie aplikacji w środowisku wirtualnym jest w ogóle możliwe, istnieje wiele rozwiązań:
w zależności od wersji systemu Windows (wymagany Win7 i wyższy) i licencji (wymagany „Professional”, „Home” nie zrobi), możesz po prostu użyć Hyper-V, aby skonfigurować środowisko wirtualne bez oprogramowania innych firm.
możesz użyć oprogramowania innej firmy do skonfigurowania systemu wirtualnego, takiego jak VMplayer, Virtual Box itp. Istnieje wiele darmowych i płatnych alternatyw. Korzystając z tego rozwiązania, będziesz potrzebować drugiej licencji na system Windows (lub pozostawisz ją bez licencji, ale wtedy dostaniesz nakładkę w prawym dolnym rogu ekranu, która każe Ci zarejestrować system Windows). To zdecydowanie uniemożliwi dostęp oprogramowania do napędu.
możesz użyć aplikacji „piaskownicy”. Będzie to jednak zależeć od poziomu wirtualizacji oferowanego przez aplikację piaskownicy. W niektórych przypadkach może rozwiązać problem; w innych przypadkach tak nie jest. Na przykład Sandboxie (ten, który harrymc opisuje w swojej odpowiedzi ), nie rozwiązuje problemu z konfiguracją harrymc opisaną w (oryginalnej) odpowiedzi. Chociaż oprogramowanie może blokować dostęp, dysk nadal będzie się obracał. Alternatywą byłoby użycie innej aplikacji piaskownicy, takiej jak Cameyo itp.
Nawiasem mówiąc, oto dobry artykuł na temat głównej różnicy między różnymi programami do wirtualizacji, a zwłaszcza różnicy między „całą” maszyną wirtualną (jak Virtual Box) a aplikacjami „pół wirtualnymi” (jak Sandboxie).
Opcja 3 - odmontowanie tylko woluminów (pozostawiając dysk „nienaruszony”) - nie jest wymagane dodatkowe oprogramowanie, ALE może nie działać w twoim przypadku
Opcja 3a
Zamiast uruchamiać aplikację za pomocą zwykłego skrótu, możesz napisać plik wsadowy za pomocą polecenia,
mountvol
które najpierw odmontowuje nieużywany wolumin, następnie uruchamia aplikację, a następnie ponownie instaluje wolumin, gdy aplikacja nie uzyska już dostępu do dysku. Proces montowania / odmontowywania za pomocą wiersza poleceń opisano tutaj i tutaj . Możesz również użyćdiskpart
zgodnie z opisem tutaj i tutaj .Opcja 3b
Alternatywnie możesz po prostu pozostawić dysk odmontowany ogólnie i zamontować go za pomocą pliku wsadowego, który montuje dysk, który uruchamiasz ręcznie w razie potrzeby. Po zakończeniu korzystania z niego możesz ręcznie odmontować go za pomocą drugiego pliku wsadowego. Można to zautomatyzować, monitorując żądania dostępu do systemu plików i zamontuj / odmontuj dysk zgodnie z wymaganiami, przestrzegając pewnych zasad, np. Że niektóre aplikacje nie będą miały dostępu. Ale nie jestem pewien, czy automatyzacja jest warta dodatkowego wysiłku.
Opcja 4 - Ograniczenie dostępu do litery dysku (woluminu). Proste, ale potrzebne są dwa małe narzędzia firmy Microsoft - ALE może nie działać w twoim przypadku
Jeśli chcesz to zrobić bez oprogramowania innych firm, ale nie masz nic przeciwko użyciu dwóch małych narzędzi firmy Microsoft (jeśli jeszcze tego nie używasz). Wolę to rozwiązanie, ponieważ problem występuje „z poziomu katalogu głównego” (rozróżnienie między prawami użytkownika i aplikacji) i jest dość prosty i nie jest potrzebne „duże” oprogramowanie innych firm.
Zasadniczo dodajesz użytkownika bez dostępu do dysku, a następnie uruchamiasz program z tymi ograniczonymi prawami (nadal będziesz się logować jako zwykły użytkownik, nie będziesz używać konta z ograniczonym dostępem do logowania).
Dodaj konto użytkownika.
Ogranicz dostęp nowego konta użytkownika do dysku za pomocą Kontroli dostępu systemu Windows dla systemu plików. Oto dobre instrukcje, w tym zrzuty ekranu.
Następnie uruchom oprogramowanie z tymi prawami. Możesz na przykład użyć do tego PsExec.exe lub Process Explorer, oto jak to zrobić . Jeden z nich musisz pobrać ze strony Microsoft, jeśli jeszcze ich nie masz.
źródło
Proponuję rozwiązanie wykorzystujące Sandboxie . Nie mam twojego środowiska, więc przetestowałem działanie
Acrobat.exe
w piaskownicy, w której dostęp do niegoD:
został zablokowany. Otwierając w programie Acrobat menu Plik> Otwórz , otrzymuję:Zauważ, że Acrobat nie może nawet znaleźć etykiety dysku
D:
, więc jest zmuszony wyświetlić ją w kiepski sposób i jak jest blokowana, kiedy kliknę „Dysk lokalny (D :)”.Kroki, które zastosowałem to:
C:\Program Files (x86)\Adobe\Acrobat DC\Acrobat\Acrobat.exe
)D:
C:\Program Files (x86)\Adobe\Acrobat DC\Acrobat
)Odtąd wszystkie programy uruchamiane z folderu Acrobat są zmuszone do wykonywania piaskownicy, a konkretnie
Acrobat.exe
blokowanie dostępu do dyskuD:
. Może być konieczne otwarcie innych ograniczeń piaskownicy, jeśli Acrobat będzie miał trudności z uruchomieniem w piaskownicy.Nie wiem, czy to również zablokuje określone wywołanie API systemu Windows, którego używa Acrobat, aby spowodować wznowienie dysku, ale może warto spróbować.
Sandboxie to świetny i wszechstronny produkt, który polecam, bezpłatny dla jednego domyślnego piaskownicy. W przypadku wielu piaskownic jest to oprogramowanie płatne, ale cena licencji na całe życie jest bardzo rozsądna (zapłaciłem). Na przykład instaluję testowane produkty w piaskownicy, a następnie mogę je wyczyścić jednym kliknięciem, bez potrzeby deinstalacji.
Innym rozwiązaniem izolacyjnym jest użycie programu Adobe Reader w kontenerze Docker . Kontenery Docker są małe i działają jak maszyny wirtualne, ale bez konieczności tworzenia maszyny, ponieważ gotowe kontenery są pobierane z galerii Docker.
Możesz użyć Chocolatey jako menedżera pakietów.
Chocolatey ma wiele dostępnych gotowych pakietów z Adobe Reader na Adobe Acrobat Reader DC 2018.011.20063 .
Dzięki Dockerowi możliwa jest absolutna izolacja zasobów, a z drugiej strony można współdzielić zasoby, takie jak foldery, w całkowicie natywny sposób.
źródło