관리자가 아닌 계정에서 UAC 없이 관리자로 C# 콘솔 응용 프로그램을 실행하고 싶습니다. 문제는 Task Scheluder 또는 Microsoft Compatibility Kit를 사용하여 UAC를 비활성화하면 내 앱이 관리자가 아닌 권한으로 실행된다는 것입니다. 관리자 권한으로 앱을 중단할 수 있는 유일한 경우는 마우스 오른쪽 버튼을 클릭하고 관리자 권한으로 실행하고 비밀번호를 입력할 때입니다. 하지만 나는 그러고 싶지 않아요. 관리자 권한이 있는 관리자가 아닌 계정에서 앱을 실행하고 싶습니다. 어디에서 문제가 발생하는지 모르겠습니다. "runas"로 애플리케이션을 실행하려고 할 때 올바른 비밀번호로 관리자 계정을 사용하면 다음과 같은 메시지가 나타납니다. 액세스가 거부되었습니다. 내 응용 프로그램에 문제가 있는지 아니면 다른 곳에 문제가 있는지 모르겠습니다.
감사해요
답변1
애플리케이션 매니페스트 파일을 추가하고 다음 코드를 입력하세요.
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
답변2
작업 스케줄러를 사용하여 "가장 높은 권한으로 실행"하는 프로세스는 UAC를 우회하는 방법이 아닙니다.
로그온한 사용자를 실행하고 상호 작용해야 하는 응용 프로그램이 있는 경우 해당 응용 프로그램은 사용자의 권한으로 실행됩니다. 작업 스케줄러를 사용하여 다른 사용자로 작업을 실행할 수 있지만 그러면 로그온한 사용자와 상호 작용하지 않습니다. 로그인한 사용자로 작업을 실행하면 응용 프로그램이 사용자가 가진 가장 높은 권한으로 제한됩니다.
응용 프로그램 호환성 도구 키트를 사용하는 다른 절차로도 문제가 해결되지 않습니다. 이것이 수행하는 작업은 관리자 비밀번호를 "요구"하지만 실제로는 관리자 권한이 "필요"하지 않고 UAC/관리자 프롬프트 없이 실행되도록 만드는 오작동하는 애플리케이션을 취하는 것입니다.
애플리케이션에 관리자 권한이 "필요"한 경우 사용자는 해당 사용자의 사용자 이름과 비밀번호를 사용하여 관리자 권한이 있는 다른 사용자로 애플리케이션을 실행해야 합니다. 그렇지 않으면 실패합니다.
컴퓨터에서 UAC를 비활성화하면 시스템 보안이 심각하게 저하될 뿐만 아니라 제한된 사용자 계정으로 앱을 실행할 때 관리자 및 애플리케이션의 자격 증명으로 권한을 높이라는 메시지도 표시되지 않습니다. 관리자 액세스가 필요한 경우 실패합니다.
여기서 문제는 앱에 관리자 권한이 필요하다는 것입니다. 이것이 수정되어야 할 사항입니다. 관리자 권한이 필요한 작업은 무엇입니까? 왜? 그렇지 않도록 다시 디자인하십시오. 그렇지 않으면 관리자가 아닌 사용자가 관리자 권한으로 애플리케이션을 실행하도록 허용하는 "안전한" 방법이 없습니다. 표준 사용자가 사용하기 위해 해당 수준의 권한이 필요한 응용 프로그램을 설계하는 것은 더 이상 허용되지 않으며 현재도 수년 동안 허용되지 않았습니다.
표준 사용자가 관리자 권한으로 응용 프로그램을 실행해야 하는 경우 "runas" 명령을 사용하거나 사용자가 액세스를 요청하고 관리자가 응용 프로그램을 허용하기 위해 원격으로 응답할 수 있는 일부 타사 관리자 도구를 사용할 수 있습니다. 다시 말하지만, 문제는 OS가 아니라 앱입니다. 이 문제를 해결하려는 시도는 처음에 사용자가 제한된 계정을 사용해야 하는 대부분의 사용 사례에서는 허용되지 않습니다.