Windows Firewall exception / Ausnahme

  • Heyho liebes Forum,

    ich habe ein paar einfache und vielleicht für einen Anfänger nicht so einfach lösbare Fragen. Ich hab schon Bücher gewälzt, also bitte nicht annehmen, dass kein Versuch unternommen worden wäre um dieses Problem zu lösen. Ich habe ein einfaches und für mich auch simples Skript gefunden, welches ich soweit auch umändern konnte, für meine bisherigen Zwecke. Bis auf eine Sache, die sogenannte Edgeausnahme. Die Edgeausnahme lässt sich damit nicht einstellen. Bei Windows gibt es ja vier Einstellungsmöglichkeiten, wofür es ja auch anscheinend Befehle in anderen Sprachen zu geben scheint. Doch wie übertrage ich diese in Autoit?


    Original Skript: (funktioniert soweit)

    [autoit]

    #RequireAdmin
    ;Add/Enable/Disable Firewall Exception
    Func _FirewallException($_intEnableDisable, $_appName, $_applicationFullPath)
    $Firewall = ObjCreate("HNetCfg.FwMgr")
    $Policy = $Firewall.LocalPolicy
    $Profile = $Policy.GetProfileByType(2)
    $colApplications = $Profile.AuthorizedApplications
    $newApplication = ObjCreate("HNetCfg.FwAuthorizedApplication")
    $newApplication.Name = $_appName
    $newApplication.IpVersion = 4
    $newApplication.ProcessImageFileName = $_applicationFullPath
    $newApplication.RemoteAddresses = "*"
    $newApplication.Scope = 0
    $newApplication.Enabled = $_intEnableDisable
    $colApplications.Add($newApplication)
    EndFunc ;==>_FirewallException
    ;Example usage ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ;Example block Autoit
    ;_FirewallException(0, "Autoit", @AutoItExe)
    ;Example allow Autoit
    _FirewallException(1, "Autoit", @AutoItExe)

    [/autoit]


    Skript von mir geändert: (funktioniert, bis auf Zeile 13, welche nicht funktioniert.)

    [autoit]

    #RequireAdmin
    Func _FirewallException($_intEnableDisable, $_appName, $_applicationFullPath)
    $Firewall = ObjCreate("HNetCfg.FwMgr")
    $Policy = $Firewall.LocalPolicy
    $Profile = $Policy.GetProfileByType(2)
    $colApplications = $Profile.AuthorizedApplications
    $newApplication = ObjCreate("HNetCfg.FwAuthorizedApplication")
    $newApplication.Name = $_appName
    $newApplication.IpVersion = 2
    $newApplication.ProcessImageFileName = $_applicationFullPath
    $newApplication.RemoteAddresses = "*"
    $newApplication.Scope = 0
    $newApplication.EdgeTraversal = TRUE ;Anstatt TRUE habe ich auch 1 und 0 versucht.
    $newApplication.Enabled = $_intEnableDisable
    $colApplications.Add($newApplication)
    EndFunc
    ;Example allow Autoit
    _FirewallException(1, "Autoit", @AutoItExe)

    [/autoit]


    Mir fällt grade auf, dass fehlt was ich eigentlich machen möchte. Nun ich möchte eine Edgeausnahme im besten Fall auf "Auf Anwendung zurückstellen" haben. Das wäre perfekt.


    Ich bitte um Hilfe.

    Mit freundlichen Grüßen

    Euer Sol.LrMartyn

    Einmal editiert, zuletzt von Sol.LrMartyn (25. August 2012 um 15:38)

  • 1. Eine genauere Fehlerbeschreibung als "funktioniert nicht" wäre angebracht.
    2. $newApplication.IpVersion = 2 ? :huh: ... Die älteste Version des Internet Protocols die ich kenne ist IPv3 und die ist ja schon praktisch antik... Oder verstehe ich hier etwas falsch?

  • Servus, also ich mach gleich mal ein paar Screenshots, was ich genau meine. Hm, also $newApplication.IpVersion = 2, hab ich ehrlich gesagt keine Ahnung. Ich weiß nur, es funktioniert. Er erstellt die Einträge in der Windows-Firewall in Windows 7, 64-Bit. Und das reicht mir, alles was brauche ist halt noch das eine einzige Sache hinzukommt und mein vollständiges "Programm" kann richtig arbeiten, xD. Ich mach ein paar Screenshots, ich bitte um einen Moment Geduld.

    Bild 1 beschäftigt sich damit was ich gerne haben möchte.


    Bild 2 bezieht sich darauf, welche Einträge mit dem nicht funktionierenden Skript eig erstellt werden sollten, aber nicht erstellt werden, sondern nur mit dem 1. Skript.

  • Nun, dann erläutere ich einmal wofür ich dies brauche. Ich versuche mithilfe von einigen wenigen Zeilen:

    [autoit]

    $your_id_2 = GUICtrlRead ($your_id, 1)
    Local $Open = _FTP_Open('MyFTP Control')
    Local $Conn = _FTP_Connect($Open, "123.123.de", "123", "123")
    $get = _FTP_FileGet ($Conn, $your_id_2&".sol", ".\data\data.sol")

    [/autoit]

    eine Datei runterzuladen welche auf einem FTP-Server liegt. Die Firewall soll für dieses Programm freigeschaltet werden. Es funktioniert aber nur, wenn entweder der User diese Freigabe erteilt, welches ich ja umgehen will, weil viele nicht wissen wie es geht, oder ich eine Möglichkeit finde die Edgeausnahme umzustellen. MIt InetGet bekomme ich die entsprechende Datei nicht.

    Gibt es noch weitere Alternativen? Wäre auch jemand möglicherweise bereit mit mir über einen Teamspeak3-Server darüber zu reden (Ts3: derobo.de, Port wird ja neuerdings nicht mehr gebraucht, Passwort gibt es keines...)?

  • *Push* Ähm Leute, ich bräuchte noch immer Hilfe. Ich bekomme es nicht in den Griff. Kann mir da niemand helfen?