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;
}