Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正在添加防火墙规则,但未添加域网络_C#_Firewall_Windows Firewall_Windows Firewall Api - Fatal编程技术网

C# 正在添加防火墙规则,但未添加域网络

C# 正在添加防火墙规则,但未添加域网络,c#,firewall,windows-firewall,windows-firewall-api,C#,Firewall,Windows Firewall,Windows Firewall Api,我正在尝试在防火墙中添加应用程序。它工作正常,但只检查“Public”选项。我想为“域”添加防火墙规则 这是我的密码 private const string ClsidFirewallManager = "{304CE942-6E39-40D8-943A-B913C40C9CD4}"; private INetFwMgr _firewallManager; private INetFwMgr FirewallMgr { get { return _firewallManager ??

我正在尝试在防火墙中添加应用程序。它工作正常,但只检查“Public”选项。我想为“域”添加防火墙规则

这是我的密码

private const string ClsidFirewallManager = "{304CE942-6E39-40D8-943A-B913C40C9CD4}";

private INetFwMgr _firewallManager;
private INetFwMgr FirewallMgr
{
    get { return _firewallManager ?? (_firewallManager = (INetFwMgr)Activator.CreateInstance(Type.GetTypeFromCLSID(new Guid(ClsidFirewallManager)))); }
}

private INetFwPolicy FirewallPolicy
{
    get { return FirewallMgr.LocalPolicy; }
}

private INetFwProfile _firewallProfile;
private INetFwProfile FirewallProfile
{
    get { return _firewallProfile ?? (_firewallProfile = FirewallPolicy.CurrentProfile); }
}


public void AddApplication(string imageFileName, string registerName)
{
    if (!IsAppEnabled(imageFileName))
    {
        var firewallApplicatoins = FirewallProfile.AuthorizedApplications;
        var type = Type.GetTypeFromProgID("HNetCfg.FwAuthorizedApplication");
        var firewallApplication = Activator.CreateInstance(type) as INetFwAuthorizedApplication;

            firewallApplication.ProcessImageFileName = imageFileName;
            firewallApplication.Name = registerName;
            firewallApplication.Scope = NET_FW_SCOPE_.NET_FW_SCOPE_LOCAL_SUBNET; ---> Here it adds to public, whatever the value for enum is.
            firewallApplication.Enabled = true;

            firewallApplicatoins.Add(firewallApplication);
    }
}
我跟踪了这个链接

现在在这里,无论我给作用域赋值,防火墙规则只为公共网络添加。我想为域网络添加它

firewallApplication.Scope = NET_FW_SCOPE_.NET_FW_SCOPE_LOCAL_SUBNET;

我在这里做错了什么。我正在使用Windows 8。

我遇到了问题。我现有的代码只能在Windows XP上运行。对于Vista或更高版本,它工作不正常。对于Vista,我需要使用下一版本的防火墙

这是代码

var firewallRule = (INetFwRule2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FWRule"));

firewallRule.Name = registerName;
firewallRule.Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW;
firewallRule.Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN;
firewallRule.Enabled = true;
firewallRule.InterfaceTypes = "All";

var rules = VistaFirewallPolicy.Rules;
rules.Add(firewallRule);
此代码将向域、私有和公共添加防火墙规则