2011-04-08 4 views
2

누군가가 Windows 응용 프로그램에서 샌드 박스 ActiveX 구성 요소를 사용하는 방법에 대한 아이디어가 있으므로 충돌이 발생하면 전체 응용 프로그램을 다운시킬 수 있습니까? 플래시에서 Google이이를 수행하는 것을 볼 수 있습니다. 어떻게 된거 야?샌드 박스 ActiveX 구성 요소

그들은 proc을 호스트 한 다음 응용 프로그램에서만 UI 만 표시한다고 생각합니다. 이것이 가능한가?

C# Window 응용 프로그램에서이 작업을 수행하고 싶습니다.

답변

1

나의 초기 생각은 이것이 가능하지 않다는 것이다. 이 답변

체크 아웃

편집 : Detecting application hangs with ActiveX controls in .Net

그것은 당신이 무엇인지 될 수있는 크롬 플래시 샌드 박스는 어도비 일 to associate the Flash plugin with the sandbox을 많이해야했다 구글과 어도비의 합작이었다 찾고. 당신은 액티브 X의 UI에 의존하는 경우

또한이 조사 할 수 있습니다 : How do I host an application window as a child of a window belonging to another process?

면책 조항 :이 자신이 수행하지 않은 - 사람이 - 내 가정을 수정 해 주시기 바랍니다.

+0

감사합니다. Simen. 나는 그것이 공동의 노력이라는 것을 알지 못했다. 실제로 의미가 있습니다. – bobbyalex

+0

물론 여기에서는 악성 코드로부터 보호하기 위해 Flash에 대한 브라우저의 링크에 대해 이야기하고 있습니다. 당신의 필요는 약간 다릅니다. –

+0

원하는 것은 응용 프로그램의 양식 내에서 특정 UI 영역을 다른 프로세스로 격리해야하고 동시에 응용 프로그램이 충분히 제어 할 수 있도록해야하므로 호스트 된 창 뒤에있는 프로세스가 있는지 여부를 감지 할 수 있습니다 "교수형"입니다. 내가 맞습니까? –

0

Google 크롬은 플러그인이 무엇이든간에 충돌이 발생해도 전체 프로세스를 중단하지 않도록 설정되었습니다. 실제로, 그들은 Flash의 ActiveX 버전을 전혀 사용하지 않습니다 ... 그들은 Firefox와 Safari와 같은 NPAPI 버전을 사용합니다.

크롬이 사용하는 트릭인데, 내가 사용하기는하지만 까다로울 수 있다고 생각되는 것은 그들이 별도의 프로세스에서 플러그인을 실행한다는 것입니다. Firefox 4는 실제로 똑같은 작업을 시작했습니다. (플래시가 실행 중일 때 작업 표시 줄을 보면 Firefox 용 플러그인 -container.exe 프로세스가 표시되고 chrome.exe 프로세스가 더 많이 시작됩니다). 그것은 별도의 프로세스이기 때문에 충돌이 발생할 수 있으며 애플리케이션을 제거하지 않습니다. 당신은 다른 프로세스가 이제 사라 졌음을 감지하고 그에 따라 행동합니다.

어쨌든, 나는 C#에서 여러 프로세스를 한 적이 없지만 가능하다고 생각합니다. 그것은 AFAIK와 같은 것을 "샌드 박싱"하는 가장 일반적인 방법입니다. 나는 C++ (그리고 가지고있다)에서 그것을 할 수 있었다. 그러나 C#은 더 까다로울 수 있었다.

+0

하지만 out proc 프로세스의 UI를 다른 것으로 호스팅 할 수 있는지 확실하지 않습니다. 그리고 그것이 본질적으로 내가 원하는 것입니다. – bobbyalex

+0

HWND는 시스템에 대해 전역입니다. 다시, 나는 이것이 .NET에서 얼마나 쉬운 지 잘 모르겠다. 그러나 자식 프로세스에 HWND를 줄 수 있다면 부모 내부에 자식 HWND를 생성하고 그 자식 HWND에 잘 그릴 수있다. 자녀가 HWND를 필요로하는 유일한 이유는 부모로부터 WINPROC를 얻을 수 없기 때문입니다. – taxilian