Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C / C++ / MFC
  4. Getting NULL value from 'Win32_LogonSession' through WMI [modified]

Getting NULL value from 'Win32_LogonSession' through WMI [modified]

Scheduled Pinned Locked Moved C / C++ / MFC
databasehelpannouncement
32 Posts 4 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S Supriya Tonape

    I had already tried that! It's not working as 'hr1' is getting as S_FALSE error and so 'vtProp1' is NULL for the time being... HRESULT hr1 = pEnumerator1->Next(WBEM_INFINITE, 1, &pclsObj1, &uReturn1); VARIANT vtProp1; hr1 = pclsObj1->Get(_bstr_t(L"Name"), 0, &vtProp1, 0, 0); :confused: Regards, Supriya Tonape

    M Offline
    M Offline
    Mark Salsbery
    wrote on last edited by
    #21

    hmm I tested it and it worked for me... Here's my test code - I took your code and added stuff to the top (copied right from that MSDN sample code) for me to build it...

    int GetRemoteLoggedOnUsers()
    {
    HRESULT hres = WBEM_S_NO_ERROR;

    //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
    //    );
    
    //                  
    //if (FAILED(hres))
    //{
    //    cout << "Failed to initialize security. Error code = 0x" 
    //        << hex << hres << endl;
    //    CoUninitialize();
    //    return 1;                    // Program has failed.
    //}
    
    // Step 3: ---------------------------------------------------
    // 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;
        CoUninitialize();
        return 1;                 // Program has failed.
    }
    
    // Step 4: -----------------------------------------------------
    // Connect to WMI through the IWbemLocator::ConnectServer method
    
    IWbemServices \*pSvc = NULL;
    
    // Connect to the root\\cimv2 namespace with
    // the current user and obtain pointer pSvc
    // to make IWbemServices calls.
    hres = pLoc->ConnectServer(
         \_bstr\_t(L"ROOT\\\\CIMV2"), // 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
    
    S 1 Reply Last reply
    0
    • M Mark Salsbery

      hmm I tested it and it worked for me... Here's my test code - I took your code and added stuff to the top (copied right from that MSDN sample code) for me to build it...

      int GetRemoteLoggedOnUsers()
      {
      HRESULT hres = WBEM_S_NO_ERROR;

      //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
      //    );
      
      //                  
      //if (FAILED(hres))
      //{
      //    cout << "Failed to initialize security. Error code = 0x" 
      //        << hex << hres << endl;
      //    CoUninitialize();
      //    return 1;                    // Program has failed.
      //}
      
      // Step 3: ---------------------------------------------------
      // 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;
          CoUninitialize();
          return 1;                 // Program has failed.
      }
      
      // Step 4: -----------------------------------------------------
      // Connect to WMI through the IWbemLocator::ConnectServer method
      
      IWbemServices \*pSvc = NULL;
      
      // Connect to the root\\cimv2 namespace with
      // the current user and obtain pointer pSvc
      // to make IWbemServices calls.
      hres = pLoc->ConnectServer(
           \_bstr\_t(L"ROOT\\\\CIMV2"), // 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
      
      S Offline
      S Offline
      Supriya Tonape
      wrote on last edited by
      #22

      Mark :))))))))))))))))))))))))))) U are genious ! I am getting the name now :))thank you so much!!!!!!! Have a gr8 day ahead ! Best Regards, Supriya Tonape.

      M S 3 Replies Last reply
      0
      • S Supriya Tonape

        Mark :))))))))))))))))))))))))))) U are genious ! I am getting the name now :))thank you so much!!!!!!! Have a gr8 day ahead ! Best Regards, Supriya Tonape.

        M Offline
        M Offline
        Mark Salsbery
        wrote on last edited by
        #23

        You're welcome. You have a great day as well! :) Cheers, Mark

        Mark Salsbery Microsoft MVP - Visual C++ :java:

        1 Reply Last reply
        0
        • S Supriya Tonape

          Mark :))))))))))))))))))))))))))) U are genious ! I am getting the name now :))thank you so much!!!!!!! Have a gr8 day ahead ! Best Regards, Supriya Tonape.

          S Offline
          S Offline
          Supriya Tonape
          wrote on last edited by
          #24

          I am still wondering what exact mistake i was doing, all flags were set properly.. let me check in detail so I wont make it in future. Thx so much again. ! :) Regards, Supriya Tonape.

          1 Reply Last reply
          0
          • S Supriya Tonape

            Mark :))))))))))))))))))))))))))) U are genious ! I am getting the name now :))thank you so much!!!!!!! Have a gr8 day ahead ! Best Regards, Supriya Tonape.

            M Offline
            M Offline
            Mark Salsbery
            wrote on last edited by
            #25

            Also, if you remove the "WHERE LogonType = 2 OR LogonType = 10" from the outer query, you can see all logon sessions, not just the interactive ones. :) Mark

            Mark Salsbery Microsoft MVP - Visual C++ :java:

            S 1 Reply Last reply
            0
            • M Mark Salsbery

              Also, if you remove the "WHERE LogonType = 2 OR LogonType = 10" from the outer query, you can see all logon sessions, not just the interactive ones. :) Mark

              Mark Salsbery Microsoft MVP - Visual C++ :java:

              S Offline
              S Offline
              Supriya Tonape
              wrote on last edited by
              #26

              yup Mark. You really made my day :) U have gr8 weekend ahead! Best Regards, Supriya.

              M 1 Reply Last reply
              0
              • S Supriya Tonape

                yup Mark. You really made my day :) U have gr8 weekend ahead! Best Regards, Supriya.

                M Offline
                M Offline
                Mark Salsbery
                wrote on last edited by
                #27

                Supriya Tonape wrote:

                U have gr8 weekend ahead!

                Thank you....you too!

                Mark Salsbery Microsoft MVP - Visual C++ :java:

                S 1 Reply Last reply
                0
                • M Mark Salsbery

                  Supriya Tonape wrote:

                  U have gr8 weekend ahead!

                  Thank you....you too!

                  Mark Salsbery Microsoft MVP - Visual C++ :java:

                  S Offline
                  S Offline
                  Supriya Tonape
                  wrote on last edited by
                  #28

                  Also in this code though I have kept 'logontype' as 2 and 10 to get only active user names, but it;s returning me all users those are Disc earlier...

                  M 1 Reply Last reply
                  0
                  • S Supriya Tonape

                    Also in this code though I have kept 'logontype' as 2 and 10 to get only active user names, but it;s returning me all users those are Disc earlier...

                    M Offline
                    M Offline
                    Mark Salsbery
                    wrote on last edited by
                    #29

                    Supriya Tonape wrote:

                    but it;s returning me all users those are Disc earlier..

                    Which means what? :) Mark

                    Mark Salsbery Microsoft MVP - Visual C++ :java:

                    S 1 Reply Last reply
                    0
                    • M Mark Salsbery

                      Supriya Tonape wrote:

                      but it;s returning me all users those are Disc earlier..

                      Which means what? :) Mark

                      Mark Salsbery Microsoft MVP - Visual C++ :java:

                      S Offline
                      S Offline
                      Supriya Tonape
                      wrote on last edited by
                      #30

                      :) actually i will check it.. I just need usernames who has active session.

                      S 1 Reply Last reply
                      0
                      • S Supriya Tonape

                        :) actually i will check it.. I just need usernames who has active session.

                        S Offline
                        S Offline
                        Supriya Tonape
                        wrote on last edited by
                        #31

                        Hi Mark, I just realized that 2nd query which forms like "Associators of {Win32_LogonSession.LogonId=1121214} Where AssocClass=Win32_LoggedOnUser Role=Dependent" works for local machine but when I try to execute it on remote machine after above query executes, at next line it fails... Query execution passes but enumeration fails.. at below line, HRESULT hr1 = pEnumerator1->Next(WBEM_INFINITE, 1, &pclsObj1, &uReturn1); I have been trying different things to check out but no luck, any idea why it cud be happening or is there any change in query while running on remote machine ? Regards, Supriya Tonape

                        E 1 Reply Last reply
                        0
                        • S Supriya Tonape

                          Hi Mark, I just realized that 2nd query which forms like "Associators of {Win32_LogonSession.LogonId=1121214} Where AssocClass=Win32_LoggedOnUser Role=Dependent" works for local machine but when I try to execute it on remote machine after above query executes, at next line it fails... Query execution passes but enumeration fails.. at below line, HRESULT hr1 = pEnumerator1->Next(WBEM_INFINITE, 1, &pclsObj1, &uReturn1); I have been trying different things to check out but no luck, any idea why it cud be happening or is there any change in query while running on remote machine ? Regards, Supriya Tonape

                          E Offline
                          E Offline
                          etaig
                          wrote on last edited by
                          #32

                          Hi All, For some reason, when I add the following lines, to get the StartTime property value, the get function fails. Any ideas?

                          VARIANT vtProp2;
                          HRESULT hr2 = pclsObj1->Get(L"StartTime", 0, &vtProp2, 0, 0);
                          if(hr1 == S_OK)
                          {
                          SYSTEMTIME t;
                          int res = VariantTimeToSystemTime(vtProp2.dblVal, &t);
                          }

                          1 Reply Last reply
                          0
                          Reply
                          • Reply as topic
                          Log in to reply
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes


                          • Login

                          • Don't have an account? Register

                          • Login or register to search.
                          • First post
                            Last post
                          0
                          • Categories
                          • Recent
                          • Tags
                          • Popular
                          • World
                          • Users
                          • Groups