Цель
Мне нужно добавить Block Firewall Context Menu
Для .exe
Файлов.
Источники
Блокировка .EXE в брандмауэре Windows с контекстным меню ( Модифицировано для моего использования )
Windows 10 | регедит | Команда оболочки exefile (правило добавления брандмауэра) - не работает ( Нет ответов )
код
Reg Add "HKEY_CLASSES_ROOT\exefile\Shell\Firewall\Command" /T Reg_SZ /D "Elevate.exe CMD.exe /Q /C For %%%%A In (\"%%1\") Do Netsh Advfirewall Firewall Add Rule Name=\"%%~nA\" Dir=Out Action=Block Program=\"%%1\""
Этот код прекрасно работает при использовании с filepath-that-doesnt-contain-space
Если filepath containing spaces
, то просто выкинет эту ошибку . Для отладки я добавил & pause
в конец предыдущего кода
выход
A specified value is not valid.
Usage: add rule name=<string>
dir=in|out
..
Press any key to continue. . .
дважды
A specified value is not valid.
Usage: add rule name=<string>
dir=in|out
..
Press any key to continue. . .
Я не уверен, почему он запускал код дважды . Одна теория, которую я мог бы выдвинуть, заключается в том, что, возможно, она пытается добавить folder with spaces in path as filename
, а также filename
к netsh
?
Во время отладки с использованием Echo
я обнаружил, что он не имеет ""
внутри Netsh Rule Name=""
и Program=""
, который, я думаю, требуется, если path or filename has spaces
в нем. Я полагаю, что "Qoutes"
, которые отсутствуют, вероятно, являются причиной этой проблемы.
Я также пытался экранировать и добавлять двойные кавычки . Все еще не работает.
Reg Add "HKEY_CLASSES_ROOT\exefile\Shell\Firewall\Command" /T Reg_SZ /D "Elevate.exe CMD.exe /Q /C For %%%%A In (\"\"%%1\"\") Do Netsh Advfirewall Firewall Add Rule Name=\"\"%%~nA\"\" Dir=Out Action=Block Program=\"\"%%1\"\""
Надеюсь, мы сможем понять это вместе, как команда. Я буду редактировать и обновлять ФП для получения дополнительных разъяснений или обновлений, если это необходимо. Спасибо @micheal_heath за ответ.