2012-06-12 38 views
3

我寫了一個Windows服務,我需要將它移植到Mono中,以便它可以在Mac/Linux平臺上使用。將C#應用程序移植到Mono時,需要使用FirewallAPI。是否有單聲道等價物?

它利用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; 
    } 
} 
+0

對於守護進程,請檢查單聲道服務(使用單聲道構建) –

回答

0

我忘了回答這個問題時,我想它全力以赴!

在OS X上,不需要設置防火牆例外。 OS X會要求用戶給你的應用程序訪問互聯網的權限。

雖然我不確定Linux,但是單聲道的覆蓋率在Linux上要高很多,所以我確信有人在Linux上回答了這個問題。

相關問題