前些日子,做了一个程序,需要部署在单位的某台电脑上,结果装好后发现xp防火墙阻拦,无法远程管理程序。但这台电脑的xp防火墙无法配置,打开防火墙的时候会提示:“由于不可识别问题windows无法显示windows防火墙设置”,百度了一个解决方法:
原文地址:http://support.microsoft.com/?scid=kb;zh-cn;920074
症状
安装 Windows XP Service Pack 2 (SP 2) 后, 您无法启动 Windows 防火墙服务。 特别, 您会遇到一个或多种以下症状: • 在 服务 列表控制面板中不显示 Windows 防火墙 / Internet 连接共享 (ICS) 。    
• 在 服务 列表, 显示 Windows 防火墙 / Internet 连接共享 (ICS) 但无法启动此服务。    
• 当您尝试访问 Windows 防火墙设置收到以下错误信息: 由于对一个识别问题, Windows 无法显示 Windows 防火墙设置。    


原因
此问题是由 SharedAccess.reg 文件丢失或损坏。 SharedAccess.reg 文件代表了 Windows 防火墙服务。

注意 : Windows 防火墙服务在 Windows XP SP 2 替换在早期版本的 WindowsXP 中 Internet 连接防火墙 (ICF) 服务。

解决方案
要解决此问题, 使用下列方法之一。    

方法 1: 调用 " 安装 API InstallHinfSection " 函数以安装 Windows 防火墙    
要安装 Windows 防火墙, 请按照下列步骤: 1. 单击 开始 , 单击 运行 , 类型 cmd然后单击 确定 。    
2. 在命令提示符下, 键入以下命令行, 然后按 ENTER 键: Rundll32 setupapi,InstallHinfSection Ndi-Steelhead 132 %windir%\inf\netrass.inf    
3. 重新启动 Windows,    
4. 单击 开始 , 单击 运行 , 类型 cmd然后单击 确定 。    
5. 在命令提示符, 键入以下命令, 然后按 ENTER 键: Netsh firewall reset    
6. 单击 开始 , 单击 运行 , 类型 firewall.cpl然后按 ENTER 键 。 在 Windows 防火墙 对话框, 单击 On (推荐) , 并单击 确定 。    


方法 2: Windows 防火墙项添加到注册表
警告 如果正确修改注册表通过注册表编辑器或通过其他方法可能发生 Serious 问题。 这些问题可能需要重新安装操作系统。 Microsoft 不能保证能够解决这些问题而。 修改注册表需要您自担风险。

要将 Windows 防火墙项添加到注册表, 请按照下列步骤操作: 1. 将以下文本复制到记事本, 然后再保存文件作为 Sharedaccess.reg:    
Windows Registry Editor Version 5.00

[-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess]
"DependOnGroup"=hex(7):00,00
"DependOnService"=hex(7):4e,00,65,00,74,00,6d,00,61,00,6e,00,00,00,57,00,69,00,\
             6e,00,4d,00,67,00,6d,00,74,00,00,00,00,00
"Description"="Provides network address translation, addressing, name resolution and/or intrusion prevention services for a home or small office network."
"DisplayName"="Windows Firewall/Internet Connection Sharing (ICS)"
"ErrorControl"=dword:00000001
"ImagePath"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\
             74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,\
             00,76,00,63,00,68,00,6f,00,73,00,74,00,2e,00,65,00,78,00,65,00,20,00,2d,00,\
             6b,00,20,00,6e,00,65,00,74,00,73,00,76,00,63,00,73,00,00,00
"ObjectName"="LocalSystem"
"Start"=dword:00000002
"Type"=dword:00000020

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Epoch]
"Epoch"=dword:00002cd0

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters]
"ServiceDll"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,\
             00,74,00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,\
             69,00,70,00,6e,00,61,00,74,00,68,00,6c,00,70,00,2e,00,64,00,6c,00,6c,00,00,\
             00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\AuthorizedApplications]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\AuthorizedApplications\List]
