Session 0を透過して隔離する(一)

2668 ワード

原文のリンク:http://www.cnblogs.com/stevenjson/p/3750169.html
 サービス(Service)は皆さんにとっては決して馴染みのないものです.Windows OSの重要な構成部分です.私たちはサービスを特殊なアプリケーションとして想像できます.システムの「オン~オフ」に従って、その仕事内容を「開始~停止」することができます.この期間には誰も参加しなくてもいいです.
     Windowsサービスはバックグラウンドで様々なタスクを実行し、私たちの日常のデスクトップ操作をサポートしています.時にはサービスがユーザーと情報やインタフェースを交互に操作する必要がありますが、この方法はXP時代には大丈夫です.
セッション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がデスクトップユーザーと対話することができます.
サービスマネージャでAlert Serviceサービスを「起動」すると、タスクバーにアイコンが表示されます.
このアイコンをクリックすると、次のウィンドウが表示されます.メッセージが表示されます.
     「View the message」をクリックすると、下の画面が表示されます.注意図のデスクトップ背景はWindows 7のデフォルトのデスクトップ背景ではないことが分かります.Alert ServiceとデスクトップシステムのSessionは違っています.これがSession 0の分離作用の結果です.
セッション0 隔離の原理
     Windows XP、Windows Server 2003または初期Windowsシステムの時代において、最初のユーザがシステムにログインした後、サービスとアプリケーションは同じSessionで実行されます.これがSession 0です.下の図のように.
 
 
     しかし、このような動作は、サービスがユーザ権限を向上させることによって実行されるため、システムのセキュリティリスクを高め、アプリケーションは、管理者としてのアイデンティティを持たない一般のユーザによって実行されることが多く、その危険は明らかである.
     VistaからSession 0にはシステムサービスのみが含まれており、他のアプリケーションは分離したSessionで実行し、サービスとアプリケーションを分離してシステムの安全性を向上させる.下図のように:
     このように、Session 0と他のSessionとの間の対話ができず、サービスを通じてデスクトップユーザに情報ウィンドウ、UIウィンドウなどの情報をポップアップすることができない.これは、なぜ先ほどの図は現在のデスクトップを通してスクリーンショットができないと言いましたか?
セッション チェック
     実際の開発過程では、Process Explorerを通じて サービスやプログラムがどのSessionにあるかを確認します.Session 0の隔離問題がありますか?私たちはServicesで以前にローディングしたAlert Serviceサービスを見つけました.右クリック属性はそのSession状態を調べます.
AlertServiceはSession 0にあると見られます.
またOutlookアプリを見てみます.
     Windows 7では明らかにサービスとアプリケーションは異なるSessionにあり、それらの間には保護壁が設けられています.次の記事では、この保護壁を通り抜けて、サービスとデスクトップユーザとのインタラクティブ操作を紹介します.
注:本稿は転々としたものです.
作者:李敬然(Gnie)
出典:{GnieTech} (http://www.cnblogs.com/gnielee/)
著作権声明:著作権は著作者とブログ園に共有されます.転載する時は本文の詳細なリンクを明記しなければならなくて、さもなくば作者は保留してその法律の責任を追及します.
 
 
転載先:https://www.cnblogs.com/stevenjson/p/3750169.html