Como faço para obter o nome de usuário atual quando executando um arquivo de lote como administrador?

0

Eu tenho um arquivo em lotes que posso executar para modificar as permissões para uma pasta nos arquivos de programa. Ele funciona bem quando o usuário atual tem privilégios de administrador local, mas, para os usuários que não são, preciso digitar a senha do administrador do domínio para que as alterações ocorram. Quando eu dou uma olhada na configuração de permissões na pasta, isso mostra ao administrador do domínio ter controle total sobre a pasta.

Como posso garantir que o usuário atual logado a janela receba permissão total?

Isso é o que eu tenho como parte desse arquivo em lote:

icacls "program files directory" /grant %userdomain%\%username%:F
    
por Kustomize 23.06.2016 / 10:24

1 resposta

1

How do I get current logged in user name when running a batch file as administrator

It runs fine when the current user has local admin privileges, but for users who aren't I have to enter the domain administrator password for the changes to take place.

Com o exemplo abaixo, basta definir uma variável com as variáveis ambientais como você já tem em sua lógica de comando ICACLS e, em seguida, usar essa variável para especificar a conta para conceder as permissões aplicáveis passando-a para um CALL rotina.

@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 executando o cmd.exe com o RUNAS e determinar que as variáveis %userdomain%\%username% não definem (ou listem) os valores esperados de que você precisa use para os comandos ICACLS funcionarem conforme o esperado, em seguida, execute os comandos abaixo em cmd.exe antes de usar a funcionalidade RUNAS para localizar os valores de credenciais atuais registrados no domínio e nome de usuário que você pode usar com os comandos ICACLS para definir as permissões para essa identidade \ security principal .

SET Identity=%userdomain%\%username%
ECHO %Identity%
    
por 26.06.2016 / 06:49