Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Call another application with administrator priviliges
Forum Updated to NodeBB v4.3 + New Features

Call another application with administrator priviliges

Scheduled Pinned Locked Moved Solved General and Desktop
14 Posts 3 Posters 5.5k Views 4 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.
  • km2442K Offline
    km2442K Offline
    km2442
    wrote on last edited by
    #5

    Yes, my HelperApp is starting with adminstrator privileges, but I cant call it from main application to show UAC (give privileges), send arguments, and get return code. That's the problem. The way with console don't work with all computers.

    1 Reply Last reply
    0
    • SGaistS Offline
      SGaistS Offline
      SGaist
      Lifetime Qt Champion
      wrote on last edited by
      #6

      Did you took a look at QProcess ?

      Interested in AI ? www.idiap.ch
      Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

      1 Reply Last reply
      0
      • km2442K Offline
        km2442K Offline
        km2442
        wrote on last edited by
        #7

        Yes, I have looked, but I can't call my helpr application with admin by QProcess....

        1 Reply Last reply
        0
        • mrjjM Offline
          mrjjM Offline
          mrjj
          Lifetime Qt Champion
          wrote on last edited by
          #8

          hi
          Its not possible to use runas for it ?

          void MainWindow::on_pushButton_released() {
          QString exeFileName;
          exeFileName = "notepad.exe";
          #ifdef Q_OS_WIN
          // Requesting elevation
          int result = (int)::ShellExecuteA(0, "runas", exeFileName.toUtf8().constData(), 0, 0, SW_SHOWNORMAL);
          if (result <= 32) {
          // error handling
          }
          #endif
          }

          1 Reply Last reply
          2
          • km2442K Offline
            km2442K Offline
            km2442
            wrote on last edited by
            #9

            @mrjj Hi, I can run my helper app (UAC is showing) with code:

            QString exeFileName = QDir::toNativeSeparators("\"" + QDir::currentPath() + "/app.exe\"");
                    int result = (int)::ShellExecuteA(0, "runas", exeFileName.toUtf8().constData(), 0, 0, SW_SHOWNORMAL);
            

            but, I can't provide any arguments with this method, moreover I'm getting unexpected return code: 42.

            I have tried option with arguments:

            QString exeFileName = QDir::toNativeSeparators("\"" + QDir::currentPath() + "/app.exe\" arg1 arg2");
                    int result = (int)::ShellExecuteA(0, "runas", exeFileName.toUtf8().constData(), 0, 0, SW_SHOWNORMAL);
            
            1 Reply Last reply
            1
            • mrjjM Offline
              mrjjM Offline
              mrjj
              Lifetime Qt Champion
              wrote on last edited by
              #10

              @km2442 said:
              Hi, do you use the right place for the paramters?
              They should not be part of the exename/path

              ShellExecuteA(0, "runas", exeFileName.toUtf8().constData(),** THIS IS FOR PARAMS**, 0, SW_SHOWNORMAL);

              https://msdn.microsoft.com/en-us/library/windows/desktop/bb762153(v=vs.85).aspx

              Else im not sure what u mean with
              " I can't provide any arguments "

              1 Reply Last reply
              1
              • km2442K Offline
                km2442K Offline
                km2442
                wrote on last edited by
                #11

                @mrjj Ok, Now, your solution is working, but there is one problem: I'm getting Return Code 42 all time. My app is sending code 1 or 24 or 25. Do you know how to fix it?

                mrjjM 1 Reply Last reply
                0
                • km2442K km2442

                  @mrjj Ok, Now, your solution is working, but there is one problem: I'm getting Return Code 42 all time. My app is sending code 1 or 24 or 25. Do you know how to fix it?

                  mrjjM Offline
                  mrjjM Offline
                  mrjj
                  Lifetime Qt Champion
                  wrote on last edited by mrjj
                  #12

                  @km2442
                  Super.
                  I dont think it can return the "return value"
                  Docs says
                  "If the function succeeds, it returns a value greater than 32. "

                  For return value , I think u need to use ( the Ex version)
                  https://msdn.microsoft.com/en-us/library/windows/desktop/bb762154(v=vs.85).aspx
                  and use
                  https://msdn.microsoft.com/en-us/library/windows/desktop/ms683189(v=vs.85).aspx
                  for the return code.

                  SHELLEXECUTEINFO ShExecInfo = {0};
                  ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
                  ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
                  ShExecInfo.hwnd = NULL;
                  ShExecInfo.lpVerb =  L"runas";
                  ShExecInfo.lpFile = "c:\\MyProgram.exe";        
                  ShExecInfo.lpParameters = "";   
                  ShExecInfo.lpDirectory = NULL;
                  ShExecInfo.nShow = SW_SHOW;
                  ShExecInfo.hInstApp = NULL; 
                  ShellExecuteEx(&ShExecInfo);
                  WaitForSingleObject(ShExecInfo.hProcess,INFINITE);
                  

                  (code not tested)

                  1 Reply Last reply
                  1
                  • km2442K Offline
                    km2442K Offline
                    km2442
                    wrote on last edited by
                    #13

                    Thank you, your solution is working :)

                    1 Reply Last reply
                    1
                    • mrjjM Offline
                      mrjjM Offline
                      mrjj
                      Lifetime Qt Champion
                      wrote on last edited by
                      #14

                      super :)
                      thanks for the feedback.

                      1 Reply Last reply
                      0

                      • Login

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • Users
                      • Groups
                      • Search
                      • Get Qt Extensions
                      • Unsolved