문제

내 C# 앱의 경우 애플리케이션 시작 시 항상 권한 상승을 요청하고 싶지는 않지만 UAC로 보호되는 출력 경로를 선택하는 경우 권한 상승을 요청해야 합니다.

그렇다면 경로가 UAC로 보호되는지 확인하고 실행 중에 권한 상승을 요청하려면 어떻게 해야 합니까?

도움이 되었습니까?

해결책

사용자가 작업을 수행할 수 없는지 감지하는 가장 좋은 방법은 작업을 시도하고 해당 작업을 포착하는 것입니다. UnauthorizedAccessException.

그러나 @와 같이대니스머프 정확하게 지적하다 COM 개체 또는 별도의 프로세스만 승격할 수 있습니다.

Windows SDK Cross Technology Samples에는 다음과 같은 데모 응용 프로그램이 있습니다. UAC 데모.이 데모 애플리케이션은 상승된 프로세스로 작업을 실행하는 방법을 보여줍니다.또한 사용자가 현재 관리자인지 확인하는 방법도 보여줍니다.

다른 팁

실행 중에 권한 상승을 요청하려면 다음 중 하나가 필요합니다.

  1. 승격된 COM 컨트롤을 사용하면 프롬프트가 표시됩니다.
  2. 처음부터 승격된 두 번째 프로세스를 시작합니다.

.NET에서는 현재 실행 중인 프로세스를 승격할 수 있는 방법이 없습니다.위의 해커 작업 중 하나를 수행해야 하지만 수행되는 작업은 사용자에게 현재 프로세스가 승격되고 있다는 느낌을 주는 것뿐입니다.

경로가 UAC 승격되었는지 확인하기 위해 제가 생각할 수 있는 유일한 방법은 승격되지 않은 상태에서 간단한 쓰기 작업을 시도하고 예외를 포착하고 승격한 후 다시 시도하는 것입니다.

도움이 될지는 모르겠지만 다음 블로그 게시물을 살펴보세요.

http://haishibai.blogspot.com/2010/01/tiy-try-out-windows-7-uac-using-c-part_26.html

경로가 보호되어 있음을 사용자에게 알리고 파일을 "더 안전한" 영역에 출력하도록 요청할 수 있습니다.이렇게 하면 앱에 권한 상승이 필요하지 않습니다.나는 그것이 당신의 사용자와 당신이하려는 일에 달려 있다고 확신하지만 xyz를 Windows/System32 폴더에 버리는 것이 괜찮지 않다고 사용자에게 친절하게 알리는 것이 너무 많지 않다고 생각합니다.

보조 드라이브에 자체 파일 권한이 있는 경우, 예를 들어 다른 Windows 복사본이 설치되어 있다고 가정해 보겠습니다.메시지가 표시됩니다.

또한 파일이 사용 중인지 묻는 메시지가 표시됩니다. 이는 Windows 탐색기가 동일한 디렉터리에 열려 있고 파일 미리 보기로 내용을 표시하는 파일을 선택한 경우에 가끔 발생합니다.다른 이상한 점이 있지만 일반적으로 파일이 사용 중이거나 민감한 디렉터리인 경우 파일 권한을 묻는 메시지가 표시됩니다.

FolderBrowserDialog 를 반복하는 경우 사용자에게 이유를 알려서 사용자가 앱에 화를 내지 않도록 하세요.

메모:냄새가 나네요. .net에서 권한을 요청하는 방법이 없습니다. 어쩌면 win32 API를 p/invoke할 수도 있습니다...?

UAC는 GUID를 기반으로 개체를 승격할 수 있습니다. 이는 (이론적으로) GUID가 있는 모든 클래스를 승격할 수 있음을 의미합니다. UACDemo는 이 작업을 수행하는 방법도 보여주어야 합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top