AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi ICS Port Mapping (WinXP Internetfreigabe)
Thema durchsuchen
Ansicht
Themen-Optionen

ICS Port Mapping (WinXP Internetfreigabe)

Ein Thema von Dani · begonnen am 21. Jan 2004 · letzter Beitrag vom 22. Jan 2004
Antwort Antwort
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#1

ICS Port Mapping (WinXP Internetfreigabe)

  Alt 21. Jan 2004, 11:54
Hallo zusammen,
Ich frage mich, ob es möglich ist, mit Delphi auf folgende Einstellungen zuzugreifen:


Bild ist im Anhang zu sehen.
(Hier sollte ein Bild der freigegebenen Ports der WinXP Internetfreigabe zu sehen sein)


Laut MSDN (Link) wird dazu ein COM-Interface benutzt. Kann ich aus Delphi heraus auf diese Schnittstelle zugreifen?

Beste Grüße,
Dani

[edit=sakura] Bild als Anhang, damit es für immer erhalten bleibt. Mfg, sakura[/edit]
[edit=sakura] Mfg, sakura[/edit]
Miniaturansicht angehängter Grafiken
ics_forwardports.jpg  
Dani H.
  Mit Zitat antworten Zitat
scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#2

Re: ICS Port Mapping (WinXP Internetfreigabe)

  Alt 22. Jan 2004, 10:07
Geh mal auf Projekt -> Typbibliothek importieren..., dann wählst du "NetCon 1.0 Type Library" aus und klickst auf Installieren. Somit hast die ganzen Interface-Deklarationen schon mal.
  Mit Zitat antworten Zitat
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: ICS Port Mapping (WinXP Internetfreigabe)

  Alt 22. Jan 2004, 14:04
Meine Güte, all die Möglichkeiten...
Danke vielmals!
Dani H.
  Mit Zitat antworten Zitat
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: ICS Port Mapping (WinXP Internetfreigabe)

  Alt 22. Jan 2004, 19:27
Habs aufgegeben, bin an der Enumeration gescheitert

Naja, jetzt muss halt das JavaScript Beispiel herhalten... benötigte Zeit, um 10 000 Ports freizugeben: 8,3 Stunden

Code:
ICSSC_DEFAULT = 0;

ICSTT_NAME     = 0;
ICSTT_IPADDRESS = 1;

// from netcon.idl
//NCM_SHAREDACCESSHOST_LAN = 8;
//NCM_SHAREDACCESSHOST_RAS = 9;

NAT_PROTOCOL_TCP = 6
NAT_PROTOCOL_UDP = 17

// from netcon.idl
NCCF_SHARED    = 0x0100;  // Connection is shared
NCCF_FIREWALLED = 0x0400;  // Connection is firewalled

WScript.Echo ("Starting....");
Main();
WScript.Echo ("Ending....");

function Main()
{
    var objShare = new ActiveXObject("HNetCfg.HNetShare.1");
    if (objShare == null)
        WScript.Echo ("failed to create HNetCfg.HNetShare object!");
    else
        DoTheWork (objShare);
    return;
}

function DoTheWork (objShare)
{
    var objEveryConnColl = objShare.EnumEveryConnection;
    if (objEveryConnColl == null)
        WScript.Echo ("failed to get EveryConnectionCollection!");
    else {
        // enum INetConnections until props are correct
        var objEveryEnum = new Enumerator (objEveryConnColl);
        if (objEveryEnum == null)
            WScript.Echo ("failed to create Enumerator from EveryConnectionCollection");
        else {
            for (objEveryEnum.moveFirst(); !objEveryEnum.atEnd(); objEveryEnum.moveNext()) {

                var objNetConn = objEveryEnum.item();
                if (objNetConn == null)
                    WScript.Echo ("can't get any net connections!");
                else {
                    var objNetConnProps = objShare.NetConnectionProps (objNetConn);
                    if (objNetConnProps == null)
                        WScript.Echo ("can't get net connection props!");
                    else {
                        if ((objNetConnProps.Characteristics & NCCF_SHARED) ||
                            (objNetConnProps.Characteristics & NCCF_FIREWALLED))
                        {
                            // found one!
                            var objShareConf = objShare.INetSharingConfigurationForINetConnection (objNetConn);
                            if (objShareConf == null)
                                WScript.Echo ("can't make INetSharingConfiguration object!");
                            else {
                         var i;
                        fordings = 1;
                        for (i=1; 1<10001; i++)
                         {AddAsymmetricPortMapping (objShareConf, i, i)};
                            //    WScript.Echo ("added a port mapping named 'Ben's Port Mapping'.");
                            }
                        }
                    }
                }
            }
        }
    }

    // do other work here.
    // when you're done,
    // clean up port mapping
    WScript.Echo ("cleaning up");
    //if (objShareConf != null)
    //    DeletePortMapping (objShareConf, NAT_PROTOCOL_TCP, 555, 444);
}

function AddAsymmetricPortMapping (objShareConf, iPort, ePort)
{
    // in case it exists already....
    DeletePortMapping (objShareConf, NAT_PROTOCOL_TCP, iPort, ePort);

    var objPortMapping = objShareConf.AddPortMapping (
                                "Automated Port Mapping:" + iPort,
                                NAT_PROTOCOL_TCP,
                                iPort,
                                ePort,
                                0,
                                "paps", ICSTT_NAME);
// or                          "192.168.0.2", ICSTT_IPADDRESS);

    if (objPortMapping != null) {
        WScript.Echo ("just added another Port:" + iPort);
       
        objPortMapping.Enable();
        WScript.Echo ("just enabled another port mapping!");
    } else
        WScript.Echo ("failed to add asymmetric port mapping!");
}

function DeletePortMapping (objShareConf, typeProtocol, iExternalPort, iInternalPort)
{
    // enum, deleting match, if any
    var objPMColl = objShareConf.EnumPortMappings (ICSSC_DEFAULT);
    if (objPMColl == null)
        WScript.Echo ("can't get 'every' collection!");
    else {
        var varEnumerator = new Enumerator (objPMColl);
        if (varEnumerator != null) {
            for (varEnumerator.moveFirst(); !varEnumerator.atEnd(); varEnumerator.moveNext()) {
                var objPortMapping = varEnumerator.item();
                if (objPortMapping != null) {
                    var objPMProps = objPortMapping.Properties;
                    if (objPMProps != null) {
                        if ((objPMProps.IPProtocol  == typeProtocol ) &&
                            (objPMProps.ExternalPort == iExternalPort) &&
                            (objPMProps.InternalPort == iInternalPort))
                        {
                            objPortMapping.Delete();
                            // or objShareConf.RemovePortMapping (objPortMapping);

                            WScript.Echo ("just deleted " + typeProtocol + ", " + iExternalPort + ", " + iInternalPort + "!")
                        }
                    }
                }
            }
        }
    }
}
Dani H.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz