主頁(yè) > 知識(shí)庫(kù) > asp.net中穿透Session 0 隔離(一)

asp.net中穿透Session 0 隔離(一)

熱門(mén)標(biāo)簽:淘寶地圖標(biāo)注如何做 東莞語(yǔ)音電銷(xiāo)機(jī)器人排名 保山電話(huà)外呼管理系統(tǒng)怎么用 蘇州銷(xiāo)售外呼系統(tǒng)預(yù)算 使用智能電話(huà)機(jī)器人違法嗎 朝陽(yáng)市地圖標(biāo)注 太原外呼電銷(xiāo)機(jī)器人費(fèi)用 電話(huà)機(jī)器人廣告話(huà)術(shù) 外呼系統(tǒng)用員工身份證

Windows 服務(wù)在后臺(tái)執(zhí)行著各種各樣任務(wù),支持著我們?nèi)粘5淖烂娌僮鳌S袝r(shí)候可能需要服務(wù)與用戶(hù)進(jìn)行信息或界面交互操作,這種方式在XP 時(shí)代是沒(méi)有問(wèn)題的,但自從Vista 開(kāi)始你會(huì)發(fā)現(xiàn)這種方式似乎已不起作用。

Session 0 隔離實(shí)驗(yàn)
下面來(lái)做一個(gè)名叫AlertService 的服務(wù),它的作用就是向用戶(hù)發(fā)出一個(gè)提示對(duì)話(huà)框,我們看看這個(gè)服務(wù)在Windows 7 中會(huì)發(fā)生什么情況。

復(fù)制代碼 代碼如下:

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()
{
}
}
}


程序編譯后通過(guò)Installutil 將其加載到系統(tǒng)服務(wù)中:

 

     在服務(wù)屬性中勾選“Allow service to interact with desktop” ,這樣可以使AlertService 與桌面用戶(hù)進(jìn)行交互。

在服務(wù)管理器中將AlertService 服務(wù)“啟動(dòng)”,這時(shí)任務(wù)欄中會(huì)閃動(dòng)一個(gè)圖標(biāo):

點(diǎn)擊該圖標(biāo)會(huì)顯示下面窗口,提示有個(gè)程序(AlertService)正在試圖顯示信息,是否需要瀏覽該信息:

     嘗試點(diǎn)擊“View the message”,便會(huì)顯示下圖界面(其實(shí)這個(gè)界面我已經(jīng)不能從當(dāng)前桌面操作截圖了,是通過(guò)Virtual PC 截屏的,其原因請(qǐng)繼續(xù)閱讀)。注意觀(guān)察可以發(fā)現(xiàn)下圖的桌面背景已經(jīng)不是Windows 7 默認(rèn)的桌面背景了,說(shuō)明AlertService 與桌面系統(tǒng)的Session 并不相同,這就是Session 0 隔離作用的結(jié)果。

Session 0 隔離原理

     在Windows XP、Windows Server 2003 或早期Windows 系統(tǒng)時(shí)代,當(dāng)?shù)谝粋€(gè)用戶(hù)登錄系統(tǒng)后服務(wù)和應(yīng)用程序是在同一個(gè)Session 中運(yùn)行的。這就是Session 0 如下圖所示:

     但是這種運(yùn)行方式提高了系統(tǒng)安全風(fēng)險(xiǎn),因?yàn)榉?wù)是通過(guò)提升了用戶(hù)權(quán)限運(yùn)行的,而應(yīng)用程序往往是那些不具備管理員身份的普通用戶(hù)運(yùn)行的,其中的危險(xiǎn)顯而易見(jiàn)。

     從Vista 開(kāi)始Session 0 中只包含系統(tǒng)服務(wù),其他應(yīng)用程序則通過(guò)分離的Session 運(yùn)行,將服務(wù)與應(yīng)用程序隔離提高系統(tǒng)的安全性。如下圖所示:

     這樣使得Session 0 與其他Session 之間無(wú)法進(jìn)行交互,不能通過(guò)服務(wù)向桌面用戶(hù)彈出信息窗口、UI 窗口等信息。這也就是為什么剛才我說(shuō)那個(gè)圖已經(jīng)不能通過(guò)當(dāng)前桌面進(jìn)行截圖了。

Session 檢查

     在實(shí)際開(kāi)發(fā)過(guò)程中,可以通過(guò)Process Explorer 檢查服務(wù)或程序處于哪個(gè)Session,會(huì)不會(huì)遇到Session 0 隔離問(wèn)題。我們?cè)赟ervices 中找到之前加載的AlertService 服務(wù),右鍵屬性查看其Session 狀態(tài)。

可看到AlertService 處于Session 0 中:

再來(lái)看看Outlook 應(yīng)用程序:

     很明顯在Windows 7 中服務(wù)和應(yīng)用程序是處于不同的Session,它們之間加隔了一個(gè)保護(hù)墻,在下篇文章中將介紹如何穿過(guò)這堵保護(hù)墻使服務(wù)與桌面用戶(hù)進(jìn)行交互操作。

Service 下載

作者:李敬然(Gnie)
出處:(http://www.cnblogs.com/gnielee/)

您可能感興趣的文章:
  • asp.net中穿透Session 0 隔離(二)

標(biāo)簽:運(yùn)城 洛陽(yáng) 克拉瑪依 西藏 綏化 呼倫貝爾 潛江 阿里

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《asp.net中穿透Session 0 隔離(一)》,本文關(guān)鍵詞  asp.net,中,穿透,Session,隔離,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《asp.net中穿透Session 0 隔離(一)》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于asp.net中穿透Session 0 隔離(一)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章