Como obtenho o nome de usuário conectado ao executar um arquivo em lote como administrador

Como obtenho o nome de usuário conectado ao executar um arquivo em lote como administrador

Eu tenho um arquivo em lote que posso executar para modificar as permissões de uma pasta nos arquivos de programas. Funciona bem quando o usuário atual tem privilégios de administrador local, mas para usuários que não têm, preciso inserir a senha do administrador do domínio para que as alterações ocorram. Quando verifico novamente a configuração de permissões na pasta, isso mostra que o administrador do domínio tem controle total sobre a pasta.

Como posso garantir que ousuário atual conectadoo Windows obtém permissão total?

Isto é o que tenho como parte desse arquivo em lote:

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

Responder1

Como obtenho o nome de usuário conectado ao executar um arquivo em lote como administrador

Funciona bem quando o usuário atual tem privilégios de administrador local, mas para usuários que não têm, preciso inserir a senha do administrador do domínio para que as alterações ocorram.

Com o exemplo abaixo, você apenas define uma variável com as variáveis ​​ambientais como já possui em sua lógica de comando ICACLS e, em seguida, usa essa variável para especificar a conta para conceder as permissões aplicáveis, passando-a para umCHAMARrotina.

@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

Se você tiver problemas

Se você estiver correndocmd.execom RUNAS e você determina as %userdomain%\%username%variáveisnão defina (ou liste) os valores esperadosque você precisa usar para que os comandos ICACLS funcionem conforme o esperado e execute os comandos abaixo emcmd.exeantes de usar a funcionalidade RUNAS para encontrar ovalores atuais de credenciais de domínio e nome de usuário conectados que você pode usar com os comandos ICACLSpara definir as permissões para issoidentidade\principal de segurança.

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

informação relacionada