2011-10-12 3 views
0

작은 질문, 모든 로컬 웹 배포를 통해 iTunes를 제어 할 수있는 사람이 누구였습니까? 호스팅 된 IIS WCF 서비스를 통해 가장 바람직합니까?로컬 IIS - Com interop iTunes

IIS7.5와 함께 Windos 7을 사용해 보았습니다. WCF 서비스가 포함 된 IIS 응용 프로그램 풀에서 프로세스 모델 - ID를 '로컬 시스템'으로 설정하면 Task에 팝업 창이 나타납니다. 매니저. 그러나 아이튠즈는 '생생하지 않습니다.'- 비주얼 셸이없고, iTunesApp 객체가 WCF 서비스 코드에서 초기화 되었는데도 그것에 대한 모든 동작이 작동하지 않습니다.

Side, Visual Studio 2010 디버그 모드를 통해 동일한 서비스를 실행하면 모든 것이 잘 작동합니다!

  • UPDATE * 내 창문 전화를 통해 iTunes에 통신을 시도하고 있었고, 난 웹 사이트/서비스와 그 둘레에가는 생각 ...하지만 새로운 망고 업데이트와 함께 우리가 전화에 TCP 소켓의 기본 작업을 수행 할 수 있습니다 ! 그래서 나는 그 길을 시도 할 것이다.

답변

0

서비스가 어떤 UI 창도 표시하지 않는 이유는 Session Isolation입니다. 서비스 (IIS 응용 프로그램 풀 프로세스)가 세션 0에서 실행 중입니다. 데스크톱이 세션 1 (또는이 컴퓨터에 두 명 이상의 사용자가 로그온 한 경우 다른 번호)에 연결되어 있습니다.

서비스에서 사용자에게 UI를 표시 할 수있는 몇 가지 해결 방법이 있습니다.
1. "서비스가 데스크톱과 상호 작용하도록 허용"옵션으로 서비스를 표시 할 수 있습니다. 이것은 로컬 시스템으로 실행중인 서비스에만 작동합니다. 이 옵션은 더 이상 사용되지 않으며 레거시 서비스와의 호환성을 위해서만 사용해야합니다.
2. 서비스는 사용자 세션에서 중간 프로세스를 시작하고 통신 할 수 있습니다.

아이튠즈와 상호 작용, 오직 사용자 세션에서 그것을 lanch 싶어하지 않으려면

, 당신이해야 할 것은 :

  • 하면 사용자가 실행중인 창 스테이션의 이름을 얻습니다. 당신은 windows terminal services API을 사용할 수 있습니다. 어떤 사용자 세션이 현재 활성화되어 있는지 파악하려면 창의적이어야합니다 (둘 이상의 세션이있는 경우). 사용자 보안 토큰을 쿼리하여 프로세스가 로컬 시스템이 아닌 사용자로 실행되도록 할 수도 있습니다.
  • CreateProcessAsUser를 호출하고 STARTUPINFO 구조체를 전달하십시오. 확인한 윈도우 스테이션을 가리 키도록 STARTUPINFO의 lpDesktop 필드를 설정하십시오.
+0

안녕하세요 Seva, 자세한 답변입니다! 하지만 실제로는 iTunes와 상호 작용하려고하지 않습니다. 그래서 asp.net 사이트에서 로컬 .net 응용 프로그램에 명령을 전달하는 방법이 있는지 궁금하고 그 로컬 응용 프로그램에서 iTunes com interop을 관리 할 것입니까? 메시지 버스 같은 거요? – Depechie

+0

두 가지에 대해 dicision을 만들어야합니다. 첫째, 사용자 세션에서 프로세스를 시작하는 방법입니다 (에이전트라고 부름).둘째 - 서비스와 에이전트 간의 통신 방법. # 1을 달성하는 쉬운 방법은 작업 스케줄러를 사용하여 로그온 작업을 만드는 것입니다. 이렇게하면 사용자가 로그온 할 때마다 지정한 모든 프로세스가 실행됩니다. 이 프로세스는 귀하의 서비스에 대한 커뮤니케이션을 구축해야합니다. # 2의 경우 다양한 옵션이 있습니다. 거의 모든 유형의 inter-proc 통신이합니다. COM, 명명 된 파이프, TCP, 공유 메모리 세그먼트, 공유 파일, WCF 등 –

0

Visual Studio 2010에서 디버깅 할 때 작동하는 이유는 로그인시 VS가 실행되고 로그인에 iTunes가 상호 작용할 수있는 보이는 데스크톱이 있기 때문입니다.

서비스 계정으로 실행중인 프로세스에서 실행하면 작업 관리자에서 실행 파일을 볼 수 있지만 iTunes에서 대화 할 데스크톱이 보이지 않습니다.

+0

그렇다면 어떤 문제라도 해결할 수 있습니까? 나는 또한 완전한 인증을 시도하고 내 자신의 사용자로 실행 ... (또는 내가 뭔가를 놓치고있다). 아니면이 작업을 수행하는 방법에 대한 '모델'이 있습니까 (iTunes인지 여부에 관계 없음)? 즉, 로컬 IIS 서비스를 통해 로컬 응용 프로그램을 시작하는 방법은 무엇입니까? – Depechie