Netzeinstellungen ohne Neustart übernehmen



  • Hallo,
    ich habe ein Programm entworfen mit dem man die Netzeinstellungen in der Registry verändern kann. Gibt es einen Befehl mit dem man den PC veranlassen kann, die neuen Einstellungen ohne Neustart anzuwenden? Mit ipconfig /renew geht das ja nur, wenn DHCP aktiviert ist. Irgendetwas ähnliches muss es geben, denn wenn ich den LAN-Adapter in der Netzwerkumgebung in 2000/XP deaktiviere und neu aktiviere, werden die neuen Einstellungen auch übernommen.

    Danke
    Inq.



  • nbtstat -R (großes R und das Leerzeichen ist wichtig) liest die HOSTS-Tabelle neu ein. Ob es die komplette NetzwerkConfig einliest, weiß ich nicht.



  • Vielleicht ist es auch was anderes, aber schau dich mal hier um 🙄



  • @Hepi
    Das mit dem nbtstat -R hat leider nicht geklappt 😞 Trotzdem Danke!

    @flenders
    Ja, die Funktionen sehen schon sehr gut aus. Ich glaub da sind die dabei, die ich brauche. Ich blick nur nicht ganz durch, wie ich sie benutzen kann:

    Header: Declared in Cimwin32.mof.
    Namespace: Included in \root\cimv2.
    

    😕 😕

    Kannst Du mir vielleicht sagen, was ich dabei einbinden muss?

    Danke!



  • Habe da leider auch überhaupt keine Erfahrung (deswegen war ich mir ja auch unsicher, ob das das richtige ist 😉 ).
    Musst halt mal ein bisschen in der MSDN-Library stöbern - z.B. hier oder evtl google zu Rate ziehen 🙄



  • Wow!
    Ich glaube ohne entsprechende Literatur ist das mit dem WMI nicht so leicht zu machen. Das erfordert schon mal sehr viel Vorarbeit bis man die eigentliche Methode überhaupt ausführen kann. Ganz zu schweigen davon, dass man erst mal das MS SDK runterladen muss, um die *.lib Dateien zu bekommen.

    //COM initialisieren
       HRESULT hres;
       hres = CoInitializeEx(0, COINIT_MULTITHREADED);
       if (FAILED(hres)){
          Memo1->Lines->Add("Fehler: "+hres);
       }
       //COM Security setzen
    
       hres =  CoInitializeSecurity(
        NULL,                        // Security descriptor
        -1,                          // COM negotiates authentication service
        NULL,                        // Authentication services
        NULL,                        // Reserved
        RPC_C_AUTHN_LEVEL_DEFAULT,   // Default authentication level for proxies
        RPC_C_IMP_LEVEL_IMPERSONATE, // Default Impersonation level for proxies
        NULL,                        // Authentication info
        EOAC_NONE,                   // Additional capabilities of the client or server
        NULL);                       // Reserved
    
       if (FAILED(hres)){
          Memo1->Lines->Add("Fehler: "+hres); // Program has failed.
       }
    
       //Verb. zum Namespace
    
       IWbemLocator *pLoc = 0;
       hres = CoCreateInstance(CLSID_WbemLocator, 0,
            CLSCTX_INPROC_SERVER, IID_IWbemLocator, (LPVOID *) &pLoc);
    
        if (FAILED(hres)){
            Memo1->Lines->Add("Fehler: "+hres); // Program has failed.
            CoUninitialize();
        }
    
        IWbemServices *pSvc = 0;
    
        // Connect to the root\default namespace with the current user.
        hres = pLoc->ConnectServer(L"ROOT\\cimv2", NULL, NULL, 0, NULL, 0, 0, &pSvc);
        if (FAILED(hres)){
            Memo1->Lines->Add("Fehler: "+hres); // Program has failed.
            pLoc->Release();
            CoUninitialize();
        }
        Memo1->Lines->Add("Mit WMI Verbunden"+hres);
    
        // Set the proxy so that impersonation of the client occurs.
        hres = CoSetProxyBlanket(pSvc,
           RPC_C_AUTHN_WINNT,
           RPC_C_AUTHZ_NONE,
           NULL,
           RPC_C_AUTHN_LEVEL_CALL,
           RPC_C_IMP_LEVEL_IMPERSONATE,
           NULL,
           EOAC_NONE
        );
    
        if (FAILED(hres)){
          Memo1->Lines->Add("Fehler: "+hres); // Program has failed.
          pSvc->Release();
          pLoc->Release();
          CoUninitialize();
        }
    
        //Eigentliche Methoden
    pSvc->ExecMethod("Win32_NetworkAdapterConfiguration",
                      ...
                     );
    

    Also ich bin daran gescheitert, dass ich nicht verstehe, wie man der eigentlichen Methode die InputParameter übergibt...

    Ich muss kapitulieren
    😞 😞 😞


Anmelden zum Antworten