programmatic way with BAT file determining if elevated command prompt


  1. Posts : 18
    Windows 7 Pro 64-bit
       #1

    programmatic way with BAT file determining if elevated command prompt


    Is there any programmatic way within a BATch file of determining whether it has been started from an elevated command prompt (run as Administrator) or a normal command prompt?

    I note the difference between the Current Directory at start of the BATch file, but wonder if there is a better way.

    When in elevated mode I don't get a UAC prompt when using DISKPART.
    The UAC prompt only happens when running it in a normal command prompt window.

    Are you aware of any command which simultaneously would

    • give a different errorlevel when executed in an elevated command prompt than in a normal command prompt, and
    • not produce a UAC prompt in normal mode?
    If this is the case, unless I can find something to distinguish between elevated command prompts and normal command prompts, then I will have to try the %cd% variable at the start of BATch files, to see whether it is consistent even across user modifications of the command prompt shortcut's Target Directory...
    Last edited by Brink; 16 Oct 2010 at 13:48.
      My Computer


  2. Posts : 18
    Windows 7 Pro 64-bit
    Thread Starter
       #2

    I can answer my own question, as below
    Code:
    @echo off
    
    :: +----------+
    :: I Elevated I  Test whether this BATch file / Command Prompt
    :: +----------+    in running in Elevated mode or Normal mode
    
    setlocal
    
    :: method (applicable to Windows 7, and maybe Vista)
    ::  try to write a zero-byte file to a system directory
    ::    if successful, we are in Elevated mode and delete the file
    ::    if unsuccessful, avoid the "Access is denied" message
    
    :: arbitrary choice of system directory and filename
    set tst="%windir%\$del_me$"
    
    :: the first brackets are required to avoid getting the message,
    ::   even though 2 is redirected to nul.  no, I don't know why.
    (type nul>%tst%) 2>nul && (del %tst% & set elev=t) || (set elev=)
    
    if defined elev (echo Elevated mode) else (echo Normal mode)
    
    endlocal
      My Computer


 

  Related Discussions
Our Sites
Site Links
About Us
Windows 7 Forums is an independent web site and has not been authorized, sponsored, or otherwise approved by Microsoft Corporation. "Windows 7" and related materials are trademarks of Microsoft Corp.

© Designer Media Ltd
All times are GMT -5. The time now is 17:52.
Find Us