Windows Server 2008  應用程式相容性 曹祖聖 台灣微軟資深講師 [email_address] http://teacher.allok.com.tw MCP, MCP+I, MCSA, MCSE,MCDBA, MCAD, MCSD, MCT, MVP
大綱 Windows Server 2008  相容性相關改變 User Account Control 64  位元  Windows Server 2008 IIS 7.0  與  IIS 6.0  相容性
大綱 Windows Server 2008  相容性相關改變 User Account Control 64  位元  Windows Server 2008 IIS 7.0  與  IIS 6.0  相容性
版本檢查 應用程式中如果有檢查作業系統版本 安裝程式不淮執行 應用程式不淮執行 解決方式 應用程式應該要支援目前以及未來的作業系統版本 使用相容模式來執行
Windows Resource Protection (WRP) 保護作業系統 :  檔案、資料夾、系統機碼  (registry keys) 只有被信任的安裝程式才可以變更這些資源 問題 覆寫系統檔案 修改系統機碼 修改資料夾  (Windows, Program Files, …) 修正你的應用程式,以便支援   WRP Windows Server 2008  的作法 :  傳回成功代碼,而不是禁止存取
服務隔離 服務是執行在  Session 0  中,與使用者的  Session  是完全隔離的 問題 所建立的物件會失敗 使用者無法立即看到服務所顯示的任何視窗畫面 如果在  Session 0  中有任何視窗顯示出來,使用者會收到通知,可以切換畫面到  Session 0
網路 TCP/IP  完全重寫 以下不再支援 : Firewall-hook driver / filter-hook driver  R  系列工具   – 只能透過   services for Unix rexec, rsh, finger, … IPX  通訊協定 防火牆 掛鉤   APIs  已經完全被   Windows Filtering Platform  所取代 不能再使用內部的  API  呼叫或 掛鉤 機制 網路掃瞄、防火牆、防毒軟體,這些軟體如果是使用內部的  API  呼叫或資料結構,會無法正常執行
網路 IP V4  與  IP V6  使用相同的  API IP V6  位址預設啟用 IPv6  移轉文件 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winsock/winsock/ipv6_guide_for_windows_sockets_applications_2.asp   Checkv4.exe  工具能夠偵測移轉上的問題 問題 使用固定的  IPv4  位址 使用第一個  IPv4  位址 只有  IPv6  的主機 接收到  IPv6  訊息
MS GINA Microsoft Graphical Identification and Authentication 不再支援  GINA ( msgina.dll) 使用新的   Credential Provider API  來檢查身份驗證流程 不再支援自訂  GINA 問題 支援自訂登入與驗證機制的應用程式會失敗 生物測定 設備,例如指紋辨識 自訂  VPN  解決方案 智慧卡讀卡機 解決 升級你的應用程式,以便支援新的   Winlogon  架構 內建智慧卡驗證
Credential Providers 使用者登入 LSA WinLogon LogonUI Credential Provider Interfaces Credential Provider 2 7.  取得登入的身份資訊 1. Ctrl + Alt + Delete 2.  要求身份資料 9. LSALogonUser 5.  點選圖示,輸入 使用者名稱、密碼 4.  顯示介面 Credential Provider 1 Credential Provider 3 8.  傳回身份資訊 6.  取得使用者輸入的資料 3.  取得身份資料資訊
USER, GDI and DPI 新的桌面視窗管理員 最上層的視窗不再直接將畫面畫到螢幕上 問題 工具提示、快顯功能表、…等等區域周圍會有黑框 閃動現象 應用程式看不到玻璃效果 改進中文字型的顯示 文字的寬度改變,而且是不一定的
USER, GDI and DPI 高解析度  (dpi)  的顯示設備 高解析度的螢幕會造成圖示相對變得太小 Windows Server 2008  會自動調整圖示的大小 問題 文字有可能會被部份切掉 文字看起來太大 圖形繪製出來的大小或位置不對
資料庫的支援 在  Windows Server 2008  上至少必須使用  Access 2003 SP1 部份功能可能可以使用,但是微軟不負責支援 SQL Server and SQL Server Express 必須是   SP2  以後的版本 安裝時會提示使用者要升級到  SP2  以上
大綱 Windows Server 2008  相容性相關改變 User Account Control 64  位元  Windows Server 2008 IIS 7.0  與  IIS 6.0  相容性
User Account Control
行程隔離 管理權限下與一般使用者權限的應用程式共用同一個桌面環境 主要的威脅 跨行程的視窗訊息 DLL injection 、建立遠端執行序 行程隔離機制 確保行程安全 介面權限隔離 低權限的行程不可以影響高權限的行程
UAC  架構 一般使用者的權限 系統管理人的權限 管理人員登入 一般使用者  Token 管理者  Token 一般使用者模式 產生  Token 管理者權限 使用者行程 修改時區 執行一般應用程式 安裝字型 安裝印表機 執行  MSN Messenger 其它 … 管理者行程 安裝軟體 管理者行程 設定  IIS  組態 管理者行程 修改時間 管理者權限 一般使用者權限 管理者權限 管理者權限 Abby
資料轉向 舊應用程式會修改系統資料夾與機碼 HLKM\Software;  %SystemDrive%\Program Files %WinDir%\System32 轉向機制可以免除提升權限 對於  HKLM  的變更會寫到  HKCU  轉向後的位置 對於系統資料夾的變更會寫到使用者的儲存區 在變更時進行拷貝 讓舊應用程式可以正常執行
demo 資料轉向
面對  UAC  的作法 第一種選擇 :  讓你的應用程式可以在一般使用者身份下執行 第二種選擇 :  明確的指出所要做的管理工作 確保一般使用者能夠得到足夠的提示 使用  圖示來標明要提升權限 系統自動附加到控制項上 並不會記得提升的權限狀態 設定以系統管理人員身份來執行特定程式
使用管理者身份執行程式的方式 使用  manifest  來定義應用程式需要使用管理者身份執行 自動偵測安裝程式 套用應用程式相容性修正程式 設定應用程式內容頁的相容性標籤頁 按右鍵,選擇使用管理者身份執行 註 : UAC  只會影響互動式應用程式
demo 使用  manifest  定義檔
大綱 Windows Server 2008  相容性相關改變 User Account Control 64  位元  Windows Server 2008 IIS 7.0  與  IIS 6.0  相容性
64  位元  Windows Server 2008 需要  64  位元的核心模式驅動程式 驅動程式需要數位簽章 不再支援  16  位元子系統 透過  WOW64  執行  32  位元應用程式 64  位元與  32  位元程式碼不能同時存在於同一個行程內 支援  64-bit OLEDB Provider for ODBC (MSDASQL)
在  x64  平台上執行  ASP.NET 2.0 IIS 32 bit worker processes on 64 bit ASP.NET 1.1  虛擬記憶體  2GB ~ 4GB 從  %systemdrive%\Inetpub\AdminScripts  中執行 : cscript.exe adsutil.vbs set W3SVC/AppPools/Enable32BitAppOnWin64 "true" Native 64 bit ASP.NET 2.0 虛擬記憶體沒有限制 開發人員應該要考量所帶來的效能優勢 x64  的問題 MMC  嵌入式管理單元不能在  x64  上執行
demo IIS 32 bit worker processes on 64 bit
大綱 Windows Server 2008  相容性相關改變 User Account Control 64  位元  Windows Server 2008 IIS 7.0  與  IIS 6.0  相容性
IIS 7.0  組態設定系統 根目錄下   Web.config ASP .NET  全域設定 ApplicationHost.config IIS 7.0  全域與分區設定 Web.config 每一個應用程式 .NET  Framework  ASP.NET IIS 7.0 IIS +  ASP.NET +  .NET Framework ASP.NET + .NET Framework  Machine.config .NET  全域設定
模組化設計 模組化   pipeline 各項能被被計成單一的模組 可以視需求新增 / 移除 / 取代每一個模組 減少被攻擊的機會 減少記憶體使用與提高安全性 增加效能 模組可以是   native code  或   manage code 延伸  .NET  的強大能力到  IIS 7.0  上 容易整合新的技術
IIS 6.0  處理機制 傳送回應 記錄檔 壓縮 NTLM 基本 IIS  決定 由誰處理 CGI Static File 身份驗證 匿名 只能全部安裝或不安裝某項功能,例如身份驗證 只能透過  ISAPI  擴充功能   ASP.NET PHP ISAPI … …
IIS 7.0  處理機制 傳送回應 記錄檔 壓縮 NTLM 基本 IIS  決定 由誰處理 CGI 靜態 檔案 ISAPI 身份驗證 匿名 傳送回應 身份驗證 授權 解析快取 ExecuteHandler 更新快取 … … 伺服器的功能細分成超過  40  個  模組   ... 各個模組會掛到   generic request pipeline … 每個模組透過一個  public module API  來   延伸伺服器功能 … …
IIS 6.0  與   ASP.NET  整合 使用  ISAPI  來啓動  ASP.NET .NET Handler  只能處理   ASP.NET  要求 兩者功能重覆 傳送回應 記錄 壓縮 NTLM 基本 選擇   Handler CGI 靜態 檔案 ISAPI 身份驗證 匿名 … … 身份驗證 表單 Windows 對應 Handler ASPX Trace … … … aspnet_isapi.dll
IIS 7.0  與   ASP.NET  整合 傳統模式 使用  ISAPI  執行  ASP.NET 整合模式 .NET modules / handlers  直接接到  IIS 7.0  處理管道中 可以處理任何要求 100%  執行時期支援 記錄 壓縮 基本 靜態 檔案 ISAPI 匿名 傳送回應 身份驗證 授權 解析快取 執行  Handler 更新快取 … … 身份驗證 表單 Windows 對應 Handler ASPX Trace … … … aspnet_isapi.dll
demo IIS 7.0  應用程式集區相容性設定
在何處取得   TechNet   相關資訊? 訂閱  TechNet   資訊技術人快訊   http://www.microsoft.com/taiwan/technet/flash/ 訂閱  TechNet Plus http://www.microsoft.com/taiwan/technet/ 參加  TechNet   的活 動 http://www.microsoft.com/taiwan/technet/ 下載  TechNet  研討會簡報與錄影檔 http://www.microsoft.com/taiwan/technet/webcast/
 

