Socket on localhost

Thomasio

Erfahrenes Mitglied
Ich schreibe ein kleines Programm bestehend aus 2 .exe die über WinSock2 eine Verbindung aufbauen.
Ich weiss, dass geht auch ohne Inet, mit Pipes oder so, aber das soll später mal aufs Heimnetzwerk erweitert werden und dann brauche ich es doch wieder, also mache ich es gleich richtig.

Problem ist, wenn ich die .exe starte die als Server dient, kommt die Windows Firewall mir mit einer Warnung, ala wurde blockiert, weil unsicher usw., samt Frage ob ich das erlauben will, mit Buttons drunter.
Logischerweise ist es völlig egal, ob ich das erlaube oder nicht, weil er nur localhost Verbindungen akzeptiert und die sowieso nicht über die Firewall müssen.

Die Frage ist nur, wie stelle ich die blöde Warnung ab, so dass ich das Programm auch weitergeben kann, ohne dass unwissende User von dieser Warnung verwirrt werden?

Code:
SOCKET StartSocket = socket(AF_INET,SOCK_STREAM,0);
struct sockaddr_in saServer;
hostent* localHost;
char* localIP;
localHost = gethostbyname("");
localIP = inet_ntoa (*(struct in_addr *)*localHost->h_addr_list);
saServer.sin_family = AF_INET;
saServer.sin_addr.s_addr = inet_addr(localIP);
saServer.sin_port = htons(3456);
bind(StartSocket,(SOCKADDR*)&saServer,sizeof(saServer));
listen(StartSocket,SOMAXCONN);
 
Soweit ich weiß gar nicht. Das wäre ja ziemlich sinnlos wenn man das unterbinden könnte. Da schreibe ich einen netten Trojaner und sage der Firewall einfach das es was nettes ist.
 
Ich will ja überhaupt nichts unterbinden, von mir aus soll die Firewall das automatisch blockieren, nur ohne Warnung.
Windows könnte ja zumindest so intelligent sein zu erkennen, dass die Firewall überhaupt nicht gefragt ist, wenn ein Server ausschliesslich localhost Verbindungen akzeptiert.
 
Hallo Thomasio,

diese Firewall-Warnung schlägt bei jeder neuen (dem System unbekannten) EXE zu und hat nichts damit zu tun, was diese EXE nun konkret macht.

Um die Warnung zu unterbinden, musst du dein Programm in die Liste der autorisierten Programme eintragen. Das geht recht einfach mit einem kleinen VBScript, das du evt. als Teil deiner Installationsroutine laufen lassen kannst.

Hier findest du Beispiele:
http://www.activexperts.com/activmonitor/windowsmanagement/scripts/networking/windowsfirewall/

Oder du baust ein kleines Progrämmchen mit Hilfe der Codes aus dem Link von Sheel (WindowsFirewallAppIsEnabled).

Gruß
MCoder
 
Zuletzt bearbeitet:
Zurück