"%windir%\\system32\\sessmgr.exe"="%windir%\\system32\\sessmgr.exe:*:enabled:@xpsp2res.dll,-22019"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List]
"%windir%\\system32\\sessmgr.exe"="%windir%\\system32\\sessmgr.exe:*:enabled:@xpsp2res.dll,-22019"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Setup]
"ServiceUpgrade"=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Setup\InterfacesUnfirewalledAtUpdate]
"All"=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Enum]
"0"="Root\\LEGACY_SHAREDACCESS\\0000"
"Count"=dword:00000001
"NextInstance"=dword:00000001

2. 双击 Sharedaccess.reg 将此文件的内容合并到注册表并可创建防火墙项。    
3. 重新启动 Windows。    
4. 单击 开始 , 单击 运行 , 类型 cmd然后单击 确定 。    
5. 【LGF注:可能会丢失防火墙设置吧?】在命令提示符, 键入以下命令, 然后按 ENTER 键:Netsh firewall reset    
6. 单击 开始 , 单击 运行 , 类型 firewall.cpl然后单击 确定 。    
7. 配置与要使用 Windows 防火墙设置
按照上面操作还是一样的故障。没办法,只能在开着防火墙的情况下用其他方式让程序过防火墙了,于是想到netsh firewall命令,命令介绍如下:
add                        - 添加防火墙配置。
delete                 - 删除防火墙配置。
dump                     - 显示一个配置脚本。
help                     - 显示命令列表。
reset                    - 将防火墙配置重置为默认值。
set                        - 设置防火墙配置。
show                     - 显示防火墙配置。

add allowedprogram - 添加防火墙允许的程序配置。

add allowedprogram
             [ program = ] path
            [ name = ] name
            [ [ mode = ] ENABLE|DISABLE
                [ scope = ] ALL|SUBNET|CUSTOM
                [ addresses = ] addresses
                [ profile = ] CURRENT|DOMAIN|STANDARD|ALL ]

    添加防火墙允许的程序配置。

    参数:

    program - 程序路径和文件名。

    name - 程序名。

    mode - 程序模式(可选)。
            ENABLE    - 允许通过防火墙(默认值)。
            DISABLE - 不允许通过防火墙。

    scope - 程序范围(可选)。
            ALL        - 允许所有流量通过防火墙(默认值)。
            SUBNET - 只允许本地网络(子网)流量通过防火墙。
            CUSTOM - 只允许指定的流量通过防火墙。

    addresses - 自定义范围地址(可选)。
                            以逗号分隔的范围可以包含 IPv4 地址、
                            IPv6 地址、子网、范围或关键字 LocalSubnet。

    profile - 配置的配置文件(可选)。
            CURRENT    - 应用于活动的配置文件。活动的配置文件可以是域、标准(即专用)
                                 或公用。(默认值)。
            DOMAIN     - 应用于域配置文件。
            STANDARD - 应用于标准(即专用)配置文件。
            ALL            - 应用于域和标准(即专用)配置文件。
                                 不应用于公用配置文件。

    注释: "scope" 必须为 "CUSTOM" 以指定 "addresses"。
                     "addresses" 不能包含未指定或环回地址。

    示例:

            add allowedprogram C:\MyApp\MyApp.exe "My Application" ENABLE
            add allowedprogram C:\MyApp\MyApp.exe "My Application" ENABLE CUSTOM
                    157.60.0.1,172.16.0.0/16,10.0.0.0/255.0.0.0,
                    12AB:0000:0000:CD30::/60,LocalSubnet
            add allowedprogram program=C:\MyApp\MyApp.exe name="My Application"
                    mode=DISABLE
            add allowedprogram program=C:\MyApp\MyApp.exe name="My Application"
                    mode=ENABLE scope=CUSTOM addresses=157.60.0.1,
                    172.16.0.0/16,10.0.0.0/255.0.0.0,
                    12AB:0000:0000:CD30::/60,LocalSubnet

于是在CMD里敲入:netsh firewall add allowedprogram "C:\Program Files\XXXXXX\xxxxxxx.exe" "xxxxxxx" ENABLE
搞定