Solución:
Este truco solo requiere un comando: escriba net session
en el símbolo del sistema.
Si usted es NO es un administrador, recibe un mensaje de acceso denegado.
System error 5 has occurred.
Access is denied.
Si tu Es un administrador, recibe un mensaje diferente, siendo el más común:
There are no entries in the list.
Desde MS Technet:
Utilizada sin parámetros, net session muestra información sobre todas las sesiones con la computadora local.
APÉNDICE: Para Windows 8 esto no funcionará; vea esta excelente respuesta en su lugar.
Encontré esta solución aquí: http://www.robvanderwoude.com/clevertricks.php
AT > NUL
IF %ERRORLEVEL% EQU 0 (
ECHO you are Administrator
) ELSE (
ECHO you are NOT Administrator. Exiting...
PING 127.0.0.1 > NUL 2>&1
EXIT /B 1
)
Suponiendo que eso no funcione y ya que estamos hablando de Win7, podría usar lo siguiente en Powershell si es adecuado:
$principal = new-object System.Security.Principal.WindowsPrincipal([System.Security.Principal.WindowsIdentity]::GetCurrent())
$principal.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator)
Si no es así (y probablemente no, ya que propuso explícitamente archivos por lotes), entonces podría escribir lo anterior en .NET y devolver un código de salida de un exe basado en el resultado para que lo use su archivo por lotes.
Me gusta la sugerencia de Rushyo de usar AT, pero esta es otra opción:
whoami /groups | findstr /b BUILTINAdministrators | findstr /c:"Enabled group" && goto :isadministrator
Este enfoque también le permitiría distinguir entre un administrador no administrador y un administrador no elevado si así lo desea. Los administradores no elevados todavía tienen BUILTIN Administrators en la lista de grupos, pero no está habilitado.
Sin embargo, esto no funcionará en algunos sistemas de idiomas distintos del inglés. En su lugar, intente
whoami /groups | findstr /c:" S-1-5-32-544 " | findstr /c:" Enabled group" && goto :isadministrator
(Esto debería funcionar en Windows 7, pero no estoy seguro de las versiones anteriores).