Forum Discussion

ChrisPro's avatar
ChrisPro
Contributor
11 years ago

Know if current user has "admin rights"

Hello,



In TestComplete, I would like to write a test in Jscript to know if current user has "admin rights"?

Is it possible?

1 Reply

  • Hi Chris,



    The solution depends on what you mean by "admin rights" – being a member of the Administrators group, or running something elevated under UAC. These are different things.



    To check if your test script is running elevated, you can use the following HasAdminRights function (based on this script). It returns True for XP admins, but for Vista+ admins it returns True only if TestComplete is also running as Administrator:


    function Main()

    {

      Log.Message("Has admin rights? " + HasAdminRights());

    }



    function HasAdminRights()

    {

      var hasAdminRights;

      try {

        Sys.OleObject("WScript.Shell").RegRead("HKEY_USERS\\S-1-5-19\\Environment\\TEMP");

        hasAdminRights = true;

      }

      catch (e) {

        hasAdminRights = false;

      }

      return hasAdminRights;

    }


    To check if the user is a local admin (a member of the built-in Administrators group), use this. But it doesn't tell you if your test script is running elevated.


    function Main()

    {

      if (IsLocalAdministrator())

        Log.Message(Sys.UserName + " is a local administrator.")

      else

        Log.Message(Sys.UserName + " is not a local administrator.")

    }



    function IsLocalAdministrator()

    {

      var oGroup = GetObject("WinNT://" + Sys.HostName + "/Administrators");



      var enumAdmins = new Enumerator(oGroup.Members());

      for ( ; !enumAdmins.atEnd(); enumAdmins.moveNext())

      {

        if (enumAdmins.item().Name.toLowerCase() == Sys.UserName.toLowerCase())

        {

          return true;

        }

      }

      return false;

    }