asp.net 에서 세 션 0 격 리 관통(1)

5456 단어 관통 세 션
윈도 서 비 스 는 백 스테이지 에서 다양한 작업 을 수행 하 며 일상적인 데스크 톱 작업 을 지원 합 니 다.가끔 은 서비스 가 사용자 와 정보 나 인터페이스 상호작용 을 해 야 할 수도 있 습 니 다.이런 방식 은 XP 시대 에 문제 가 없 었 지만 Vista 부터 이런 방식 이 이미 효과 가 없 는 것 같다 는 것 을 알 게 될 것 입 니 다.Session 0 격 리 실험 아래 AlertService 라 는 서 비 스 를 만 듭 니 다.사용자 에 게 알림 대화 상 자 를 보 내 는 역할 을 합 니 다.이 서비스 가 Windows 7 에서 어떤 상황 이 발생 하 는 지 살 펴 보 겠 습 니 다
 
using System.ServiceProcess;
using System.Windows.Forms;
namespace AlertService
{
public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
}

protected override void OnStart(string[] args)
{
MessageBox.Show("A message from AlertService.");
}

protected override void OnStop()
{
}
}
}

프로그램 을 컴 파일 한 후 Installutil 을 통 해 시스템 서비스 에 불 러 옵 니 다.
 
     서비스 속성 에서'Allow service to interact with desktop'을 선택 하면 AlertService 와 데스크 톱 사용자 가 상호작용 을 할 수 있 습 니 다.

서비스 관리자 에서 AlertService 서 비 스 를 시작 합 니 다.이 때 작업 표시 줄 에 아이콘 이 반 짝 입 니 다.

이 아이콘 을 누 르 면 아래 창 이 표 시 됩 니 다.프로그램(AlertService)이 정 보 를 표시 하려 고 하고 있 습 니 다.이 정 보 를 탐색 해 야 하 는 지 여 부 를 알려 줍 니 다.
flashmeg
     "View the message"를 누 르 면 다음 화면 이 표 시 됩 니 다.(사실 이 화면 은 현재 데스크 톱 에서 캡 처 할 수 없습니다.Virtual PC 를 통 해 캡 처 한 것 입 니 다.그 이 유 는 계속 읽 으 십시오)아래 그림 의 데스크 톱 배경 이 Windows 7 의 기본 데스크 톱 배경 이 아 닌 것 을 주의 깊 게 관찰 하면 알 수 있 습 니 다.이 는 AlertService 가 데스크 톱 시스템 의 Session 과 다 릅 니 다.이것 이 바로 Session 0 격 리 작용 의 결과 입 니 다.

세 션 0 격 리 원리
     윈도 XP,윈도 서버 2003 또는 초기 윈도 시스템 시대 에 첫 번 째 사용자 가 시스템 에 로그 인 한 후 서비스 와 응용 프로그램 이 같은 세 션 에서 실 행 됩 니 다.이것 이 바로 Session 0 입 니 다.아래 그림 과 같 습 니 다.

     그러나 이런 운영 방식 은 시스템 안전 위험 을 높 였 다.서 비 스 는 사용자 의 권한 을 향상 시 켜 서 실 행 된 것 이기 때문에 응용 프로그램 은 관리자 의 신분 을 갖 추 지 않 은 일반 사용자 들 이 실 행 했 기 때문에 그 중의 위험 은 분명 하 다.
     Vista 부터 Session 0 에는 시스템 서비스 만 포함 되 고 다른 응용 프로그램 은 분 리 된 Session 을 통 해 실행 되 며 서비스 와 응용 프로그램 을 격 리 하여 시스템 의 안전성 을 향상 시킨다.다음 그림 에서 보 듯 이:

     이렇게 하면 Session 0 과 다른 Session 간 에 상호작용 을 할 수 없고 서 비 스 를 통 해 데스크 톱 사용자 에 게 정보 창,UI 창 등 정 보 를 팝 업 할 수 없습니다.이것 이 바로 내 가 방금 그 그림 을 현재 데스크 톱 을 통 해 캡 처 할 수 없다 고 말 한 이유 이다.

세 션 검사
     실제 개발 과정 에서 Process Explorer 를 통 해 서비스 나 프로그램 이 어느 세 션 에 있 는 지,세 션 0 격 리 문제 에 부 딪 히 지 않 는 지 점검 할 수 있다.저 희 는 Services 에서 이전에 불 러 온 AlertService 서 비 스 를 찾 았 습 니 다.오른쪽 단 추 를 누 르 면 Session 상 태 를 볼 수 있 습 니 다.

AlertService 가 Session 0 에 있 는 것 을 볼 수 있 습 니 다.

Outlook 응용 프로그램 다시 보기:

     Windows 7 에서 서비스 와 응용 프로그램 은 서로 다른 Session 에 있 음 이 분명 합 니 다.그들 사이 에 보호 벽 을 하나 더 두 었 습 니 다.다음 글 에 서 는 이 보호 벽 을 통 해 서비스 와 데스크 톱 사용자 가 상호작용 을 하 는 방법 을 소개 합 니 다.저자:이경 연(지 니)출처:(http://www.cnblogs.com/gnielee/)

좋은 웹페이지 즐겨찾기