系統(tǒng)之家 - 系統(tǒng)光盤下載網(wǎng)站!

當(dāng)前位置:系統(tǒng)之家 > 系統(tǒng)教程 > 那些你不曾了解的WindowStations窗口站

那些你不曾了解的WindowStations窗口站

時(shí)間:2012-10-17 09:27:07 作者:木木 來源:系統(tǒng)之家 1. 掃描二維碼隨時(shí)看資訊 2. 請(qǐng)使用手機(jī)瀏覽器訪問: https://m.xitongzhijia.net/xtjc/20121015/17407.html 手機(jī)查看 評(píng)論

  WindowStations窗口站?一聽到這個(gè)名詞,很多網(wǎng)民覺得一頭霧水,什么是WindowStations窗口站呢?這是很專業(yè)的名詞嗎?我們不需要了解吧,這是很多網(wǎng)友的第一印象,小編告訴你,非也非也.其實(shí), Window stations 和桌面可能是Windows NT服務(wù)中最與眾不同的了。絕大多數(shù)編程者都不會(huì)直接接觸這兩種對(duì)象,盡管用戶每時(shí)每刻都要碰到它們。window station 和桌面對(duì)象就象其它Windows NT對(duì)象,如事件、互斥量和信號(hào)量一樣,是安全(securable)的。一個(gè)window station 對(duì)象包括一個(gè)剪貼板、一個(gè)全局原子集和更多的桌面對(duì)象。一個(gè)window station或者是可見的或者是不可見的。一個(gè)可見的window station接收用戶來自于鼠標(biāo)或鍵盤的輸入。一個(gè)顯示設(shè)備也與之相連這樣信息可以顯示給交互式用戶。

  在 Windows NT 4.0中,只有一個(gè)window station 能被看得到,就是WinSta0。可見的window station也被定義成交互式的。一個(gè)不可見的window station是不可交互的,而且也不能接收任何用戶的輸入也沒有顯示設(shè)備與之相連。

  如前所述,桌面包含在window station對(duì)象中。一個(gè)桌面對(duì)象包含一個(gè)邏輯的顯示表面,和窗口、菜單等。只有屬于可見window station的桌面才能被看見并接收用戶的輸入。這個(gè)桌面叫做活動(dòng)桌面。

  作為交互式用戶你在不同的時(shí)候碰到三種不同的桌面:缺省(Default)、 Winlogon和Screen-saver。Winlogon 桌面是當(dāng)你按下Ctrl+Alt+Delete組合鍵時(shí)顯示在你面前的對(duì)話框。缺省(Default)桌面是瀏覽器(Explorer)或者是由交互式用戶啟動(dòng)的所有進(jìn)程。它更應(yīng)當(dāng)被理解成交互式的應(yīng)用程序桌面。最終的桌面是Screen-saver,它顯示你的屏幕saver。你可能已經(jīng)注意到可以在不同的桌面之間切換。當(dāng)一個(gè)用戶按下Ctrl+Alt+Delete組合鍵時(shí),操作系統(tǒng)可以從缺省狀態(tài)切換到Winlogon桌面。當(dāng)你在登錄對(duì)話框中選擇取消,系統(tǒng)將再切換回缺省桌面。有人問我當(dāng)切換進(jìn)行的時(shí)候,是否其它桌面上的東西都被破壞掉了,答案是 "不"。雖然你看不到其它桌面,但它們?nèi)匀辉谀抢铩?/p>

  系統(tǒng)中所有的進(jìn)程都與window station 和桌面相聯(lián)系。當(dāng)一個(gè)用戶第一次登錄時(shí),交互式window station, WinSta0,和缺省桌面都與這個(gè)用戶的Shell進(jìn)程相關(guān)聯(lián)。這樣用戶就能看到shell了,如果不是這樣,用戶是什么也看不到的。而且在這之后,由shell啟動(dòng)的所有進(jìn)程也會(huì)和WinSta0 及缺省桌面相關(guān)聯(lián)。

  你還可以通過STARTUPINFO 數(shù)據(jù)結(jié)構(gòu)的lpDesktop 成員指定你的進(jìn)程同哪個(gè)window station 和桌面相關(guān)聯(lián)。這個(gè)數(shù)據(jù)結(jié)構(gòu)傳遞給CreateProcess 和 CreateProcessAsUser兩個(gè)函數(shù)。你可以將lpDesktop 初始化為NULL,意思是讓CreateProcess函數(shù)使用和調(diào)用進(jìn)程相同的window station 和桌面。你可以將你自己的window station 和桌面組合定義成"WinSta0\Default" 或者就定義成空字符串。這個(gè)參數(shù)會(huì)讓操作系統(tǒng)為啟動(dòng)進(jìn)程創(chuàng)建一個(gè)新的不可見的window station 及桌面。與這兩個(gè)新對(duì)象關(guān)聯(lián)的安全性授予每個(gè)組對(duì)它們的完全訪問權(quán)限。

  typedef struct _STARTUPINFO { // si

  DWORD cb;

  LPTSTR lpReserved;

  LPTSTR lpDesktop;

  LPTSTR lpTitle;

  DWORD dwX;

  DWORD dwY;

  DWORD dwXSize;

  DWORD dwYSize;

  DWORD dwXCountChars;

  DWORD dwYCountChars;

  DWORD dwFillAttribute;

  DWORD dwFlags;

  WORD wShowWindow;

  WORD cbReserved2;

  LPBYTE lpReserved2;

  HANDLE hStdInput;

  HANDLE hStdOutput;

  HANDLE hStdError;

  } STARTUPINFO, *LPSTARTUPINFO;

  Window stations和桌面是具有安全性的對(duì)象。與window station 和桌面將關(guān)聯(lián)的進(jìn)程必須由對(duì)這些對(duì)象的合適的訪問權(quán)限。如果進(jìn)程沒有訪問權(quán),你會(huì)看到這兩個(gè)消息之一"User32.dll initialization failure(User32.dll初始化失敗)" 或 "Kernel32.dll initialization failure.(Kernel32.dll初始化失敗)"。由進(jìn)程返回的退出碼為128 或 ERROR_NO_WAIT_CHILDREN。那么我所指的合適的訪問權(quán)是什么意思呢?假如你有一個(gè)文件這樣的對(duì)象。你可以為這個(gè)文件創(chuàng)建一個(gè)DACL以使用戶具有對(duì)這個(gè)文件的讀訪問權(quán)。Window station 和 桌面是以相同的方式工作的。

發(fā)表評(píng)論

0

沒有更多評(píng)論了

評(píng)論就這些咯,讓大家也知道你的獨(dú)特見解

立即評(píng)論

以上留言僅代表用戶個(gè)人觀點(diǎn),不代表系統(tǒng)之家立場(chǎng)

其他版本軟件

人氣教程排行

XP系統(tǒng)推薦

官方交流群 軟件收錄