2016-08-20 12 views
1

비디오 파일로 VLC를 실행하고 싶습니다.IIS 작업자 프로세스가 프로세스를 시작할 수 있지만 보이지 않습니다.

VS에서 다음 코드를 작성하고 IIS Express에서 실행했습니다. IIS Express에서는 모든 것이 정상이며 오디오뿐만 아니라 비디오도 볼 수 있습니다.

로컬 IIS에 게시 할 때 작업 관리자에서 VLC.exe를 볼 수 있으며 오디오를들을 수 있지만 VLC 플레이어를 볼 수 없습니다.

코드 조각

 public bool LaunchVlC(string choice) 
     { 
      System.Diagnostics.Process VLC = new System.Diagnostics.Process(); 
      VLC.StartInfo.FileName = @"F:\VLC\vlc.exe"; 
      VLC.StartInfo.Arguments = "-vvv " + choice; 
      VLC.Start(); 
      return true; 
     } 

내가 로컬 시스템 계정 및 데스크톱과 상호 작용하도록 허용 서비스에서 실행되는 IIS 관리 서비스를 수행했다. 여전히 동영상을 볼 수 없습니다.

+1

Windows의 로그온 세션 및 세션 격리에 대해 알아보십시오. 세션 0에서 실행되는 프로세스가 사용자 세션 인 사용자에게는 보이지 않습니다. –

답변

1

주석 섹션에 이미 'Lex Li'으로 표시된 것처럼 세션 0에서 실행중인 프로세스 (로컬 IIS의 응용 프로그램)가 UI를 요청하면 UI가 사용자 세션에 표시되지 않습니다. 사용자 관점에서 보았을 때 응용 프로그램이 멈춰있는 것처럼 보입니다. 실제로 실제로는 정상적으로 작동하고 사용자가 볼 수없는 사용자 응답을 기다리고 있습니다.

Windows Vista 이상에서는 서비스 및 사용자 모드 드라이버에 대해 세션 0이 만들어집니다. 세션 1은 로그인 한 첫 번째 사용자에 대해 생성됩니다.이 사용자의 응용 프로그램은 세션 1에서 실행됩니다.

다음 예를 고려하십시오 - 응용 프로그램에 속한 서비스가 세션 0에서 UI 요소를 생성하는 경우 - 예를 들어 대화 상자 사용자가 "확인"또는 "취소"를 클릭하기를 기다리는 동안 응용 프로그램은 현재 서비스를 기다리고 있으며 UI는 사용자 세션에 표시되지 않습니다. 사용자 관점에서 보았을 때 응용 프로그램이 멈춰있는 것처럼 보입니다. 실제로 실제로는 정상적으로 작동하고 사용자가 볼 수없는 사용자 응답을 기다리고 있습니다.

예상대로 사용자, 관리자 및 개발자에게 문제가됩니다. 그러나 고려해야 할 몇 가지 빠른 완화 요인이 있습니다.

  1. 응용 프로그램의 서비스 (위의 Windows Vista 및)는 UI, 내장 완화를 사용하는 경우

    는 사용자가 특별한 바탕 화면에서 세션 0 UI와 상호 작용할 수 있습니다. 이렇게하면 전체 세션 0 데스크탑이 아닌 사용 가능한 응용 프로그램에 특정한 UI가 만들어집니다.

  2. 응용 프로그램이 전역으로 명명 된 개체를 만드는 경우 Windows XP 호환 모드를 사용하여 응용 프로그램이 세션 0 서비스에서 계속 작동하는지 확인하십시오. 위의 Windows Vista 및 호환성에 대한 응용 프로그램을 테스트 할 때

다음 테스트 시나리오를 고려하십시오

  1. 테스트를하고 (터미널 서버 모드 또는 빠른 사용자 전환에 윈도우 XP에서 응용 프로그램을 확인 FUS) 모드. 이 시나리오에서 응용 프로그램이 Windows XP에서 제대로 작동하면 Windows Vista에서 작동 할 가능성이 높습니다.

  2. 일부 세션 0 문제에 대한 완화 조치가 포함 된 Window XP 호환 모드를 적용한 후에 응용 프로그램이 올바르게 작동하는지 확인하십시오.

  3. 드라이버가 제대로 작동하는지 테스트하십시오 (Windows Vista 이상). 이것이 가능하지 않으면 Windows XP에서 FUS를 사용하고 여러 사용자가 로그온 한 상태에서 드라이버를 테스트하십시오. 드라이버가 두 번째 및 후속 로그온 한 사용자에 대해 올바르게 작동하는 경우 Windows Vista 이상에서는 세션 0 변경의 영향을받지 않습니다. 이 테스트에서 발견하지 못하는 유일한 문제는 Windows Vista 이상에서 세션 0에 비디오 드라이버가없는 것과 관련된 문제입니다.

마지막으로 활용할 수있는 다음과 같은 Windows Vista 및 기능 솔루션 위 :

  1. 이러한 서비스와 응용 프로그램 사이의 통신에 원격 프로 시저 호출 (RPC) 또는 명명 된 파이프 등

    를 사용하여 클라이언트 또는 서버 메커니즘 .

  2. WTSSendMessage 함수를 사용하면 사용자의 바탕 화면에 간단한 메시지 상자를 만들 수 있습니다. 이를 통해 서비스에서 사용자에게 알림을 보내고 간단한 응답을 요청할 수 있습니다.

  3. 더 복잡한 UI의 경우 CreateProcessAsUser 함수를 사용하여 사용자 세션에서 프로세스를 만듭니다.

  4. 서비스가 사용할 수있게 만드는 이벤트 또는 매핑 된 메모리와 같은 명명 된 개체에 대해 Local\ 또는 Global\ 네임 스페이스를 명시 적으로 선택하십시오.

그리고 세션 0 격리가 Windows Vista 이상에서 응용 프로그램 호환성에 어떻게 영향을 미치는지 간단히 살펴 보겠습니다.


참고 : Application Compatibility – Session 0 Isolation에서 복사; 자세한 내용은이 링크를 확인하십시오.