제한된 액세스 권한이있는 위치에서 이미지를 읽고 내 wpf 응용 프로그램의 속성으로 반환하려고합니다. 여기 A first chance exception of type 'System.Runtime.InteropServices.COMException' occurred in PresentationCore.dll Additional information: Catastrophic failure (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED))
가장을 사용하여 이미지 읽기
코드 것 :
public BitmapImage GetImage()
{
var bitmap = new BitmapImage();
var impersonation = new ImpersonationManager(Resources.Username,
Resources.Domain,
Resources.Password);
using (impersonation.SafeTokenHandle)
{
using (var newId = new WindowsIdentity(impersonation.SafeTokenHandle.DangerousGetHandle()))
{
using (newId.Impersonate())
{
bitmap.BeginInit();
bitmap.UriSource = new Uri(@"\\restrictedpath\\to\\image.jpg", UriKind.Absolute);
bitmap.EndInit();
}
}
}
return bitmap;
}
창문의 내가 restrictedpath
에 액세스 할 수 없습니다에서이 응용 프로그램을 실행하고 사용자하지만 creds 문제는이 오류를 해결하기 위해 보이지 않을 수 있다는 것입니다 나는 가장을 위해 사용하고 있습니다. 그렇지 않으면 가장이 잘 작동합니다. ImpersonationManager
은 단지 래퍼입니다.
이 작업을 수행 할 수 있습니까?
URI가 그렇게 작동하지 않습니다. 'C : \\ restrictedpath \\ to \\ image.jpg''또는 더 나은'@ "C : \ restrictedpath \ to \ image.jpg"와 같은 드라이브 문자가 있어야합니다. 그러나 예외는 설명하지 않습니다. – Clemens
@Clemens 음, 사실이 아닙니다. UNC 경로는 잘 작동합니다 ... 그렇지 않은 경우 어떻게 매핑되지 않은 공유 드라이브에 액세스 할 수 있습니까? 그리고이 코드는 예외를 제외하고 잘 동작합니다. 내가 그 드라이브에 접근 할 수 있다면 좋다. 전적으로'@'에 동의합니다.이 예제를 실제 코드에서 패치하고 놓쳤습니다. – Nicros
UNC 경로 인 경우'@ "\\ restrictedpath \ to \ image.jpg"로 작성해야합니다. 여기서'restrictedpath'는 서버 이름입니다. – Clemens