我正在尝试从命令行启用文件和打印机共享,经过一些谷歌搜索后,我找到了实现此目的的正确命令:
netsh advfirewall firewall set rule group="File and Printer Sharing" new enable=yes
如果 Windows 语言是英语,这似乎没问题。但是,在我的法语 Windows 中,这是来自管理命令提示符的结果:
任何规则都不符合特定的标准。
(英语翻译:没有符合指定条件的规则)
我也尝试过这个命令行:
netsh advfirewall firewall set rule group="Partage de fichiers et d'imprimantes" new enable=yes
但效果不太好,我得到了与上面相同的结果。
答案1
问题出在命令行中的撇号字符。
- 键盘显示的是
'
- 但防火墙规则的正确规则是
’
因此,请使用正确的撇号字符复制一份防火墙规则标题,然后将其粘贴到命令 shell 上。
例子:
- 不行:
netsh advfirewall firewall set rule group="Partage de fichiers et d'imprimantes" new enable=no
- 好的:
netsh advfirewall firewall set rule group="Partage de fichiers et d’imprimantes" new enable=no
差异在于d
和 之间imprimantes
。
编写包含正确撇号字符的批处理脚本并不容易。它会返回错误。撇号在编辑器中显示正确,但在命令提示符中被误解。
您也可以使用键盘输入Alt+ 0146,它将显示正确的’
字符(在 Windows 字符表中找到)。
相关主题:
在命令提示符中,两个不同的撇号字符显示相同,因此不容易发现这个字符弄乱了整个命令行,如1
答案2
无论 Windows 语言版本如何,都可以启用“文件和打印机共享”防火墙组:
netsh advfirewall 带有间接字符串 - 索引 -28502 转换为组的名称(您可以使用索引提取其他可用字符串,例如使用 Nirsoft Resources Extract)
netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes
netsh 防火墙 - 自 Windows Vista 起已弃用,但可能对 Windows XP 有用(没有可用的 advfirewall 或 FirewallAPI.dll)
netsh firewall set service type=FileAndPrint mode=enable
答案3
上述答案的替代方法:由于您似乎能很好地说/打英语,您可以通过控制面板将显示语言更改为英语(或者我确定是通过 PowerShell,我只是不知道该命令),运行该命令或您想要的任何其他命令,然后在完成后将其更改回法语。