관리자로 배치 파일을 실행할 때 현재 로그인된 사용자 이름을 어떻게 얻나요?

관리자로 배치 파일을 실행할 때 현재 로그인된 사용자 이름을 어떻게 얻나요?

프로그램 파일의 폴더에 대한 권한을 수정하기 위해 실행할 수 있는 배치 파일이 있습니다. 현재 사용자에게 로컬 관리자 권한이 있으면 제대로 실행되지만 그렇지 않은 사용자의 경우 변경 사항을 적용하려면 도메인 관리자 비밀번호를 입력해야 합니다. 폴더의 권한 설정을 다시 확인하면 해당 폴더에 대한 모든 권한을 가진 도메인 관리자가 표시됩니다.

다음을 보장하려면 어떻게 해야 합니까?현재 사용자가 로그인되어 있습니다창문이 완전한 권한을 얻나요?

이것이 해당 배치 파일의 일부로 내가 가지고 있는 것입니다.

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

답변1

관리자로 배치 파일을 실행할 때 현재 로그인된 사용자 이름을 어떻게 얻나요?

현재 사용자에게 로컬 관리자 권한이 있으면 제대로 실행되지만 그렇지 않은 사용자의 경우 변경 사항을 적용하려면 도메인 관리자 비밀번호를 입력해야 합니다.

아래 예에서는 ICACLS 명령 논리에 이미 있는 환경 변수로 변수를 설정한 다음 해당 변수를 사용하여 해당 변수를 전달하는 적용 가능한 권한을 부여할 계정을 지정합니다.부르다루틴.

@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

문제가 있는 경우

달리고 있다면cmd.exeRUNAS를 사용하여 %userdomain%\%username%변수를 결정합니다.예상되는 값을 설정(또는 나열)하지 마세요.ICACLS 명령이 예상대로 작동하려면 사용해야 합니다. 그런 다음 아래 명령을 실행하세요.cmd.exeRUNAS 기능을 사용하여ICACLS 명령과 함께 사용할 수 있는 현재 로그온된 도메인 및 사용자 이름 자격 증명 값해당 권한을 설정하기 위해ID\보안 주체.

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

관련 정보