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;
}
}
對於守護進程,請檢查單聲道服務(使用單聲道構建) –