Batch file 防火墙上下文菜单 目标

Batch file 防火墙上下文菜单 目标,batch-file,Batch File,我需要为.exe文件添加阻止防火墙上下文菜单。 来源 (为我的使用而修改) (没有答案) 代码 当与不包含空格的文件路径一起使用时,此代码工作得非常好 A specified value is not valid. Usage: add rule name=<string> dir=in|out .. Press any key to continue. . . 如果文件路径包含空格,它只会抛出这个错误。为了调试,我在前面代码的末尾添加了&暂停 输出

我需要为
.exe
文件添加
阻止防火墙上下文菜单。


来源 (为我的使用而修改)

(没有答案)


代码 当与不包含空格的
文件路径一起使用时,此代码工作得非常好

A specified value is not valid.

Usage: add rule name=<string>
     dir=in|out
     ..
Press any key to continue. . .

如果
文件路径包含空格
,它只会抛出这个错误。为了调试,我在前面代码的末尾添加了
&暂停

输出
我希望我们能作为一个团队一起解决这个问题。如果需要,我将编辑和更新OP,以获得更多澄清或更新感谢@micheal\u heath的回复。

Reg Add "HKLM\Software\Classes\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\\\""^
 /F
使用时,可能需要转义双引号。 它由C语言构成,C语言使用
argv
进行参数处理 就像
reg
用来解析参数一样

reg
删除
\
中的
\
以便保留
。 问题在于,执行
时使用
”提升
,这不是
使用
\
进行转义,将删除
”。 因此,带空格的路径现在没有外部的
来保存它们 防止分裂

通过在
\“
之前添加另一个
\
来解决此问题。 如果仅使用一个
\
变为
\\“
,则转义以下内容
\
,因此
被删除。因此,再添加一个
\
成为
\\\”
以转义
\
,并转义
,以便
\
将保留

所以
reg
解析
\\\”
提升
解析
\”
cmd
解析

插入到注册表中的内容如下所示:

Elevate.exe CMD.exe /Q /C For %%A In (\"%1\") Do Netsh Advfirewall Firewall Add Rule Name=\"%~nA\" Dir=Out Action=Block Program=\"%1\"

请不要诋毁你的问题。你可以自己删除它,如果你想的话,也可以要求与你的问题脱节。
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\"\""
Reg Add "HKLM\Software\Classes\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\\\""^
 /F
Elevate.exe CMD.exe /Q /C For %%A In (\"%1\") Do Netsh Advfirewall Firewall Add Rule Name=\"%~nA\" Dir=Out Action=Block Program=\"%1\"