0328 Windows Server 2008 應用程式相容性

  • 1.
    Windows Server 2008 應用程式相容性 曹祖聖 台灣微軟資深講師 [email_address] http://teacher.allok.com.tw MCP, MCP+I, MCSA, MCSE,MCDBA, MCAD, MCSD, MCT, MVP
  • 2.
    大綱 Windows Server2008 相容性相關改變 User Account Control 64 位元 Windows Server 2008 IIS 7.0 與 IIS 6.0 相容性
  • 3.
    大綱 Windows Server2008 相容性相關改變 User Account Control 64 位元 Windows Server 2008 IIS 7.0 與 IIS 6.0 相容性
  • 4.
    版本檢查 應用程式中如果有檢查作業系統版本 安裝程式不淮執行應用程式不淮執行 解決方式 應用程式應該要支援目前以及未來的作業系統版本 使用相容模式來執行
  • 5.
    Windows Resource Protection(WRP) 保護作業系統 : 檔案、資料夾、系統機碼 (registry keys) 只有被信任的安裝程式才可以變更這些資源 問題 覆寫系統檔案 修改系統機碼 修改資料夾 (Windows, Program Files, …) 修正你的應用程式,以便支援 WRP Windows Server 2008 的作法 : 傳回成功代碼,而不是禁止存取
  • 6.
    服務隔離 服務是執行在 Session 0 中,與使用者的 Session 是完全隔離的 問題 所建立的物件會失敗 使用者無法立即看到服務所顯示的任何視窗畫面 如果在 Session 0 中有任何視窗顯示出來,使用者會收到通知,可以切換畫面到 Session 0
  • 7.
    網路 TCP/IP 完全重寫 以下不再支援 : Firewall-hook driver / filter-hook driver R 系列工具 – 只能透過 services for Unix rexec, rsh, finger, … IPX 通訊協定 防火牆 掛鉤 APIs 已經完全被 Windows Filtering Platform 所取代 不能再使用內部的 API 呼叫或 掛鉤 機制 網路掃瞄、防火牆、防毒軟體,這些軟體如果是使用內部的 API 呼叫或資料結構,會無法正常執行
  • 8.
    網路 IP V4 與 IP V6 使用相同的 API IP V6 位址預設啟用 IPv6 移轉文件 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winsock/winsock/ipv6_guide_for_windows_sockets_applications_2.asp Checkv4.exe 工具能夠偵測移轉上的問題 問題 使用固定的 IPv4 位址 使用第一個 IPv4 位址 只有 IPv6 的主機 接收到 IPv6 訊息
  • 9.
    MS GINA MicrosoftGraphical Identification and Authentication 不再支援 GINA ( msgina.dll) 使用新的 Credential Provider API 來檢查身份驗證流程 不再支援自訂 GINA 問題 支援自訂登入與驗證機制的應用程式會失敗 生物測定 設備,例如指紋辨識 自訂 VPN 解決方案 智慧卡讀卡機 解決 升級你的應用程式,以便支援新的 Winlogon 架構 內建智慧卡驗證
  • 10.
    Credential Providers 使用者登入LSA WinLogon LogonUI Credential Provider Interfaces Credential Provider 2 7. 取得登入的身份資訊 1. Ctrl + Alt + Delete 2. 要求身份資料 9. LSALogonUser 5. 點選圖示,輸入 使用者名稱、密碼 4. 顯示介面 Credential Provider 1 Credential Provider 3 8. 傳回身份資訊 6. 取得使用者輸入的資料 3. 取得身份資料資訊
  • 11.
    USER, GDI andDPI 新的桌面視窗管理員 最上層的視窗不再直接將畫面畫到螢幕上 問題 工具提示、快顯功能表、…等等區域周圍會有黑框 閃動現象 應用程式看不到玻璃效果 改進中文字型的顯示 文字的寬度改變,而且是不一定的
  • 12.
    USER, GDI andDPI 高解析度 (dpi) 的顯示設備 高解析度的螢幕會造成圖示相對變得太小 Windows Server 2008 會自動調整圖示的大小 問題 文字有可能會被部份切掉 文字看起來太大 圖形繪製出來的大小或位置不對
  • 13.
    資料庫的支援 在 Windows Server 2008 上至少必須使用 Access 2003 SP1 部份功能可能可以使用,但是微軟不負責支援 SQL Server and SQL Server Express 必須是 SP2 以後的版本 安裝時會提示使用者要升級到 SP2 以上
  • 14.
    大綱 Windows Server2008 相容性相關改變 User Account Control 64 位元 Windows Server 2008 IIS 7.0 與 IIS 6.0 相容性
  • 15.
  • 16.
    行程隔離 管理權限下與一般使用者權限的應用程式共用同一個桌面環境 主要的威脅跨行程的視窗訊息 DLL injection 、建立遠端執行序 行程隔離機制 確保行程安全 介面權限隔離 低權限的行程不可以影響高權限的行程
  • 17.
    UAC 架構一般使用者的權限 系統管理人的權限 管理人員登入 一般使用者 Token 管理者 Token 一般使用者模式 產生 Token 管理者權限 使用者行程 修改時區 執行一般應用程式 安裝字型 安裝印表機 執行 MSN Messenger 其它 … 管理者行程 安裝軟體 管理者行程 設定 IIS 組態 管理者行程 修改時間 管理者權限 一般使用者權限 管理者權限 管理者權限 Abby
  • 18.
    資料轉向 舊應用程式會修改系統資料夾與機碼 HLKM\Software; %SystemDrive%\Program Files %WinDir%\System32 轉向機制可以免除提升權限 對於 HKLM 的變更會寫到 HKCU 轉向後的位置 對於系統資料夾的變更會寫到使用者的儲存區 在變更時進行拷貝 讓舊應用程式可以正常執行
  • 19.
  • 20.
    面對 UAC 的作法 第一種選擇 : 讓你的應用程式可以在一般使用者身份下執行 第二種選擇 : 明確的指出所要做的管理工作 確保一般使用者能夠得到足夠的提示 使用 圖示來標明要提升權限 系統自動附加到控制項上 並不會記得提升的權限狀態 設定以系統管理人員身份來執行特定程式
  • 21.
    使用管理者身份執行程式的方式 使用 manifest 來定義應用程式需要使用管理者身份執行 自動偵測安裝程式 套用應用程式相容性修正程式 設定應用程式內容頁的相容性標籤頁 按右鍵,選擇使用管理者身份執行 註 : UAC 只會影響互動式應用程式
  • 22.
    demo 使用 manifest 定義檔
  • 23.
    大綱 Windows Server2008 相容性相關改變 User Account Control 64 位元 Windows Server 2008 IIS 7.0 與 IIS 6.0 相容性
  • 24.
    64 位元 Windows Server 2008 需要 64 位元的核心模式驅動程式 驅動程式需要數位簽章 不再支援 16 位元子系統 透過 WOW64 執行 32 位元應用程式 64 位元與 32 位元程式碼不能同時存在於同一個行程內 支援 64-bit OLEDB Provider for ODBC (MSDASQL)
  • 25.
    在 x64 平台上執行 ASP.NET 2.0 IIS 32 bit worker processes on 64 bit ASP.NET 1.1 虛擬記憶體 2GB ~ 4GB 從 %systemdrive%\Inetpub\AdminScripts 中執行 : cscript.exe adsutil.vbs set W3SVC/AppPools/Enable32BitAppOnWin64 "true" Native 64 bit ASP.NET 2.0 虛擬記憶體沒有限制 開發人員應該要考量所帶來的效能優勢 x64 的問題 MMC 嵌入式管理單元不能在 x64 上執行
  • 26.
    demo IIS 32bit worker processes on 64 bit
  • 27.
    大綱 Windows Server2008 相容性相關改變 User Account Control 64 位元 Windows Server 2008 IIS 7.0 與 IIS 6.0 相容性
  • 28.
    IIS 7.0 組態設定系統 根目錄下 Web.config ASP .NET 全域設定 ApplicationHost.config IIS 7.0 全域與分區設定 Web.config 每一個應用程式 .NET Framework ASP.NET IIS 7.0 IIS + ASP.NET + .NET Framework ASP.NET + .NET Framework Machine.config .NET 全域設定
  • 29.
    模組化設計 模組化 pipeline 各項能被被計成單一的模組 可以視需求新增 / 移除 / 取代每一個模組 減少被攻擊的機會 減少記憶體使用與提高安全性 增加效能 模組可以是 native code 或 manage code 延伸 .NET 的強大能力到 IIS 7.0 上 容易整合新的技術
  • 30.
    IIS 6.0 處理機制 傳送回應 記錄檔 壓縮 NTLM 基本 IIS 決定 由誰處理 CGI Static File 身份驗證 匿名 只能全部安裝或不安裝某項功能,例如身份驗證 只能透過 ISAPI 擴充功能  ASP.NET PHP ISAPI … …
  • 31.
    IIS 7.0 處理機制 傳送回應 記錄檔 壓縮 NTLM 基本 IIS 決定 由誰處理 CGI 靜態 檔案 ISAPI 身份驗證 匿名 傳送回應 身份驗證 授權 解析快取 ExecuteHandler 更新快取 … … 伺服器的功能細分成超過 40 個 模組 ... 各個模組會掛到 generic request pipeline … 每個模組透過一個 public module API 來 延伸伺服器功能 … …
  • 32.
    IIS 6.0 與 ASP.NET 整合 使用 ISAPI 來啓動 ASP.NET .NET Handler 只能處理 ASP.NET 要求 兩者功能重覆 傳送回應 記錄 壓縮 NTLM 基本 選擇 Handler CGI 靜態 檔案 ISAPI 身份驗證 匿名 … … 身份驗證 表單 Windows 對應 Handler ASPX Trace … … … aspnet_isapi.dll
  • 33.
    IIS 7.0 與 ASP.NET 整合 傳統模式 使用 ISAPI 執行 ASP.NET 整合模式 .NET modules / handlers 直接接到 IIS 7.0 處理管道中 可以處理任何要求 100% 執行時期支援 記錄 壓縮 基本 靜態 檔案 ISAPI 匿名 傳送回應 身份驗證 授權 解析快取 執行 Handler 更新快取 … … 身份驗證 表單 Windows 對應 Handler ASPX Trace … … … aspnet_isapi.dll
  • 34.
    demo IIS 7.0 應用程式集區相容性設定
  • 35.
    在何處取得 TechNet 相關資訊? 訂閱 TechNet 資訊技術人快訊 http://www.microsoft.com/taiwan/technet/flash/ 訂閱 TechNet Plus http://www.microsoft.com/taiwan/technet/ 參加 TechNet 的活 動 http://www.microsoft.com/taiwan/technet/ 下載 TechNet 研討會簡報與錄影檔 http://www.microsoft.com/taiwan/technet/webcast/
  • 36.

Editor's Notes

  • #2 <SLIDETITLE INCLUDE=7> Windows Server 2008 應用程式相容性 </SLIDETITLE> <KEYWORDS></KEYWORDS> <KEYMESSAGE></KEYMESSAGE> <SLIDEBUILDS>0</SLIDEBUILDS> <SLIDESCRIPT> Hello and Welcome to this Microsoft TechNet session on {insert session title}. My name is {insert name} </SLIDESCRIPT> <SLIDETRANSITION> <TRANSITION LENGTH=7>Let us start this session by going into more detail on exactly what we will be covering.</TRANSITION> </SLIDETRANSITION> <COMMENT></COMMENT> <ADDITIONALINFORMATION> <ITEM></ITEM> </ADDITIONALINFORMATION>