Microsoft Windows XP 共享環境:使用者帳戶和快速使用者切換 (轉)
Chris Evans 和 Piero Sierra
Microsoft Corporation
2001 年 3 月
摘要:本文介紹 Microsoft Windows 的幾項功能,其中包括多使用者帳戶、快速使用者切換和桌面。
目錄
#fastuserswit_topic1">簡介
的一個版本
服務互動
簡介
無論您是針對 Microsoft® Windows® XP Home Edition 還是針對 Windows XP Professional 編寫應用程式,請記住:Windows XP(在 beta 版本中程式碼名為“Whistler”)是個人系統,即每個使用者都將獲得一個單獨的 Windows XP 帳戶。在商務環境中,多個使用者可以在同一臺計算機上訪問各自的電子,而且對各自的文件和設定具有完全訪問權。在使用 Home Edition 的家庭中,每個家庭成員都可獲得一個單獨的帳戶。這與 Microsoft Windows 95 和 有所不同,因為在原有的這兩種系統中,家庭的所有成員通常要共用一個帳戶。
使用者最好在設定過程中建立這些帳戶,但也可在稍後使用“控制皮膚”來建立這些帳戶。這些帳戶基於 ,這意味著每個使用者的資料是相互分隔的。預設情況下,這些帳戶不受密碼保護,但使用者可以選擇設定帳戶的密碼。
如果計算機上存在多個帳戶,則將顯示“歡迎”螢幕。在“歡迎”螢幕上,每個使用者都將獲得一個單獨的圖形,透過單擊該圖形即可登入到計算機。
快速使用者切換
Windows XP 推出了快速使用者切換功能。在 Windows XP 中,當其它使用者要訪問其帳戶時,當前使用者不必從計算機上登出。相反,使用者帳戶可以始終保持登入狀態,並且多個使用者可以在所有開啟的帳戶之間進行快速切換。在一臺計算機上可以同時開啟多個帳戶。
例如,父親回家後,開始使用他的計算機。他開啟 Microsoft® ®,開始處理一個文件。這時,兒子 Billy 走過來,也要使用計算機。Billy 轉到“歡迎”螢幕,透過單擊 Billy 圖形登入到計算機,然後開始玩遊戲。而此時父親仍未登出。如果需要,父親還可以回來切換到他已經開啟的帳戶,並且無需讓 Billy 登出。父親的 PowerPoint 演示文件仍處於開啟狀態,他的 Inte 連線也未斷開。
在商務環境中,如果父親需要快速地完成工作,他就可以透過使用者切換很容易地與同事在不同班次共用同一臺計算機,即使他們的班次出現重疊。
遠端桌面訪問
Windows XP 還具有遠端桌面功能,它使使用者能夠從其它計算機訪問資料和應用程式。在商務工作站上,Windows XP 使使用者能夠從遠端計算機訪問其桌面。
例如,母親可以鎖定辦公室的工作站,回家後再連線到辦公室工作站。家用計算機可以從遠端控制辦公室工作站上執行的應用程式。當母親又回到辦公室後,她可以解除桌面鎖定,然後繼續完成離開家時未做完的工作。
再比如,您在旅行途中要處理多個銷售帳戶,並且要檢查您存放在辦公室計算機“我的文件”資料夾中的合同文字。您在公司的一家分支機構停下來,借了一臺計算機。無需讓該計算機的當前使用者登出,您就可以開啟自己的帳戶(包括您的所有文件和設定)並找到所需的合同。
要求和結構
快速使用者切換和遠端桌面都使用終端服務技術,無需進行任何更改,它們就可用於大多數較早期版本的 Microsoft® ® 應用程式。Windows XP 並不需要為使用者切換編寫新程式碼,而只需要編寫好的程式碼。如果您的應用程式經過了 Windows 2000 應用程式程式的認證,並且您實現了基本的配置檔案分隔和電源管理功能,該應用程式就應該能夠在 Windows XP 中正常執行。
注意:利用幾種新訊息,您可以在 Windows XP 系統中更好地執行您的應用程式。這些訊息將在本文後面進行介紹。
Windows 2000 提供的基礎結構包含在 Windows XP 的所有版本(包括 Professional 版本和 Home client 版本)中。該結構支援對使用者資料、使用者設定和計算機設定進行狀態分隔。正確使用該結構的應用程式將提供以下益處:
- 使用者可以方便地對單獨的文件和設定進行,而無需備份應用程式和檔案。
- 如上所述,多個使用者可以共用同一臺計算機並保持各自的首選項和設定。
- 另外,一個使用者還可以使用多臺計算機,並可從一臺計算機對另一臺計算機的文件和設定進行維護。
其要求相當簡單,您只需:
- 預設為在“我的文件”資料夾中使用者建立的資料。
- 正確分類和儲存應用程式資料。
- 減少“訪問被拒絕”的提示。
新的會話切換訊息
通常,當進行會話切換時,無需通知應用程式。然而,如果應用程式需要了解桌面處於當前狀態的時間,則可註冊會話切換通知。如果應用程式訪問計算機上的埠或其它共享資源,則應選中此功能。要註冊通知,請使用 Wts32.h 中的以下:
BOOL WINAPI WTSRegisterConsoleNotification( HWND hWnd, // Window 控制程式碼 D dwFlags // 標誌 );
已註冊的 HWND 會接收訊息 WM_WTSSESSION_CHANGE
在 dwFlags 中,您可以指定:
NOTIFY_FOR_THIS_SESSION - 僅向視窗通知將影響其所屬會話的會話更改事件。
NOTIFY_FOR_ALL_SESSIONS - 向視窗通知所有會話更改事件。
在 wParam 程式碼中可找到此會話的操作,該程式碼中可能包含以下標誌之一:
WTS_CONSOLE_CONNECT WTS_CONSOLE_DINNECT WTS_REMOTE_CONNECT WTS_REMOTE_DISCONNECT
lParam 包含所影響會話的會話 Id。
如果您的程式不再需要這些通知或者即將終止,則應以下函式來取消其通知註冊。
BOOL WINAPI WTSUnRegisterConsoleNotification( HWND hWnd // window 控制程式碼。 );
傳遞給 WTSRegisterConsoleNotification 的 HWND 值是以引用計數的,因此必須以呼叫 WTSRegisterConsoleNotification 的相同次數來呼叫 WTSRegisterConsoleNotification。
應用程式可以使用 WM_WTSSESSION_CHANGE 訊息來跟蹤其狀態,並釋放或獲得特定於控制檯的資源。
確保只執行應用程式的一個版本
對於許多應用程式,必須確保只執行該應用程式的一個例程。在 Windows XP 中,有多種方法可實現此目的。
- 使用 FindWindow 或 FindWindowEx 來搜尋應用程式開啟的視窗。如果該視窗已開啟,則使用 FindWindow 或 FindWindowEx 來確定該應用程式已開啟。
- 當開啟應用程式時,請建立一個互斥標誌或訊號,然後在應用程式退出時將其關閉。全域性名稱空間將針對每個桌面進行分隔,以產生唯一的互斥標誌及訊號列表。
系統服務互動
從的角度來看,需要分兩種情況來討論。
- 程式接收到客戶機程式的直接請求。
在這種情況下,可能會透過 LPC 或 RPC 傳送訊息。無論是透過 LPC 還是 RPC,都由 API 來獲取客戶端令牌。一旦獲得客戶端令牌,伺服器就可呼叫 advapi32!CreateProcesUser。假設客戶端使用者令牌具有會話標記(應該如此),則將在正確的視窗站呼叫程式。
注意:advapi32!CreateProcessAsUser 當前不支援各會話間的控制程式碼繼承。
- 伺服器程式接收到某種形式的通知,需要顯示使用者介面,但它不必位於當前使用者的環境中。
在這種情況下,伺服器程式可以複製其主程式令牌,並將會話識別符號更改為當前的會話識別符號。要檢索控制檯上當前會話的會話 ID,請使用公共 API WTSGetActiveConsoleSessionID()。
注意:為了設定令牌會話 ID,您需要具有 SE_TCB_PRIVILEGE。它只能作為在 NT AUTHORITYSYSTEM 中執行的服務來擁有。
其它問題
不要在非特定於使用者配置檔案的中心位置(如 Windows 目錄)建立對映檔案。臨時檔案、對映檔案和文件都應儲存在使用者配置檔案目錄的相應子目錄中。您可以使用 SHGetFolderLocation 或 SHGetFolderPath 來查詢相應的檔案儲存位置。如果將 CSIDL_APPDATA 傳遞給應用程式,則會返回檔案系統目錄,該目錄用作特定於應用程式的資料的公用儲存庫。應該將 CSIDL_LOCAL_APPDATA 用於隨使用者的更改而更改的資料,如臨時檔案。
當新增遠端桌面功能後,應用程式不得使用超出需要的頻寬。當桌面進行遠端連線時,應用程式應避免使用大量的螢幕繪圖和動畫效果。使用者桌面可以在遠端和控制檯間動態地進行切換。應用程式應使用上述的 WM_WTSSESSION_CHANGE 訊息來進行遠端與本地連線狀態的同步。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-989644/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Windows XP 系統使用者切換酷招(轉)Windows
- 將最小特權原則應用到 Windows XP 上的使用者帳戶Windows
- win10系統如何登出退出Microsoft賬戶切換回本地帳戶Win10ROS
- Windows10系統如何切換使用者賬戶Windows
- 2 Day DBA-管理Oracle例項-管理使用者帳戶和安全-檢視使用者帳戶Oracle
- 2 Day DBA-管理Oracle例項-管理使用者帳戶和安全-關於使用者帳戶Oracle
- Homestead 環境中 PHP 版本快速切換PHP
- windows10怎麼切換使用者_win10切換使用者的方法WindowsWin10
- Kali Linux快速切換root使用者Linux
- 2 Day DBA-管理Oracle例項-管理使用者帳戶和安全-給使用者帳戶授予許可權和角色Oracle
- Windows環境下無縫切換Listener log檔案Windows
- window環境下安裝和切換兩個python環境Python
- Linux 管理員手冊(7)--管理使用者帳戶(轉)Linux
- Linux– su和sudo 切換使用者Linux
- 一鍵快速切換開發環境以及多渠道打包開發環境
- Centos6.7查詢使用者資訊和切換使用者CentOS
- pycharm切換conda環境PyCharm
- Windows10系統怎麼驗證Microsoft帳戶【圖文】WindowsROS
- windows10登入介面切換使用者怎麼操作_win10開機介面如何切換使用者WindowsWin10
- 如何在windows xp的cmd下切換目錄Windows
- RAC環境STANDBY的SWITCHOVER切換
- jenkins動態切換環境Jenkins
- mysql 5.5.8 免安裝版本在windows xp 和windows 7之前切換的問題MySqlWindows
- Win10系統禁用快速切換使用者功能的方法Win10
- Mssql server 單使用者切換為多使用者SQLServer
- win10怎麼切換到管理員賬戶 win10電腦使用者切換管理員賬戶方法Win10
- Meilisearch 快速入門(Windows 環境)Windows
- 2 Day DBA-管理Oracle例項-給使用者帳戶指定表空間配額-鎖定和解鎖使用者帳戶Oracle
- Twitter:5600萬Twitter帳戶沒有關注其他帳戶 佔註冊使用者數32%
- 快速為Windows新增使用者Windows
- vue 構建環境切換指令碼Vue指令碼
- app 測試環境切換問題APP
- Laravel env 設定多環境切換Laravel
- RAC環境STANDBY的FAILOVER切換AI
- 2 Day DBA-管理Oracle例項-管理使用者帳戶和安全-練習:建立使用者NICKOracle
- SAP BW:Web使用者的切換Web
- win10怎麼切換不同的登入賬戶_win10如何切換登入使用者Win10
- AIX環境oracle使用者的.profile檔案(轉)AIOracle