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%