¿Cómo obtengo el nombre de usuario registrado actual cuando ejecuto un archivo por lotes como administrador?

¿Cómo obtengo el nombre de usuario registrado actual cuando ejecuto un archivo por lotes como administrador?

Tengo un archivo por lotes que puedo ejecutar para modificar los permisos de una carpeta en los archivos de programa. Funciona bien cuando el usuario actual tiene privilegios de administrador local, pero para los usuarios que no los tienen, tengo que ingresar la contraseña del administrador del dominio para que se realicen los cambios. Cuando vuelvo a verificar la configuración de permisos en la carpeta, muestra que el administrador del dominio tiene control total sobre dicha carpeta.

¿Cómo me aseguro de que elusuario actual conectado¿Windows obtiene permiso completo?

Esto es lo que tengo como parte de ese archivo por lotes:

icacls "program files directory" /grant %userdomain%\%username%:F

Respuesta1

¿Cómo obtengo el nombre de usuario registrado actual cuando ejecuto un archivo por lotes como administrador?

Funciona bien cuando el usuario actual tiene privilegios de administrador local, pero para los usuarios que no los tienen, tengo que ingresar la contraseña del administrador del dominio para que se realicen los cambios.

Con el siguiente ejemplo, simplemente configura una variable con las variables ambientales que ya tiene en su lógica de comando ICACLS y luego usa esa variable para especificar la cuenta para otorgar los permisos aplicables y pasarla a unLLAMARrutina.

@ECHO OFF
SET Identity=%userdomain%\%username%
CALL :ICACLS "%Identity%"
GOTO EOF

:ICACLS
runas /user:MYDOMAIN\USER icacls "program files directory" /grant %~1:F
GOTO EOF

si tienes problemas

si estas corriendocmd.execon RUNAS y determinas las %userdomain%\%username%variablesno establezca (ni enumere) los valores esperadosque debe usar para que los comandos ICACLS funcionen como se esperaba, luego ejecute los siguientes comandos encmd.exeantes de usar la funcionalidad RUNAS para encontrar elvalores actuales de credenciales de dominio y nombre de usuario registrados que luego puede usar con los comandos ICACLSpara configurar los permisos para esoidentidad\principal de seguridad.

SET Identity=%userdomain%\%username%
ECHO %Identity%

información relacionada