2013-03-25 31 views
5

Mam następujący kod dla pliku .REG, który dodaje "Dodaj do zapory ogniowej" do menu kontekstowego po kliknięciu prawym przyciskiem myszy pliku .EXE. Po prostu tworzy regułę ruchu wychodzącego w zaporze systemu Windows dla wybranego pliku, zamiast robić to ręcznie.Zablokuj .EXE w Zaporze systemu Windows z menu kontekstowym

Windows Registry Editor Version 5.00 

[HKEY_CLASSES_ROOT\exefile\shell] 

[HKEY_CLASSES_ROOT\exefile\shell\Add To Firewall] 

[HKEY_CLASSES_ROOT\exefile\shell\Add To Firewall\command] 
@="netsh advfirewall firewall add rule name=\"%1\" dir=out action=block program=\"%1\"" 

http://oi46.tinypic.com/2rgnxaf.jpg

Moim problemem jest to, że po składnia name=\"%1\" daje pełnego katalogu (C: \ Nowy folder \ test.exe) jako nazwę w Zapora systemu Windows, a nie tylko zwykłą test.exe

Inną funkcją, którą szukam, jest dodanie wszystkiego do kliknięcia prawym przyciskiem myszy zamiast normalnego kliknięcia prawym przyciskiem, ponieważ nie używam tej funkcji, która często jest taka, że ​​widzę ją za każdym razem, gdy klikam prawym przyciskiem myszy. EXE

PS. Uruchom następujące polecenie, aby ponownie usunąć go z menu kontekstowego.

Windows Registry Editor Version 5.00 


[-HKEY_CLASSES_ROOT\exefile\shell\Add To Firewall] 

nadzieję usłyszeć od kogoś, i z góry wielkie dzięki stąd;)

+0

Link do źródła - http://maketecheasier.com/block-application-access-to-internet-z-context-menu/2011/01/11 – zyl1647

Odpowiedz

7

Poniższa zrobi dokładnie to, o co prosisz, ale wymaga to, że masz UAC wyłączone. Bez tworzenia pliku skryptu lub użycia thirdpartytools lub alternatywnie zastąpienia klucza runas, nie sądzę, że byłby w stanie utworzyć monit UAC.

Windows Registry Editor Version 5.00 

[HKEY_CLASSES_ROOT\exefile\shell\firewallblock] 
@="Add to Firewall"   ; String to be displayed in context menu 
"HasLUAShield"=""   ; Adds UAC shield icon to the left of the command 
"Extended"=""    ; Requires shift to be held when right-clicking 

[HKEY_CLASSES_ROOT\exefile\shell\firewallblock\command] 
@="cmd.exe /s /c for %%a in (\"%1\") do netsh advfirewall firewall add rule name=\"%%~na\" dir=out action=block program=\"%%~nxa\"" 

Aby opracować, używam polecenia FOR nie ze względu na jego funkcjonalność zapętlenie ale ponieważ daje mi dostęp do parameter extensions. Modyfikuję %%a (która, jak powiemy, ma wartość x:\fully\qualified\path\filename.exe) z %%~nxa, aby użyć filename.exe i %%~na do użycia filename.

chodzi o rzeczy UAC, to bym po prostu użyć jednego z tych narzędzi firm trzecich, o których wspomniałem powyżej i zmienić odpowiednio polecenia, np .:

@="elevate.exe -c for %%a in (\"%1\") do netsh advfirewall firewall add rule name=\"%%~na\" dir=out action=block program=\"%%~nxa\"" 

Nadzieję, że to pomaga!

+0

Sweet! działa dobrze, n bardzo ładnie wyjaśnione. Dzięki;) Zazwyczaj uruchamiam system Windows bez włączonego UAC, więc po prostu skorzystałem z pierwszej opcji. – zyl1647

+0

Dziękujemy! Mniejszy problem miałem: Twój kod dodał regułę dla programu.exe bez ścieżki, więc program był nadal dozwolony. Użyłem 1 $ zamiast %% ~ nxa, aby to zadziałało: '@ =" cmd.exe/s/c dla %% a in (\ "% 1 \") do netsh advfirewall firewall dodaj regułę name = \ "Block% % ~ na \ "dir = out action = block program = \"% 1 \ "" – Juhani