




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、終端效勞在企業中科學應用課程內容概述您可能還不知道終端服務的潛力到底有多大?讓我們看看如何設計在終端服務里平穩運行、功能先進的企業應用程序。首先,了解終端服務應用軟件的設計規范;其次,研究如何使用終端服務的腳本接口、API與托管代碼調用方法;最后,我要介紹一個可以實現靈活定制的庫:虛擬通道。適合聽眾:企業IT架構師、開發人員預備知識:終端服務的概念與使用經驗,Scripting,Windows開發技能和.NET開發技能。課程內容安排終端服務的協議、架構與模式使用腳本或API操作終端服務使用 .NET Framework操作終端服務跨越邊界虛擬通道應用程序終端服務的協議、架構和應用程序規范終端服
2、務的概念穿透的客戶機/服務器環境終端服務器環境基于服務器進行計算終端服務的概念終端服務器RDP協議遠程桌面客戶端安裝應用程序終端服務的應用服務器模式注銷目前登錄的用戶退出安裝過程中會加以修改的服務和程序安裝過程中禁止用戶登錄“Change Logon /Disable”使用控制面板內的“添加刪除程序”進行安裝,自動會進入安裝模式注意: 如果必要,你可以手工進入安裝模式“Change User /Install”安裝應用程序之后的任務安裝完畢后,系統需從“安裝模式”恢復到“執行模式”如果必要的話,也可以手工來做:“Change user /execute”重新啟動剛才退出的應用程序或服務允許用戶
3、登錄“Change logon /enable”雙模式的意義只有在應用服務器模式才存在安裝和執行分開的“雙模式”現象。雙模式的分工:應用程序兼容性注冊表重定向 (又稱shadowing)臨時文件重定向.ini 文件映射API 重定向安裝模式管理員用戶Registry: HKCU (User Profile Admin)Registry: Shadow Keys Write Global .ini Files (%WinDir%, WINDOWS)Global Temp Files (%Temp%)Global API Calls (GetWindowsDirectory)Registry: H
4、KCU (User Profile User)Registry: Shadow Keys Read Adapted .ini Files (%WinDir%, WINDOWS)Specific Temp Files (%Temp%)Specific API Calls (GetWindowsDirectory)注冊表重定向適合多用戶同時使用的應用程序安裝和配置設計規范具有可靠的無值守安裝和無界面安裝,含默認配置。默認安裝到 Program Files目錄識別和覆蓋舊版本支持“添加/刪除程序”界面,以及“All Users”安裝。不替換受Windows文件保護的文件避免不必要的重新啟動允許管理員
5、根據公司政策設置安全性和用戶界面選項。適合多用戶同時使用的應用程序安全性設計規范可以使用一般或者受限用戶的權限運行不依賴于本地管理員權限。避免讀寫本機注冊表模塊和系統文件夾。應用程序默認不會跳過系統安全檢查步驟。應用程序能夠應付“拒絕訪問”的錯誤。適合多用戶同時使用的應用程序設計上的考慮因素應用程序應該可以允許多個交互用戶同時使用。不使用全局互斥或者限制實例數量。不使用系統全局數據,比如IP地址或者主機名,來標識用戶。無共享組件沖突 (DLLs)全局的數據和單個用戶的數據嚴格區別開來。單個實例不會獨占所有的資源,比如內存、CPU、I/O等等。適合多用戶同時使用的應用程序多用戶程序的文件訪問設計
6、規范文件訪問鎖定 多個用戶可能同時訪問應用程序的文件文件訪問權限 把普通用戶和管理員的訪問權限區別開來 (full, read or execute 權限)文件保存地址 把用戶產生的數據默認保存在用戶自己的Profile目錄里 (提供定制界面)防止訪問系統文件 在運行時不提供向應用程序自身目錄和系統目錄的寫入。為每個用戶使用不同的臨時文件。適合多用戶同時使用的應用程序編碼指南盡量使用環境變量,避免硬編碼,比如C:Windows, C:Program files 或者C:Temp。使用Win32 APIs 去調用打印機、注冊表、連接名稱或者其它和環境相關的功能。避免使用 .ini 文件、實在要用
7、,只使用標準Win32 API 去訪問.ini 文件 (比如 WritePrivateProfileString)大多數兼容性不好的應用程序可以通過外加腳本來解決。終端服務的編程方法終端服務器腳本TS WMI Provider ClassesWin32_TerminalServicesWin32_TSGeneralSettingWin32_TSRemoteControlSettingWin32_TSAccountWin32_TSLogonSettingWin32_TSEnvironmentSettingWin32_TSPermissionSettingWin32_TSSessionSettin
8、gWin32_TSClientSettingWin32_TSNetworkAdapterSettingWin32_TSNetworkAdapterListSettingWin32_TSSessionDirectorySettingWin32_TerminalServiceToSettingWin32_TerminalServiceSettingWin32_TSSessionDirectoryWin32_TerminalWin32_TerminalTerminalSettingWin32_TerminalSetting 修改終端服務的Home目錄。strComputer = .Set objWM
9、IService = GetObject(winmgmts: _ & impersonationLevel=impersonate _ & strComputer & rootcimv2)Set colItems = objWMIService.ExecQuery _ (Select * from Win32_TerminalServiceSetting)For Each objItem in colItems errRes = objItem.SetHomeDirectory(u:tsusers)NextTS WMI 腳本TS API簡介Terminal Services API 是Wtsa
10、pi32.dll提供的函數可以在自己的應用程序中配置和管理終端服務器TS API簡介下述操作系統提供TS API (Wtsapi32.dll)Microsoft Windows NT Server 4.0 SP4, Terminal Server EditionMicrosoft Windows 2000Microsoft Windows XPMicrosoft Windows Server 2003TS API簡介用戶態核心態鼠標,鍵盤圖像Wtsapi32.dllTS 服務RdpwsxSmssTS 設備驅動程序Termdd.sysRdpwd.sysTdtcp.sysTS API 應用程序內核
11、Win32k.sys顯示驅動Rdpdd.sysWinlogonCsrss會話中的應用程序剖析 Wtsapi32.dll使用各種工具(Visual Studio) 列出Wtsapi32.dll 的引出函數表Microsoft Binary File Dumper: “dumpbin exports wtsapi32.dll” Microsoft Linker: “link /dump /exports wtsapi32.dll” Dependency Walker Depends.exe剖析 Wtsapi32.dllTS API 函數1/2函數描述WTSOpenServer打開到終端服務器的一個
12、句柄WTSCloseServer 關閉到終端服務器的句柄WTSDisconnectSession 把某用戶從活動會話上斷開WTSLogoffSession 把某用戶從活動會話上注銷WTSSendMessage 在會話中顯示一個消息框WTSShutdownSystem 關閉或重新啟動終端服務器TS API 函數2/2函數描述WTSEnumerateServers 枚舉終端服務器WTSEnumerateSessions 枚舉某終端服務器的會話WTSEnumerateProcesses 枚舉會話中的進程WTSTerminateProcess終止會話中的某進程WTSQuerySessionInform
13、ation 查詢會話信息WTSQueryUserConfig 查詢用戶配置信息WTSQueryUserToken 獲得用戶訪問令牌TS API 編碼推薦:Visual Studio.Net 加 Platform SDK (終端服務API)C語言開發人員incldue 頭文件:Wtsapi32.h修改配置屬性 | 鏈接器 | 命令行 | 附加選項 加入“Wtsapi32.lib”。修改配置屬性 | 常規 | 字符集 “使用多字節字符集”修改配置屬性 | C/C+ | 高級 | 編譯目標 “編譯為C 代碼(/TC)”修改配置屬性 | C/C+ | 代碼生成 | 運行時庫 “多線程調試 (/MTd)
14、” 或者 “多線程 (/MT)” TS 編碼流程獲取終端服務器的名稱獲取該終端服務器的句柄執行相應的任務,比如枚舉和管理用戶會話或進程釋放分配的資源,比如緩沖內存關閉終端服務器的句柄#include #include #include int main(int argc, char* argv) char*pszServerName = NULL; HANDLEserverHandle; PWTS_PROCESS_INFOpProcessInfo; serverHandle = WTSOpenServer(pszServerName); / more TS specific code WTSF
15、reeMemory(pProcessInfo); WTSCloseServer(serverHandle);TS API C語言范例代碼在.NET語言中使用TS API終端服務API 非托管代碼終端服務API 目前沒有標準.NET 類庫在托管代碼里面需要使用Platform Invoke (P/Invoke)TS API P/Invoke Wrapper ClassPlatform Invoke 是用來讓托管代碼調用DLL中的非托管代碼的一個服務。在包裝類中,每一個DLL需要定義一個靜態方法。包裝之后,可以像一般的靜態函數一樣調用。DllImport(wtsapi32.dll)public s
16、tatic extern IntPtr WTSOpenServer(String strServername);using System;using System.Runtime.InteropServices;using HANDLE = System.IntPtr;namespace TsNET class Program static void Main(string args) HANDLEhServer = IntPtr.Zero; StringstrServername = null; hServer = WTS.WTSOpenServer(strServername); WTS.
17、WTSCloseServer(hServer); TS API Visual C#范例代碼終端服務的虛擬通道技術虛擬通道虛擬通道可以擴展終端服務器的功能客戶端組件終端服務客戶端運行的時候會把DLL 加載進內存。應用程序嵌入RDP ActiveX 控件。服務器端組件在終端服務中的某會話中運行的用戶態應用程序虛擬通道程序可以由登錄腳本、啟動目錄或用戶自行啟動。虛擬通道終端服務Wtsapi32.dllRDP遠程桌面客戶端Mstscax.dll虛擬通道:額外的功能終端服務分層架構終端服務RDP 客戶端Wtsapi32.dll終端服務RdpwsxSmss終端服務設備驅動Termdd.sysRdpwd.s
18、ysTdtcp.sys終端服務API應用KernelWin32k.sys顯示驅動Rdpdd.sysWinlogonCsrssPer-SessionApps終端服務客戶端應用Mstscax.dll網絡協議棧RDP虛擬通道客戶端在托管代碼Windows 窗體中使用遠程桌面控件使用Oleview.exe 去找暴露的函數Windows Forms ActiveX Control Importer Aximp.exe 可以ActiveX的COM 的類型庫轉成Windows窗體控件“Aximp c:Windowssystem32mstscax.dll” 生成Mstsclib.dll 和 Axmstscli
19、b.dll把這些DLLs 加入項目的參考項中using AxMSTSCLib;.private AxMsRdpClient m_msTsc;.public RDPClientForm() m_msTsc = new AxMsRdpClient(); m_msTsc.Dock = DockStyle.Fill; Controls.Add(m_msTsc); InitializeComponent();.ServerForm srvForm = new ServerForm();if (srvForm.ShowDialog() != DialogResult.OK) return;m_msTsc.
20、Server = srvForm.ServerName;m_msTsc.Connect();代碼范例 TS Client虛擬通道程序設計客戶端創建虛擬通道: m_msTsc.CreateVirtualChannels(VCD);在虛擬通道上發送. m_msTsc.SendOnVirtualChannel(VCD, Message“);服務器端終端服務API 的包裝類虛擬通道服務器端函數描述WTSVirtualChannelOpen 打開一個虛擬通道的句柄WTSVirtualChannelClose 關閉某虛擬通道句柄WTSVirtualChannelQuery 返回虛擬通道的信息WTSVirtualChannelRead從虛擬通道的服務器端讀取數據WTSVirtualChannelWrite 向虛擬通道的服務器端寫入數據總結為了提高應用程序的兼容性,在應用服務器模式下, 終端服務的設置會和默認Windows操作系統有所不同。可以使用WMI或ADSI腳本來控制終端服務器的行為。利用終端服務的API以及虛擬通道,應用程序可以實現跨越邊界無縫計算!Terminal Services Programming Guidelines/library/en-us/ter
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 自動化產業園企業入駐及產業鏈整合
- 現代物流體系建設與發展策略研究
- 2025簡易借款合同范本
- 學校食堂2025年上半年工作計劃實施總結
- 2024年南通師范高等專科學校輔導員考試真題
- 2024年山東東營金茂鋁業高科技有限公司招聘真題
- 2024年福建水投集團招聘真題
- 櫻黃素減輕大鼠腦缺血再灌注損傷的作用及機制研究
- 湖南省2024-2025學年高三下學期第三次適應性考試數學試題
- 2025年二手奢侈品鑒定標準與交易規范對市場規范化的促進作用報告
- 工廠顏色標識管理制度
- 智慧礦山無人機自動巡檢解決方案
- 跨學科學習:一種基于學科的設計、實施與評價
- JGT266-2011 泡沫混凝土標準規范
- 電力電子裝置-2021復習要點
- 數字油庫建設解決方案
- 趣味心理測試題目與評分標準
- 2.東北師范大學劉曉明《教師的職業壓力與心理調適》
- 新人教版七年級下英語競賽試題及答案(共6頁)
- 食品經營操作流程圖
- 野馬歸野讀書交流會
評論
0/150
提交評論