좋아, 이유 이 수행하지 작업은 Windows Vista 및 최신의 보안 모델입니다. 관리자 그룹의 계정은 여전히 제한된 사용자로 명시 적으로 상승되지 않은 모든 것을 실행합니다. 예외는 모든 것을 상승 시키는 Administrator
계정 입니다. 따라서 일반적으로 로그인 계정으로 사용하는 것은 좋지 않으며 일반적으로 사용하지 않도록 설정되어 있습니다.
이를 활성화 한 다음 runas
해당 계정으로 호출 할 수 있습니다. 몇 가지 문제가 생겼습니다. 이제는 다른 환경 변수가 설정 될 수있는 다른 사용자의 환경에서 실행 중입니다. 1
이를 수행하는 더 좋은 방법은 실제로 UAC를 통해 현재 사용자로 상승하는 것입니다. 불행히도 표준 명령 프롬프트에는 해당 기능이 포함되어 있지 않지만 타사 프로그램과 기본 제공 PowerShell 및 WSHell (VBScript) 모두 가능합니다.
내 다른 대답에서 빌리면 다음 을 사용 하여 PowerShell 명령을 직접 호출 할 수 있습니다 powershell -c
.
powershell -c start -verb runas notepad C:\Windows\System32\drivers\etc\hosts
기본적으로 PowerShell에 다음을 실행하도록 지시합니다 (의 start
별칭이 지정됨 Start-Process
).
Start-Process -Verb "runas" notepad C:\Windows\System32\drivers\etc\hosts
요령은 동사를 전달하여 runas
UAC를 트리거하는 것입니다.
어느 쪽 Start-Process -Verb runas
도 표준 cmd를 runas
현재 작업 디렉토리를 통과하지 않습니다 때문에, 항상 전체 경로를 사용하는 이 방식으로 상승하는 명령에.
또한 같은 일부 인수 -c
는 인수와 충돌 할 수 Start-Process
있으므로 가장 안전한 방법은 다음과 같습니다.
powershell "-c start -verb runas commandname -argumentlist 'arg1 arg2'"
1 참고 : 이것은 사용자 의 환경 변수 에만 적용됩니다 . 부모 프로세스에서 설정 한 환경 변수 는 UAC에 의해 전달되지 않습니다 ! 이것은 또한에 적용되며 runas
올바른 사용자의 변수를 얻지 못하기 때문에 더 악화됩니다.