3

Mac / Linuxプラットフォームで使用できるように、Monoに移植する必要があるWindowsサービスを作成しました。

それはFirewallAPI.dllを利用します(私はそれが実際の名前だと思います...)。他の名前は、NetFwTypeLb、NATUPNPLib、およびNETCONLibです。

私はグーグルでこれをMac/Linuxプラットフォームに実装する方法を見つけようとしていますが、これを行うために使用できるものが見つかりません。

これは可能ですか?そして、別の質問をこれと組み合わせると、Mac / Linuxプラットフォームでは、サービス(別名「デーモン」と呼ばれる)を簡単にインストールして実行できますか?

ありがとう、マデリーン

念のために言っておきますが、これは私が使用している現在のコードです。別のStackOverflowの質問から取得しました。

public class Firewall
{
    public static INetFwMgr WinFirewallManager()
    {
        Type type = Type.GetTypeFromCLSID(
            new Guid("{304CE942-6E39-40D8-943A-B913C40C9CD4}"));
        return Activator.CreateInstance(type) as INetFwMgr;
    }
    public bool AuthorizeProgram(string title, string path,
        NET_FW_SCOPE_ scope, NET_FW_IP_VERSION_ ipver)
    {
        Type type = Type.GetTypeFromProgID("HNetCfg.FwAuthorizedApplication");
        INetFwAuthorizedApplication authapp = Activator.CreateInstance(type)
            as INetFwAuthorizedApplication;

        authapp.Name = title;
        authapp.ProcessImageFileName = path;
        authapp.Scope = scope;
        authapp.IpVersion = ipver;
        authapp.Enabled = true;

        EventLog.WriteEntry("MachineVerification", authapp.Name + " " + authapp.Scope + " " + authapp.IpVersion);

        INetFwMgr mgr = WinFirewallManager();
        try
        {
            mgr.LocalPolicy.CurrentProfile.AuthorizedApplications.Add(authapp);

            EventLog.WriteEntry("MachineVerification", authapp.Name + " " + authapp.Scope + " " + authapp.IpVersion);
        }
        catch (Exception ex)
        {
            EventLog.WriteEntry("MachineVerification", "MROW!" + ex.Message);
            return false;
        }
        return true;
    }
}
4

1 に答える 1

0

私はそれをすべて理解したときにこれに答えるのを忘れました!

OS Xでは、ファイアウォールの例外を作成する必要はありません。OS Xは、インターネットへのアクセスをアプリケーションに許可するようにユーザーに要求します。

Linuxについてはよくわかりませんが、モノラルのカバレッジはLinuxの方がはるかに高いので、誰かが以前にLinuxについてこの質問に答えたことがあると思います。

于 2012-06-22T17:36:27.150 に答える