2010-12-22 4 views
2

저는 COM 클래스에 호출하는 일부 컨트롤을 Silverlight 클라이언트에 통합하려고했습니다. 내 컨트롤은 COM을 사용하기 때문에 브라우저에서만 작동합니다. 클라이언트는 브라우저 밖 설치 옵션을 사용하고 있으며 Visual Studio에서 클라이언트를 시작할 때 마우스 오른쪽 버튼을 클릭하여 바탕 화면에 설치할 수 있습니다. 모든 것이 잘 작동하는 것 같습니다. 이상한 부분은 브라우저에서 벗어 났을 때 제 컨트롤이 작동하지 않는다는 것입니다. COM 서버를 시작할 수 없다는 오류가 발생합니다.Silverlight "브라우저 응용 프로그램 외부"와 "페이지에서 설치"

낯설지 않은 부분은 내가 clientproperties에 가서 "동적으로 테스트 페이지 생성"을 "브라우저 외부 응용 프로그램"으로 시작 액션을 설정하면 내 컨트롤이 제대로 작동하고 COM 오류가 발생하지 않는다는 것입니다. 그래서 나는 마우스 오른쪽 버튼 클릭 메뉴를 통해 응용 프로그램을 데스크탑에 설치하는 것과 브라우저 응용 프로그램 외부에서 시작하도록 응용 프로그램을 설정하는 것의 차이점을 이해하지 못한다고 생각합니다. 무슨 일이 벌어지고 있는거야? 이것은 디버깅 구체적으로 관련 될 수 같이

편집

같습니다. (Visual Studio에서) 디버그 -> 디버깅 시작을 선택하면 내 COM 코드가 작동합니다. 디버그 -> 디버깅하지 않고 시작을 선택하면 작동하지 않습니다. XAP 파일에서 직접 설치 한 경우에는 작동하지 않습니다.

+0

브라우저 외부 설정 대화 상자에서 "브라우저 외부에서 실행 중 상승 신뢰 필요"를 선택 했습니까? – SkywayOzone

+0

예, 있습니다. –

+0

@SkywayOzone : 답변이 아니라 원래 질문에 대한 설명이어야합니다. SO는 전통적인 포럼이 아닙니다. 자세한 내용은 FAQ를 참조하십시오. http://stackoverflow.com/faq –

답변

1

이 문제는 고도 문제로 판명되었습니다. 액세스하려고 시도했던 COM 프로세스가 상승적으로 실행 중이었고 SL 권한 상승도 시도했습니다. 그러나 sllauncher.exe는 상승 된 상태로 시작한 다음 즉시 상승 상태를 해제하고 상승되지 않습니다. 그래서 우리는 높은 프로세스와 대화하려고 시도하는 비 승진 된 프로세스를 가지고있었습니다. 물론 실패 할 것입니다. Visual Studio가 향상되어 거기에서 앱을 시작하면 앱이 계속 올라갔습니다. 이것이 바로 거기에서 작업 한 이유입니다.

필자는 두 개의 앱에서 표고가 일치하는지 확인하여 COM 프로세스가 실행되지 않도록했습니다.

관련 문제