asp.net 에서 세 션 0 격 리 관통(1)
5456 단어 관통 세 션
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)이 정 보 를 표시 하려 고 하고 있 습 니 다.이 정 보 를 탐색 해 야 하 는 지 여 부 를 알려 줍 니 다.
"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/)