Aquí hay un método simple que he usado en Windows 7 a Windows 10. Básicamente, simplemente uso el comando "SI EXISTE" para buscar la carpeta Windows \ System32 \ WDI \ LogFiles. La carpeta WDI existe en cada instalación de Windows desde al menos 7 en adelante, y requiere privilegios de administrador para acceder. La carpeta WDI siempre tiene una carpeta LogFiles dentro. Por lo tanto, ejecutar "SI EXISTE" en la carpeta WDI \ LogFiles devolverá verdadero si se ejecuta como administrador y falso si no se ejecuta como administrador. Esto se puede usar en un archivo por lotes para verificar el nivel de privilegios y pasar a los comandos que desee en función de ese resultado.
Aquí hay un breve fragmento de código de ejemplo:
IF EXIST %SYSTEMROOT%\SYSTEM32\WDI\LOGFILES GOTO GOTADMIN
(Commands for running with normal privileges)
:GOTADMIN
(Commands for running with admin privileges)
Tenga en cuenta que este método asume que los permisos de seguridad predeterminados no se han modificado en la carpeta WDI (lo que es poco probable que suceda en la mayoría de las situaciones, pero consulte la advertencia n. ° 2 a continuación). Incluso en ese caso, es simplemente una cuestión de modificar el código para buscar un archivo / carpeta común diferente que requiera acceso de administrador (System32 \ config \ SAM puede ser un buen candidato alternativo), o incluso podría crear el suyo propio específicamente para eso. propósito.
Sin embargo, hay dos advertencias sobre este método:
Deshabilitar UAC probablemente lo romperá con el simple hecho de que todo se ejecutará como administrador de todos modos.
Intentar abrir la carpeta WDI en el Explorador de Windows y luego hacer clic en "Continuar" cuando se le solicite agregará derechos de acceso permanentes para esa cuenta de usuario, rompiendo así mi método. Si esto sucede, se puede solucionar eliminando la cuenta de usuario de los permisos de seguridad de la carpeta WDI. Si por alguna razón el usuario DEBE poder acceder a la carpeta WDI con el Explorador de Windows, entonces tendrá que modificar el código para verificar una carpeta diferente (como se mencionó anteriormente, crear la suya propia específicamente para este propósito puede ser una buena opción) .
Entonces, admito que mi método no es perfecto ya que puede romperse, pero es un método relativamente rápido que es fácil de implementar, es igualmente compatible con todas las versiones de Windows 7, 8 y 10, y siempre que esté consciente de las advertencias mencionadas. sido 100% efectivo para mí.
echo > somefile
en un directorio que requeriría privilegios de administrador. produciría un archivo como efecto secundario, pero podría verificar si hay colisiones y crear un nombre de archivo único como solución.