Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8691421
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 13, 20262026-06-13T00:07:07+00:00 2026-06-13T00:07:07+00:00

Through VBScript here we can enumerate all network connections ( visible or not visible

  • 0

Through VBScript here we can enumerate all network connections ( visible or not visible ). But I cannot find any C++ or COM codes to do this.

strServer = "."

Set objWMI = GetObject("winmgmts://" & strServer & "/root\Microsoft\HomeNet")
Set objInstances = objWMI.InstancesOf("HNet_ConnectionProperties",48)

On Error Resume Next
For Each objInstance in objInstances
    With objInstance
        WScript.Echo .Connection
        WScript.Echo .IsIcsPrivate
        WScript.Echo .IsIcsPublic
    End With
On Error Goto 0
Next
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-13T00:07:08+00:00Added an answer on June 13, 2026 at 12:07 am

    This is the Equivalent C++ Code to access the HNet_ConnectionProperties WMI Class

    #include "stdafx.h"
    #define _WIN32_DCOM
    #include <iostream>
    using namespace std;
    #include <comdef.h>
    #include <Wbemidl.h>
    # pragma comment(lib, "wbemuuid.lib")
    
    //CREDENTIAL structure
    //http://msdn.microsoft.com/en-us/library/windows/desktop/aa374788%28v=vs.85%29.aspx
    #define CRED_MAX_USERNAME_LENGTH            513
    #define CRED_MAX_CREDENTIAL_BLOB_SIZE       512
    #define CREDUI_MAX_USERNAME_LENGTH CRED_MAX_USERNAME_LENGTH
    #define CREDUI_MAX_PASSWORD_LENGTH (CRED_MAX_CREDENTIAL_BLOB_SIZE / 2)
    
    
    #pragma argsused
    int main(int argc, char* argv[])
    {
        wchar_t pszName[CREDUI_MAX_USERNAME_LENGTH+1] = L"user";
        wchar_t pszPwd[CREDUI_MAX_PASSWORD_LENGTH+1]  = L"password";
        BSTR strNetworkResource;
        //To use a WMI remote connection set localconn to false and configure the values of the pszName, pszPwd and the name of the remote machine in strNetworkResource
        bool localconn = true;  
        strNetworkResource = localconn ?  L"\\\\.\\root\\Microsoft\\HomeNet" : L"\\\\remote--machine\\root\\Microsoft\\HomeNet";
    
        COAUTHIDENTITY *userAcct =  NULL ;
        COAUTHIDENTITY authIdent;
    
        // Initialize COM. ------------------------------------------
    
        HRESULT hres;
        hres =  CoInitializeEx(0, COINIT_MULTITHREADED);
        if (FAILED(hres))
        {
            cout << "Failed to initialize COM library. Error code = 0x" << hex << hres << endl;
            cout << _com_error(hres).ErrorMessage() << endl;
            cout << "press enter to exit" << endl;
            cin.get();      
            return 1;                  // Program has failed.
        }
    
        // Set general COM security levels --------------------------
    
        if (localconn)
            hres =  CoInitializeSecurity(
                NULL,
                -1,                          // COM authentication
                NULL,                        // Authentication services
                NULL,                        // Reserved
                RPC_C_AUTHN_LEVEL_DEFAULT,   // Default authentication
                RPC_C_IMP_LEVEL_IMPERSONATE, // Default Impersonation
                NULL,                        // Authentication info
                EOAC_NONE,                   // Additional capabilities
                NULL                         // Reserved
                );
        else
            hres =  CoInitializeSecurity(
                NULL,
                -1,                          // COM authentication
                NULL,                        // Authentication services
                NULL,                        // Reserved
                RPC_C_AUTHN_LEVEL_DEFAULT,   // Default authentication
                RPC_C_IMP_LEVEL_IDENTIFY,    // Default Impersonation
                NULL,                        // Authentication info
                EOAC_NONE,                   // Additional capabilities
                NULL                         // Reserved
                );
    
        if (FAILED(hres))
        {
            cout << "Failed to initialize security. Error code = 0x" << hex << hres << endl;
            cout << _com_error(hres).ErrorMessage() << endl;
            CoUninitialize();
            cout << "press enter to exit" << endl;
            cin.get();      
            return 1;                    // Program has failed.
        }
    
        // Obtain the initial locator to WMI -------------------------
    
        IWbemLocator *pLoc = NULL;
        hres = CoCreateInstance(CLSID_WbemLocator, 0, CLSCTX_INPROC_SERVER, IID_IWbemLocator, (LPVOID *) &pLoc);
    
        if (FAILED(hres))
        {
            cout << "Failed to create IWbemLocator object." << " Err code = 0x" << hex << hres << endl;
            cout << _com_error(hres).ErrorMessage() << endl;
            CoUninitialize();       
            cout << "press enter to exit" << endl;
            cin.get();      
            return 1;                 // Program has failed.
        }
    
        // Connect to WMI through the IWbemLocator::ConnectServer method
    
        IWbemServices *pSvc = NULL;
    
        if (localconn)  
            hres = pLoc->ConnectServer(
                 _bstr_t(strNetworkResource),      // Object path of WMI namespace
                 NULL,                    // User name. NULL = current user
                 NULL,                    // User password. NULL = current
                 0,                       // Locale. NULL indicates current
                 NULL,                    // Security flags.
                 0,                       // Authority (e.g. Kerberos)
                 0,                       // Context object
                 &pSvc                    // pointer to IWbemServices proxy
                 );
        else
            hres = pLoc->ConnectServer(
                _bstr_t(strNetworkResource),  // Object path of WMI namespace
                _bstr_t(pszName),             // User name
                _bstr_t(pszPwd),              // User password
                NULL,                // Locale
                NULL,                // Security flags
                NULL,                // Authority
                NULL,                // Context object
                &pSvc                // IWbemServices proxy
                );
    
        if (FAILED(hres))
        {
            cout << "Could not connect. Error code = 0x" << hex << hres << endl;    
            cout << _com_error(hres).ErrorMessage() << endl;
            pLoc->Release();
            CoUninitialize();
            cout << "press enter to exit" << endl;
            cin.get();          
            return 1;                // Program has failed.
        }
    
        cout << "Connected to root\\Microsoft\\HomeNet WMI namespace" << endl;
    
        // Set security levels on the proxy -------------------------
        if (localconn)
            hres = CoSetProxyBlanket(
               pSvc,                        // Indicates the proxy to set
               RPC_C_AUTHN_WINNT,           // RPC_C_AUTHN_xxx
               RPC_C_AUTHZ_NONE,            // RPC_C_AUTHZ_xxx
               NULL,                        // Server principal name
               RPC_C_AUTHN_LEVEL_CALL,      // RPC_C_AUTHN_LEVEL_xxx
               RPC_C_IMP_LEVEL_IMPERSONATE, // RPC_C_IMP_LEVEL_xxx
               NULL,                        // client identity
               EOAC_NONE                    // proxy capabilities
            );
        else
        {
            // Create COAUTHIDENTITY that can be used for setting security on proxy
            memset(&authIdent, 0, sizeof(COAUTHIDENTITY));
            authIdent.PasswordLength = wcslen (pszPwd);
            authIdent.Password = (USHORT*)pszPwd;
            authIdent.User = (USHORT*)pszName;
            authIdent.UserLength = wcslen(pszName);
            authIdent.Domain = 0;
            authIdent.DomainLength = 0;
            authIdent.Flags = SEC_WINNT_AUTH_IDENTITY_UNICODE;
            userAcct = &authIdent;
    
            hres = CoSetProxyBlanket(
               pSvc,                           // Indicates the proxy to set
               RPC_C_AUTHN_DEFAULT,            // RPC_C_AUTHN_xxx
               RPC_C_AUTHZ_DEFAULT,            // RPC_C_AUTHZ_xxx
               COLE_DEFAULT_PRINCIPAL,         // Server principal name
               RPC_C_AUTHN_LEVEL_PKT_PRIVACY,  // RPC_C_AUTHN_LEVEL_xxx
               RPC_C_IMP_LEVEL_IMPERSONATE,    // RPC_C_IMP_LEVEL_xxx
               userAcct,                       // client identity
               EOAC_NONE                       // proxy capabilities
            );
        }
    
        if (FAILED(hres))
        {
            cout << "Could not set proxy blanket. Error code = 0x" << hex << hres << endl;
            cout << _com_error(hres).ErrorMessage() << endl;
            pSvc->Release();
            pLoc->Release();
            CoUninitialize();
            cout << "press enter to exit" << endl;
            cin.get();      
            return 1;               // Program has failed.
        }
    
        // Use the IWbemServices pointer to make requests of WMI ----
    
        IEnumWbemClassObject* pEnumerator = NULL;
        hres = pSvc->ExecQuery( L"WQL", L"SELECT * FROM HNet_ConnectionProperties",
        WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY, NULL, &pEnumerator);
    
        if (FAILED(hres))
        {
            cout << "ExecQuery failed" << " Error code = 0x"    << hex << hres << endl;
            cout << _com_error(hres).ErrorMessage() << endl;
            pSvc->Release();
            pLoc->Release();
            CoUninitialize();
            cout << "press enter to exit" << endl;
            cin.get();      
            return 1;               // Program has failed.
        }
    
        // Secure the enumerator proxy
        if (!localconn)
        {
    
            hres = CoSetProxyBlanket(
                pEnumerator,                    // Indicates the proxy to set
                RPC_C_AUTHN_DEFAULT,            // RPC_C_AUTHN_xxx
                RPC_C_AUTHZ_DEFAULT,            // RPC_C_AUTHZ_xxx
                COLE_DEFAULT_PRINCIPAL,         // Server principal name
                RPC_C_AUTHN_LEVEL_PKT_PRIVACY,  // RPC_C_AUTHN_LEVEL_xxx
                RPC_C_IMP_LEVEL_IMPERSONATE,    // RPC_C_IMP_LEVEL_xxx
                userAcct,                       // client identity
                EOAC_NONE                       // proxy capabilities
                );
    
            if (FAILED(hres))
            {
                cout << "Could not set proxy blanket on enumerator. Error code = 0x" << hex << hres << endl;
                cout << _com_error(hres).ErrorMessage() << endl;
                pEnumerator->Release();
                pSvc->Release();
                pLoc->Release();
                CoUninitialize();
                cout << "press enter to exit" << endl;
                cin.get();              
                return 1;               // Program has failed.
            }
        }
    
        // Get the data from the WQL sentence
        IWbemClassObject *pclsObj = NULL;
        ULONG uReturn = 0;
    
        while (pEnumerator)
        {
            HRESULT hr = pEnumerator->Next(WBEM_INFINITE, 1, &pclsObj, &uReturn);
    
            if(0 == uReturn || FAILED(hr))
              break;
    
            VARIANT vtProp;
    
                    hr = pclsObj->Get(L"Connection", 0, &vtProp, 0, 0);// Reference
                    if (!FAILED(hr))
                    {
                      if ((vtProp.vt==VT_NULL) || (vtProp.vt==VT_EMPTY))
                        wcout << "Connection : " << ((vtProp.vt==VT_NULL) ? "NULL" : "EMPTY") << endl;
                      else
                         wcout << "Connection : " << vtProp.bstrVal << endl;
                    }
                    VariantClear(&vtProp);
    
                    hr = pclsObj->Get(L"IsBridge", 0, &vtProp, 0, 0);// Boolean
                    if (!FAILED(hr))
                    {
                      if ((vtProp.vt==VT_NULL) || (vtProp.vt==VT_EMPTY))
                        wcout << "IsBridge : " << ((vtProp.vt==VT_NULL) ? "NULL" : "EMPTY") << endl;
                      else
                        wcout << "IsBridge : " << (vtProp.boolVal ? "True" : "False") << endl;
                    }
                    VariantClear(&vtProp);
    
                    hr = pclsObj->Get(L"IsBridgeMember", 0, &vtProp, 0, 0);// Boolean
                    if (!FAILED(hr))
                    {
                      if ((vtProp.vt==VT_NULL) || (vtProp.vt==VT_EMPTY))
                        wcout << "IsBridgeMember : " << ((vtProp.vt==VT_NULL) ? "NULL" : "EMPTY") << endl;
                      else
                        wcout << "IsBridgeMember : " << (vtProp.boolVal ? "True" : "False") << endl;
                    }
                    VariantClear(&vtProp);
    
                    hr = pclsObj->Get(L"IsFirewalled", 0, &vtProp, 0, 0);// Boolean
                    if (!FAILED(hr))
                    {
                      if ((vtProp.vt==VT_NULL) || (vtProp.vt==VT_EMPTY))
                        wcout << "IsFirewalled : " << ((vtProp.vt==VT_NULL) ? "NULL" : "EMPTY") << endl;
                      else
                        wcout << "IsFirewalled : " << (vtProp.boolVal ? "True" : "False") << endl;
                    }
                    VariantClear(&vtProp);
    
                    hr = pclsObj->Get(L"IsIcsPrivate", 0, &vtProp, 0, 0);// Boolean
                    if (!FAILED(hr))
                    {
                      if ((vtProp.vt==VT_NULL) || (vtProp.vt==VT_EMPTY))
                        wcout << "IsIcsPrivate : " << ((vtProp.vt==VT_NULL) ? "NULL" : "EMPTY") << endl;
                      else
                        wcout << "IsIcsPrivate : " << (vtProp.boolVal ? "True" : "False") << endl;
                    }
                    VariantClear(&vtProp);
    
                    hr = pclsObj->Get(L"IsIcsPublic", 0, &vtProp, 0, 0);// Boolean
                    if (!FAILED(hr))
                    {
                      if ((vtProp.vt==VT_NULL) || (vtProp.vt==VT_EMPTY))
                        wcout << "IsIcsPublic : " << ((vtProp.vt==VT_NULL) ? "NULL" : "EMPTY") << endl;
                      else
                        wcout << "IsIcsPublic : " << (vtProp.boolVal ? "True" : "False") << endl;
                    }
                    VariantClear(&vtProp);
    
    
            pclsObj->Release();
            pclsObj=NULL;
        }
    
        // Cleanup
    
        pSvc->Release();
        pLoc->Release();
        pEnumerator->Release();
        if (pclsObj!=NULL)
         pclsObj->Release();
    
        CoUninitialize();
        cout << "press enter to exit" << endl;
        cin.get();
        return 0;   // Program successfully completed.
    }
    

    Also consider use a tool like the Delphi WMI Code Creator, which can help you to generate c++ code to access the WMI.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

First of all, I am not from programming background and totally new to VBscript.
Could anyone give me example code to access the command line through VBScript? I
In PowerDesigner v12, how would one, through use of VBScript, assign a TriggerTemplate to
I have a C++ application that can take commands through a named pipe. Is
Ok, Ive got a vbscript that iterates through a directory and its subfolders to
I need to use VBScript to loop through a set of registry string value
I am creating a VBScript to automatically execute my favorite DOS games through DOSBox.
im trying to make a vbscript that would list all contents in dir and
I need to author a .NET assembly that is visible as a COM object
There is a VBScript (.vbs) script that someone made here at my company. It

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.