문제

로컬 컴퓨터에서 ASP.NET 페이지를 실행하면서 자신의 사용자 계정을 성공적으로 가장 한 것으로 생각합니다.

설명 된 방법을 사용합니다 여기, 나는 성공적으로 변경했다 WindowsIdentity.GetCurrent().Name ASPNET에서 내 도메인 계정까지.

내 계정 만 액세스 권한이있는 파일 시스템의 파일에 성공적으로 쓸 수 있습니다. 그러나 성능 카운터 카테고리를 삭제하려고하면 접근 불가.
나는 레지스트리의 지점에 감사를 받았으며 MyMachine aspnet이 객체 액세스 할 때 실패합니다.

다음은 실패한 코드입니다.

if ( PerformanceCounterCategory.Exists ( PerfmonCategory ) )
        PerformanceCounterCategory.Delete ( PerfmonCategory );

삭제 콜에 실패합니다.

(내 계정은 관리자이며 ASP.NET 컨텍스트 외부에서 동일한 코드를 실행할 수 있습니다).

진단 네임 스페이스 호출은 실제로 COM 프로세스를 호출하고 있으며 두 번째 홉으로 인해 튀어 나오고 있습니다. 누구든지 무슨 일이 일어나고 있는지 확인할 수 있습니까?

편집 : 예외 : 액세스가 거부됩니다. 설명 : 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다. 오류 및 코드에서 시작된 위치에 대한 자세한 내용은 스택 추적을 검토하십시오.

예외 세부 사항 :

System.componentModel.win32Exception : 액세스가 거부됩니다

완전한 신뢰하에 실행됩니다.

도움이 되었습니까?

해결책

자체 애플리케이션 풀 (항상 좋은 것)에서 응용 프로그램을 실행하고 서비스 사용자에게 적절한 권한을 부여 할 수 있습니다.

다른 팁

성능 카운터를 추가하거나 제거하려면 실제로 관리자가되어야합니다.

왜 당신이 Win32 API 호출을 사용하여 사칭을하고 싶은지 잘 모르겠습니다 - 나는 그것을 엉망으로 만든 지 오래되었습니다.

WindowsIdentity.GetCurrent().Impersonate()

명확하게하려면 먼저 Windows 인증을 사용하여 웹 애플리케이션에서 인증해야하며 ()를 가장 호출 할 수 있어야합니다 ().

() 방법을 가장합니다

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