TL; DR- 유일한 옵션은 다른 프로세스를 생성하는 것입니다. (새로운 기능 cmd.exe
) 명령 프롬프트의 경우, 권한이 더 높은 액세스 토큰으로 새 인스턴스를 시작 하면 항상 새 창이 생성됩니다.
이미 실행중인 프로세스에 추가 권한을 부여 할 수 없습니다 .
관리 권한이있는 사용자가 UAC (사용자 계정 컨트롤)를 사용하여 Windows 컴퓨터에 로그인하면 두 개의 개별 액세스 토큰이 만들어집니다 .
- 하나는 전체 관리자 액세스 권한이 있으며
- 표준 사용자 액세스 권한이있는 두 번째 "필터링 된 토큰"
프로세스 (예 : 프로세스 CMD.EXE
)가 생성 될 때이 두 액세스 토큰 중 하나가 할당됩니다 . 프로세스가 관리자로 "고가"로 실행되면 필터링되지 않은 액세스 토큰이 사용됩니다. 프로세스에 관리자 권한이 부여되지 않으면 필터링 된 표준 사용자 토큰이 사용됩니다.
프로세스가 생성되면 액세스 토큰을 교체 할 수 없습니다 . 1 이 Windows 데스크톱 용 MSDN Application Security 스레드 에서 자신을 Windows 커널 팀의 구성원으로 식별하는 포스터는 다음과 같이 말합니다.
NT 커널은 프로세스가 실행되기 시작한 후에 토큰 전환을 허용하지 않았습니다. 이는 이전 보안 컨텍스트에서 핸들 등이 열렸을 수도 있고, 기내 작업에서 일관성이없는 보안 컨텍스트 등을 사용할 수도 있기 때문입니다. 따라서 프로세스가 시작된 후에는 프로세스 토큰을 전환하는 것이 일반적으로 적합하지 않습니다. 그러나 이것은 Vista까지 시행되지 않았습니다 . [강조 광산] ( @Ben N 덕분 에 출처 )
참고 : 사용자 계정 컨트롤은 Windows Vista 릴리스 에서 도입되었습니다 .
이 수퍼 유저 답변 에는 동일한 내용을 확인하는 두 가지 추가 출처가 있습니다.
따라서 명령 프롬프트 나 다른 프로세스를 제자리에 올리는 것은 불가능합니다. 유일한 옵션은 새로운 액세스 토큰으로 다른 프로세스를 생성하는 것입니다 (원하는 경우 원래 프로세스의 다른 인스턴스 일 수 있음). 명령 프롬프트의 경우 더 높은 권한을 가진 액세스 토큰으로 새 인스턴스를 시작하면 항상 새 창이 생성되며 시스템에서 UAC 프롬프트가 활성화 된 경우에도 트리거됩니다.
1 MSDN에 따라 AdjustTokenPrivileges 함수를 사용하여 기존 액세스 토큰의 권한을 조정할 수 있습니다 .
AdjustTokenPrivileges 함수는 액세스 토큰에 새로운 권한을 추가 할 수 없습니다. 토큰의 기존 권한 만 활성화 또는 비활성화 할 수 있습니다.