Ask Learn
Preview
Please sign in to use this experience.
Sign inThis browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
In my RunAs... and MakeMeAdmin posts, I recommend making your admin command shells visually different to set them apart from non-admin ones. You can change the default console window color on a per-account basis, but that doesn't help when the same account may be used in both admin and non-admin contexts (such as with Vista's UAC admin-approval mode). You can use the cmd.exe /T command-line option, or its built-in COLOR command, but it works only if you remember to use it each and every time.
Here's a way to make the differentiation happen with a one-time, one-line configuration change on your system, that will work on all CMD.EXE shells you run. The idea is to run a non-destructive command that requires admin privileges from a CMD autorun location, test for success and set the console's color accordingly. You can also change the title at the same time.
This can probably use some refinement. For the non-destructive admin operation on Windows XP/2003, I suggest "bootcfg /query"; on Windows Vista, I suggest "bcdedit /enum". The autorun location I've been playing with is:
[HKLM\Software\Microsoft\Command Processor]
"AutoRun" (REG_SZ)
The command syntax you can set the "AutoRun" value to for Windows XP/2003 is:
bootcfg /query >nul 2>nul && (color FC && title ADMIN) || (color 07 && title NONADMIN)
and for Windows Vista, set it to:
bcdedit /enum >nul 2>nul && (color FC && title ADMIN) || (color 07 && title NONADMIN)
Any output or error message is redirected to "nul" so you don't see it. If the command succeeds ( && ), you're running with admin/elevated privileges; the console color will change to bright-red-on-white (FC) and the title changed to "ADMIN". If the command fails ( || ), the console color will be white-on-black (07) and the title changed to "NONADMIN". Feel free to change the colors or titles to suit your taste.
All that stuff works only for CMD.EXE. For Windows PowerShell, take a look at these:
https://www.interact-sw.co.uk/iangblog/2007/02/09/pshdetectelevation
https://www.leastprivilege.com/AdminTitleBarForPowerShell.aspx
Also for PowerShell -- Staffan Gustafsson converted MakeMeAdmin to a PowerShell script:
https://groups.archivesat.com/Windows_PowerShell/thread246430.htm
[2007-06-25: Update posted here .]
Anonymous
February 22, 2007
PingBack from http://blogs.msdn.com/aaron_margosis/archive/2005/04/18/TableOfContents.aspx
Anonymous
February 22, 2007
You could also do something like this:
cacls %windir%system32configsystemprofile >nul 2>nul && echo admin || echo non-admin
This should work on both XP and Vista.
Anonymous
February 23, 2007
Aaron:
Just an FYI, there's an error in MakeMeAdmin.ps1 that you referenced. The "if" statement in the SuPowershell function should read "if($SuAccount)" not "if(!$SuAccount)".
Otherwise, that's awesome, thanks for point it out!
Harris
Harris -- thanks, yeah, that didn't look right to me either. I tried to post your comments as a reply on that page, but I don't know whether it went through or not.
-- Aaron
Anonymous
February 23, 2007
Put the bare command
COLOR FC
in HKCUsoftwaremicrosoftCommand Processor for the admin account only. No test required.
Of course if you have several admin accounts that you use -- e.g. a local one and a domain one -- put it in each one.
On my own machine I sometimes run in an account which is not a Domain admin but is an admin of the local machine, and I need to distinguish. The BOOTCFG trick won't distinguish between them .. so I would depend on HKCU.
Ross: The problem here is that with MakeMeAdmin on XP/2003 and with UAC's Admin-Approval Mode on Vista, you can have two CMD windows side by side running as the same user, one with admin/elevated permissions and the other not. Tying to HKCU won't help.
-- Aaron
Anonymous
February 25, 2007
I have to point out that the representation groups.archivesat.com of the script I wrote is incorrect.
You can see a correct version at via google groups at http://groups.google.com/group/microsoft.public.windows.powershell/browse_frm/thread/bc7fb9969347dd4a/84ab68ebb0f486f3?lnk=st&q=makemeadmin.ps1&rnum=1#84ab68ebb0f486f3
On ArchiveSat, the critical lines says:
if (!$SuAccount)
$StartInfo = new-object System.Diagnostics.ProcessStartInfo
On Google:
if (!$SuAccount){
return
}
Makes quite a difference, doesn't it? :)
/Staffan
Anonymous
February 26, 2007
>> Ross: The problem here is that with MakeMeAdmin on XP/2003 and with UAC's Admin-Approval Mode on Vista, you can have two CMD windows side by side running as the same user, one with admin/elevated permissions and the other not. Tying to HKCU won't help. <<
Aaron: Good point, and if I used MakeMeAdmin like I'm supposed to, I'd have hit that myself. :-) Well, is there some kind of test that can distinguish between local machine admin and domain admin?
Ross: Perhaps something like "dir \mydcc$", replacing "mydc" with the name of a domain controller that's always online? Or if it works in your environment, "dir %USERDNSDOMAIN%c$"? (Note that %USERDNSDOMAIN% should expand to nothing for local accounts -- which works for this purpose since you want local accounts to fail the test.)
Let me know whether this works for you -- I plan to post an update on this topic in the next few days.
HTH
-- Aaron
Anonymous
February 27, 2007
The comment has been removed
Anonymous
March 16, 2007
Here is a way to change the color if you are running under a Domain Administrator context.
"c:program fileswindows resource kitstoolsifmember.exe" "mydomaindomain admins" >nul 2>nul && (color 07) || (color FC)
-or you can copy ifmember.exe to somewhere in your path. Of course, change mydomain to the name of your domain.
FYI to readers who don't already know this: "ifmember.exe" comes with the Windows Server 2003 Resource Kit Tools, freely downloadable from microsoft.com.
-- Aaron
Anonymous
March 20, 2007
The comment has been removed
Anonymous
April 05, 2007
The comment has been removed
Anonymous
June 25, 2007
Improvements on my earlier post about setting color and title for CMD (and PowerShell) windows, based on admin/elevation status
Anonymous
June 27, 2007
Improvements on my earlier post about setting color and title for CMD (and PowerShell) windows, based on admin/elevation status
Anonymous
August 23, 2008
1fThank's.3k I compleatly disagree with last post . viw
<a href="http://skuper.ru">паркет</a> 3b
Anonymous
October 13, 2008
Hi, Aaron! I wish to thank you for your great "non admin" postings !
What command would you suggest for use on Windows 2000 (where bootcfg isn't available) to distinguish between admin/non admin status ?
Also, I need something which will not depend on NTFS permissions.
Thanks once more
--
Czerno
Anonymous
October 13, 2008
The comment has been removed
Anonymous
October 29, 2009
In Windows 7, BOOTCFG always always returns errorlevel 1, even when it succeeds when running as Administrator. Here's a refinement:
(BOOTCFG /query 2>nul |FINDSTR Entries >nul) && (COLOR 47) || (COLOR 07 & echo>nul)
This uses FINDSTR to search the BOOTCFG output for the word "Entries", which it should always have if it succeeds. It also adds the "echo>nul" for the non-admin case, to clear the errorlevel.
Windows 7 already adds the "Administrator" to the title bar, but if you still need the color change, here it is.
Anonymous
February 03, 2010
There's also IsAdmin.exe (http://www.westmesatech.com/wast.html). It returns 0 if the current user is not a member of Administrators, 1 if the user is an elevated administrator, or 2 if the user is a non-elevated administrator.
Bill Stewart
Anonymous
May 27, 2014
I have had trouble getting the above commands to work for me on Windows 7. However, the following seems to work for me.
(if not %SESSIONNAME%==Console color 47)
Please sign in to use this experience.
Sign in