[電子報封存 ^][< Volume 4, Number 3] [Volume 5, Number 2 >]
Systems Internals 電子報,第 5 卷第 1 期
http://www.sysinternals.com
Copyright (c) 2003 Mark Russinovich
2003 年 2 月 19 日 - 本期內容:
社論
SYSINTERNALS 最新動向
- Filemon v5.01
- DebugView v4.2
- NewSID v4.02
- PsShutdown v2.01
- Autoruns v2.02
- ShareEnum v1.3
- TCPView v2.31
- Bluescreen v3.0
- Microsoft 的 Sysinternals
內部資訊
- 深入認識全新 XP/Server 2003 影片
- Mark 與 David Solomon 在西雅圖教授深入認識系統與疑難排解
- Windows 2000 SP3 通用準則認證
- Visual Studio:注意 LastError
- LameButtonText 登錄值介紹
- Windows 開發歷程記錄
- 損毀傾印分析介紹
Sysinternals 電子報由 Winternals Software 贊助,網址為:http://www.winternals.com. Winternals Software 是一家先進的開發公司,提供諸多適用於 Windows NT/2K/XP 的進階系統工具。 Winternals Software 產品包括 ERD Commander 2002、NTFSDOS 專業版 (適用於 DOS 的讀取/寫入 NTFS 驅動程式) 以及 Remote Recover。
Winternals 自豪地宣佈 Defrag Manager 2.10 版上市,這是最快速且最徹底的企業級重組工具。 現在,只需一個簡單的 MMC 嵌入式管理單元即可管理整個企業的 Windows 系統重組時程,甚至不需要在 NT 或 Windows 2000 或 Windows XP 系統上安裝任何用戶端軟體。 如需詳細資訊,或要求免費 30 天試用版,請造訪 http://www.winternals.com/es。
大家好,
歡迎閱讀 Sysinternals 電子報。 本電子報目前有 36,000 名訂閱者。
我很高興地通知您,本月社論的客座撰稿人為 David Solomon,他將分享使用幾種 Sysinternals 公用程式進行疑難排解的實際經驗。
請將電子報轉發給您認為可能對其內容感興趣的朋友。
感謝您!
-Mark
社論 - David Solomon 撰
我有一個新的座右銘:「執行 Filemon 和 Regmon (還有 Process Explorer) 就對了。」
在解釋之前,容我先感謝 Mark 邀請我擔任這篇社論的客座撰稿人 (不過,既然這篇社論會大肆讚賞他的工具有多好用,所以也算不上我欠他什麼人情吧!)。
正如許多讀者所知,Mark 與我合作教育世界各地的人深入認識 Windows。 我們的最新專案是去年更新的深入認識 Windows 2000 教學課程影片,其中涵蓋 Windows XP 和 Windows Server 2003 的核心變更;我們的下一場深入認識 Windows 公開課程將於 4 月 21 日至 23 日在華盛頓州 Bellevue 舉辦,兩者的詳情請參閱本電子報相關段落。 而且,正如許多人問過的那樣,我們正準備在 Windows 2000 的 Windows 2000 for XP & Server 2003 中(暫定發行日期是夏末)。
現在,讓我告訴您,為什麼我對 Sysinternals 工具充滿熱情。 這是因為,在過去一年左右,這些工具説幫助我疑難排解並解決各種缺少這些工具,就無法解決的不同應用程式和系統問題。 事實上,我靠這些工具疑難排解的各種截然不同、毫不相關的問題,數量數都數不清。 就連我覺得這些工具可能派不上用場時,都有發揮功效。 因此,我的新座右銘就是「執行 Filemon 和 Regmon 就對了。」
我在應用這些工具時,發現兩種基本技巧:
- 查看 Filemon/Regmon 追蹤中,應用程式在失敗前執行的最後一件事。 這可能指出問題所在。
- 比較失敗應用程式的 Filemon/Regmon 追蹤資訊與正常運作系統中的追蹤資訊。
第一種方法是先執行 Filemon 和 Regmon,再執行應用程式。 當問題發生時,請回到 Filemon 和 Regmon 並停止記錄 (按 CONTROL+E)。 然後,前往記錄結尾,並尋找應用程式在失敗 (無論是當機、中斷或其他狀況) 之前執行的最後一個作業。 從最後一行開始,回溯檢參照的檔案和/或登錄機碼,這通常有助於找出問題。
若應用程式在一個系統上失敗,但在另一個系統卻能正常運作,請改用第二種做法。 在可運作和失敗的系統上擷取應用程式的 Filemon 和 Regmon 追蹤資訊,並將輸出結果儲存至記錄檔案。 然後,使用 Excel 開啟好的與壞的記錄檔案 (使用匯入精靈的預設值),並刪除前 3 個資料行 (否則,比較結果會顯示每一行都不同,因為前 3 個資料行包含每次執行都會有差異的資訊,例如時間和處理序識別碼)。 最後,比較產生的記錄檔 (例如,使用 WinDiff,您可以從 XP CD 安裝此 Windows XP 隨附的免費支援工具;或是使用可於資源套件中找到,適用 Windows NT4 與 Windows 2000 的版本)。
現在,讓我們來看看幾個真實範例。
在已安裝 Microsoft Office 97 的 Windows 2000 工作站上,Word 會載入 Dr. Watson。 您實際上可以在 Dr. Watson 出現前輸入幾個字元,但不管您輸入什麼,在啟動幾秒後,Word 就會當機。 當然,使用者已嘗試解除安裝並重新安裝 Office,但問題仍然存在。 所以,我執行了 Filemon 和 Regmon,看看 Word 在當機前執行的最後一個作業。 Filemon 追蹤顯示 Word 在當機前,最後開啟了 HP 印表機 DLL。 原來,工作站沒有印表機,但顯然曾經有過一部。 於是,我從系統刪除了 HP 印表機,問題就消失了!
顯然 Word 在啟動時列舉印表機會導致此 DLL 載入,結果造成程式當機 (我不知道為什麼會發生這種情況,可能是因為使用者安裝了偽造的版本;但由於系統不再有印表機,這真的無關緊要)。
在另一個範例中,Regmon 幫助使用者免於徹底重新安裝 Windows XP 電腦系統。 問題症狀是,若使用者沒有先手動撥接網路連線,Internet Explorer (IE) 會在啟動時停止回應。 此網際網路連線已設定為系統的預設連線,因此啟動 IE 應該就會自動撥接至網際網路 (因為 IE 設定為在啟動時顯示預設首頁)。 按照我的新座右銘,我執行了 Filemon 與 Regmon,並回溯查詢到 IE 停止回應的時間點。 Filemon 未顯示任何不尋常的狀況,但 Regmon 記錄顯示對機碼 HKEY_CURRENT_USER\Software\Microsoft\RAS Phonebook\ATT
的查詢。
用戶告訴我,他曾一次安裝AT&T撥號程式,但已卸載並手動建立撥號連線。
由於撥接連線的名稱不是「ATT」,我懷疑這是解除安裝後留下的登錄垃圾資訊,讓 IE 中斷回應。
所以,我重新命名了機碼,問題就消失了!
使用「比較記錄」技術有助於解決在嘗試匯入 Excel 檔案時,程式設計人員 XP 工作站上的 Access 2000 中斷回應。 在其他使用者的工作站上匯入相同檔案時運作正常,但在此工作站上失敗。 因此,我們在可正常運作和失敗的系統中擷取了 Access的資訊。 在充分爬梳記錄檔案之後,我們使用 Windiff 進行比較。 前幾個差異是因為暫存檔案名稱不同,以及某些檔案名稱大小寫不同所導致,當然,這兩個系統之間並沒有「相關差異」。
第一個有問題的差異是,在失敗的系統上,Access DLL 是從 \Windows\System32
載入;但在正常運作的系統上,則是從 \Program Files\Microsoft Office\Office
載入。
比較 DLL,顯示 \Windows\System32
中的版本來自舊版 Access。 因此,使用者已將該 DLL 重新命名為 .bad
,並重新執行 Access,問題就消失了!
Filemon 特別適用於找出檔案權限問題這一類的問題。 許多應用程式在回報存取權限錯誤上表現不佳。 然而,執行 Filemon 就能清楚顯示這類失敗,因為在因為權限問題而無法開啟檔案時,結果資料行會顯示「ACCESS DENIED」(而最新版本甚至會顯示無法存取檔案的使用者名稱)。 出現這種情況的兩種確切範例:
- 使用者啟動 Word 時收到奇怪的巨集錯誤;結果是因為 .DOT 檔案上巨集參照的權限已變更,且不允許使用者存取。 Filemon 清楚顯示 Word 上出現 .DOT 檔案存取遭拒錯誤。 修正權限後,問題就消失了。
- Outlook 應用程式跳出訊息方塊,上面說「
Application defined or object-defined error-Message ID: [Connect].[LoadGlobalVariables].[LN:?].[EN:287]
」,又是一個讓我們知道有多少應用程式會因隨機 I/O 問題,而產生無用錯誤訊息的範例。 同樣地,執行 Filemon 會顯示存取遭拒錯誤 (這次是 Outlook 需要存取的資料夾)。 針對資料夾調整權限後,問題就消失了。
以上只是幾個範例,我有無數其他使用 Filemon 和 Regmon (還有 Process Explorer,但在此處未討論) 解決問題的成功案例。 這也難怪 Microsoft產品支援團隊每天都使用這些工具,來協助客戶解決問題 (我上次計算的時候,有約 40 篇知識庫文章都指向 Mark的工具,請參閱 http://www.sysinternals.com/ntw2k/info/mssysinternals.shtml,檢視完整清單)。
所以,只要有問題,執行 Filemon 和 Regmon 就對了!
David Solomon David Solomon 專家研討會 http://www.solsem.com
SYSINTERNALS 最新動向
FILEMON V5.01
David 在社論中特別介紹的公用程式之一 Filemon 在多年後第一次推出重大更新版。 新版本為已具備便利使用者介面的工具提高可用性。 最重要的增強功能是改變在 Windows NT、2000、XP 或 Server 2003 時,檔案系統在 Filemon 預設設定下的呈現方式,我已經思考這項改變許久,最終根據 David 提供的真實使用者意見反應做出修改。
舊版的 Filemon 會以執行作業的內部 I/O 要求文字名稱顯示檔案系統作業。
雖然在技術上,這種呈現方式完全正確,許多使用者對於 Windows I/O 子系統內部的運作方式並不熟悉,且會覺得 FASTIO_CHECK_IF_POSSIBLE
這樣的作業並無意義;而其他如回報 FASTIO_READ
作業錯誤的方式則令人困惑。 還有其他無數作業範例大多數人會歸類為「雜訊」,或是作業名稱本身並不清楚。
Filemon 5.01 版的預設檢視模式現在有一套篩選機制,可移除大部分疑難排解情境中無用的活動,並針對所有 I/O 作業提供直覺的名稱。
FASTIO_CHECK_IF_POSSIBLE
被篩選掉、FASTIO_READ
問題未顯示,而成功的 FASTIO_READ
則被回報為 READ
作業。
此外,預設檢視會省略系統程序中的檔案系統活動,這是記憶體和快取管理員執行背景活動,以及所有記憶體管理員分頁活動 (包括系統分頁檔案) 的程序。 選項|進階功能表項目會滿足使用者,例如檔案系統篩選驅動程式開發人員,其想要先前 Filemon 版本所顯示的檔案系統活動的「原始」檢視。
許多使用者,包括 Microsoft 員工要求 Filemon顯示出現「存取遭拒」的帳戶,以便在終端服務環境中輔助安全設定偵錯。 為解決此問題,5.01 版本會顯示開啟檔案時,程序所要的資訊與存取模式 (讀取、寫入、刪除等),以及檔案的開啟方式,例如,是覆寫,或只在存在時開啟。
許多疑難排解工作階段聚焦在找出程序存取或常是存取的檔案,但在這些情況下,讀取、寫入和關閉作業不過是製造雜訊。 認清這個事實後,我新增了「開啟記錄」篩選條件,讓您可以將開啟作業獨立出來。
另一項重大變更是 Filemon v5.01 處理網路對應共用的方式。 在舊版中,各對應在 [磁碟機] 功能表中會以磁碟機字母顯示。 現在,所有這類對應都包含在 [磁碟區] 功能表 (已重新命名為 [磁碟機] 功能表) 的 [網路] 選擇中。
選取 [網路] 可讓 Filemon監視所有網路共用,以及報告當您使用「\\computer\share\directory
」命名慣例存取遠端檔案時所發生的 UNC 類型網路活動。
這項變更讓您即使沒有對應的網路共用,也可以檢視網路檔案活動,和先前的 Filemon 版本的需求一樣。 最新的 Filemon 還有其他許多次要變更,包括更新的功能表架構,可反映幾個月前在 Regmon 中推出、可用性提供的功能表。
下載 Filemon v5.01:
http://www.sysinternals.com/ntw2k/source/filemon.shtml
關於 FILEMON 和 REGMON 原始程式碼
軟體、硬體和網路產品的開發人員,透過購買授權來轉散發程式碼以支援 Sysinternals。 不過,在過去一年來,從特洛伊木馬到一些數十億美元公司的商業產品,我們發現一系列軟體都包含未經授權的 Sysinternals 原始程式碼。 為了維持 Sysinternals 的成長,並確保我們的產品能透過合法方式授權,我們已中止發佈部分產品的原始程式碼,包括最新的 Filemon 和 Regmon 版本。 我們會繼續將原始程式碼提供給商業被授權人使用。 如果您發現 Sysinternals 原始程式碼的鏡像,請告訴我們。
DEBUGVIEW V4.2
DebugView 是非常受歡迎的 Sysinternals 公用程式,軟體開發人員可用來擷取其軟體所產生的偵錯輸出。 v4.2 版反映一些使用者要求的增強功能和其他功能。 Microsoft 要求的選項可讓您在非主控台工作階段中執行 DebugView 時,擷取終端機服務環境內執行中處理程序的偵錯輸出。 V4.2 支援擴充的命令列選項,可讓您指定要載入的記錄檔、歷程記錄深度和其他啟動行為。 數位使用者要求更多且較長的篩選準則、篩選處理序識別碼,以及將批註插入輸出的能力,這一切都可能與最新版本搭配使用。 新版本已透過修正數個錯誤、較佳支援從損毀傾印檔案擷取內核偵錯輸出變得更加完整,以及超過其輸出資料行寬度甚至螢幕之文字的較佳氣球視窗。
下載 DebugView v4.2:
http://www.sysinternals.com/ntw2k/freeware/debugview.shtml
NEWSID V4.02
若您使用預先安裝 Windows 映像來部署多個系統時,會遇到 SID (安全性識別碼) 重複問題。 共用映像的每台電腦都有相同的內部 Windows SID,這是 Windows 安全性子系統用來作為本機群組和帳號識別碼基礎的識別碼。 由於共用可能導致的安全性問題,大部分管理員會使用 SID 變更工具,在之後為每部電腦套用不重複的 SID。
NewSID (Sysinternals 的 SID 變更工具) 非常受到歡迎,因為它不像其他變更工具需要仰賴 DOS,或需要無附加元件軟體的系統,NewSID 是 Win32 程式,可讓您用來將新的 SID 指派到已安裝應用程式的電腦上。 4.02 版是主要版本更新,擁有新的精靈介面、新增支援 Windows XP,並可讓您重新命名電腦。
許多系統管理員所要求的一項功能,是讓 NewSID 能套用所指定的 SID,這在某些情況下很實用,例如將安裝設定移轉到其他電腦或重新安裝。 NewSID 執行時,會將臨時安全性設定套用至部分登錄以便存取,這會導致登錄成長。 這種膨脹可能會導致登錄超過其大小配額,因此新的 v4.02 功能會在運作的最後步驟,將登錄壓縮為最小大小。
下載 NewSID v4.02:
http://www.sysinternals.com/ntw2k/source/newsid.shtml
PSSHUTDOWN V2.01
Shutdown 是 Microsoft 長久以來包含在 Windows 資源套件中的工具,並且包含在 Windows XP 安裝中。 在 PsShutdown v2.01 之前,這只是個 Sysinternals PsTools 命令列管理工具組的成員,也是 Shutdown 的簡易複製版,但最新版本的功能大幅擴展,遠超過 Shutdown 的功能。 例如,若系統支援電源管理,您就可以關機並關閉電源、鎖定桌面、登出互動式使用者,一切都可在本機或遠端電腦上執行,而不必手動安裝任何客戶端軟體。
下載 PsShutdown v2.01:
http://www.sysinternals.com/ntw2k/freeware/psshutdown.shtml
下載整個 PsTools 套件:
http://www.sysinternals.com/ntw2k/freeware/pstools.shtml
AUTORUNS V2.02
我們都對安裝了不想要的小程式而感到惱火,這些小程式會在我們登入時執行,並在搜尋它們的啟動命令時使我們感到非常挫折。 因此,Windows 擁有將近 2 打的機制來對應這類啟動也不足為奇。 Windows Me 和 XP 包含了 MsConfig 公用程式,有時可能會派上用場,但它遺漏了將近一半可能的啟動位置。
Autoruns 是 Bryce Cogswell 和我自己撰寫的 Sysinternals 工具,會顯示完整的程式樣貌。 它會顯示讓應用程式自身能夠在系統啟動或登入時執行的所有可能登錄清單和檔案位置。 最新版本會針對每個啟動設定映像顯示圖示和版本資訊,方便使用者識別,並新增如操作功能表的使用者介面增強功能。 此外,新版本會識別更多啟動位置,包括登入和登出指令碼、登入時執行的工作排程器工作,和 Explorer 附加元件啟動點。
下載 Autoruns v2.01:
http://www.sysinternals.com/ntw2k/source/misc.shtml
SHAREENUM V1.3
系統管理員常會忽略區域網路安全性的一大要素:共用資料夾。 公司環境中的使用者經常建立內有文件的共用資料夾,以便群組內的同事輕鬆取得文件。 不幸的是,許多使用者並未透過設定來鎖定共用內容,以防其他員工未經授權存取潛在的機密資訊。
ShareEnum 是由 Bryce Cogswell 所編寫的 Sysinternals 公用程式,可協助識別異常的共用情況,並加強保護合理共用的內容。 啟動 ShareEnum 時,其會使用 NetBIOS 列舉功能找出網路上的電腦,並回報這些電腦匯出的共用內容,同時附上共用內容所套用的安全性設定詳細資料。 在幾秒鐘內就能找到開放的共用內容,在共用內容上按兩下即可在 [總管] 中開啟,以便修改設定。 也可以使用 ShareEnum 的匯出功能來儲存掃描,並將目前的掃描與先前儲存的掃描比較。
下載 ShareEnum v1.3:
http://www.sysinternals.com/ntw2k/source/shareenum.shtml
TCPVIEW V2.31
TCPView 是 netstat 類型的圖形公用程式,可顯示系統正在運作的 TCP 和 UDP 端點清單。 若安裝在 Windows NT、2000、XP 及 Server 2003 上,便會顯示各端點所屬的程序。 2.31 版會顯示程序映像檔的圖示,以利辨識。
下載 TCPView v2.31:
http://www.sysinternals.com/ntw2k/source/tcpview.shtml
BLUESCREEN V3.0
Sysinternals Bluescreen of Death Screensaver 多年來一直是十分熱門的下載選擇,且 3.0 版新增了對 Windows XP 的相容性。 這款螢幕保護裝置會顯示逼真的藍色當機畫面,並且根據所使用的作業系統 (例如 Windows NT、2000 或 XP) 隨機呈現正確格式的對應當機詳細資料,還會在暫停一下後模擬重新開機程序,再繼續重複不同的當機畫面。 效果實在太過真實,David Solomon 曾經用這東西騙過我,我也騙過他。 這可以用來當作自己的螢幕保護裝置,騙騙朋友和同事。但如果想安裝到實際運作的系統,千萬要先確定您的老闆具有幽默感。
下載 Bluescreen v3.0:
http://www.sysinternals.com/ntw2k/freeware/bluescreensaver.shtml
WWW.MICROSOFT.COM 網站上的 SYSINTERNALS
以下是自上期電子報以來發行的 Microsoft 知識庫 (KB) 文章中 Sysinternals 參考内容的最新一期。 容我自豪地向各位報告,KB 中對 Sysinternals 的參考總次數就此來到 41 次。
ACC2000:錯誤訊息:ActiveX 元件無法建立物件 http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q319841&
如何:針對 IIS 5.0 http://support.microsoft.com/default.aspx?scid=KB中的 ASP 進行疑難解答;EN-US;Q309051&
OL2002:如何建立信任的 Outlook COM 載入 http://support.microsoft.com/default.aspx?scid=KB巨集;en-us;327657&
PRB:錯誤80004005「Microsoft Jet 資料庫引擎 無法開啟檔案 '(未知)』」; http://support.microsoft.com/default.aspx?scid=KBEN-US;Q306269&
當您啟動、結束或註銷 NetMeeting http://support.microsoft.com/default.aspx?scid=KB時,使用者設定檔卸除失敗;EN-US;Q327612&
XADM:錯誤訊息:錯誤 123:檔名、目錄名稱或磁碟區標籤法不正確 http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q318746&
內部資訊
深入認識全新 XP/SERVER 2003 影片
針對 Windows XP/Server 2003 內部變更的全新影片更新內容,現已開放在版本發行前預訂! 這支新影片可以附屬於現有的影片教學課程 INSIDE Windows 2000,本身也能當成獨立產品。影片中會提供訓練課程,內容包含 Windows XP 的核心更新,以及 Microsoft 將於 4 月推出的新產品 Windows Server 2003。 涵蓋的主題包括效能、可擴充性、64 位元支援、檔案系統、可靠性和復原能力。
互動形式與上一版相同,Windows XP/Server 2003 Update 由 David Solomon 與 Mark Russinovich 為您提供 76 分鐘高度集中的密集課程。 包括複習問題、實驗室練習和紙本作業簿,供應形式為 DVD 影片和 CD-ROM 上的 Windows Media。
由於這些影片在製作過程中,可完整存取 Windows 原始程式碼並接觸開發團隊,能保證您獲得最正確的資訊。 最高的榮譽是 Microsoft 授權這支影片用於其全球內部訓練課程。
3 月 15 日前購買可享發行前特價! 能以 $950 的價格購買 INSIDE Windows 2000,並免費獲得 Windows XP/Server 2003 Update! 幾乎等於是兩者合購零售價 $1,390 享六折優惠。 也可以僅用 $169 單獨購買 Windows XP/Server 2003 Update (零售價 $195)。 其他授權組態請參閱網站。 若要把握這次限時優惠,歡迎立即至此訂購:http://www.solsem.com/vid_purchase.html
Mark 與 David Solomon 於華盛頓貝爾維尤提供 Internals 教學與疑難排解
David Solomon 與我將在 4 月 21 至 23 日於華盛頓貝爾維尤 (鄰近西雅圖) 講授為期 3 天的 Windows 2000/XP/.NET Server 內部課程。 它以「在 Windows 2000,第三版內部」為基礎,涵蓋重要系統元件和機制的核心架構與相互關聯,例如系統線程、系統呼叫分派、中斷處理,以及啟動和關機。 可了解使用 Sysinternals 工具的進階疑難排解技術,以及如何使用 Windbg 處理基本的損毀傾印分析。 涵蓋的主要子系統內部包括進程和線程、線程排程、記憶體管理、安全性、I/O 系統和快取管理員。 您可以瞭解 OS 的內部運作方式,以更有效率地利用平台,而且更有效率地對問題進行偵錯和疑難排解。
若要報名或取得詳細資訊,請參閱 http://www.sysinternals.com/seminar.shtml
WINDOWS 2000 SP3 通用準則認證
大多數人可能都熟悉 「Orange Book」 和 C2 等詞彙。這兩個詞都與 1980 年代和 1990 年代美國政府用來評比軟體 (包括作業系統) 安全性功能的過時安全性評估標準有關。 作為國防部「可信賴電腦系統評估準則」(TCSEC) 內其中一部份內容的「Orange Book」評分標準,於 1999 年起成為較新版「通用準則」(CC) 的一部份。 許多國家都將 CC 認可為國際安全評分標準,其比 TSCEC 和英國的過時「資訊技術安全」(ITSEC) 評分標準更豐富。
當廠商的軟體通過 CC 標準認證時,他們就會指定「保護設定檔」。這是一組安全性功能,而評估結果會回報一種稱為「評估保證等級」(EAL) 的保證等級,確保軟體符合保護設定檔的需求。 這裡一共有 7 個具備較高保證等級的 EAL,讓我們對已評估軟體的安全性功能產生更大信心。
Microsoft 是將 Windows 2000 的 CC 分數提交至受控存取保護設定檔。該設定檔大致相當於幾年前的 TCSEC C2 評分系統,並在 2002 年 10 月完成評估。 執行評估的獨立公司 Science Applications International Corporation (SAIC) 發現 Windows 2000 Service Pack 3 符合控制存取保護設定檔,且評估保證等級 (EAL) 為 4,還帶有瑕疵補救功能。 通用目的軟體的 EAL 為 4 時,就達到最高等級;「缺陷修補」功能則是指即時修正應用程式安全性的 Windows Update 機制。 此評分是到目前為止,作業系統在 CC 下所能達到的最高等級。
VISUAL STUDIO:注意 LASTERROR
如果您開發出仰賴 Win32 API 的應用程式,則您幾乎肯定已經撰寫執行 Win32 函式的程式碼,但無論原因為何,都不會回報特定錯誤。 若是如此,您會發現這個作法很有用。 將運算式 @ERR,hr
新增至監看式視窗,您會看到儲存為目前現有 LastError
變數之值的數值和文字標記法,這是 GetLastError()
Win32 函式傳回的值。
LAMEBUTTONTEXT 登錄值介紹
如果您已檢查 Windows 應用程式啟動時 Windows 2000 或 XP 系統上的 Regmon 追蹤,您可能會看到登錄值 HKCU\Control Panel\Desktop\LameButtonText
的參考,通常是發生 NOTFOUND
錯誤。 Microsoft 的成員顯然相當有幽默感,但這個值究竟是什麼? 事實上,這個值會儲存您在 Windows Beta 版中看到的文字,並在視窗標題列上發佈候選版本,引導您按一下連結以回報意見反應。 如果您可以在非發行前版本的 Windows 上啟用這個值來放置自訂文字,但其功能在正式生產版本上卻不幸遭到停用,就太酷了。
WINDOWS 開發歷程記錄
Paul Thurrott 完成一份相當有參考價值的 3 部分文章系列,介紹 Windows NT 開發過程的歷史。 請參閱 http://www.winsupersite.com/reviews/winserver2k3_gold1.asp
損毀傾印分析的快速簡介
若您安裝新硬體或軟體診斷後系統立即當機,那麼我們能很容易找到原因。 不過,有時候系統當機了,卻沒有明顯的原因。 在這種情況下,判斷當機原因的唯一方法是分析損毀傾印。 在這個教學課程中,我要說明 Microsoft 線上損毀分析 (OCA) 的運作方式,以及這個分析如何解開當機謎題,接著我會說明如何設定自己的當機分析環境,以便查看 OCA 不會或無法成功分析的當機狀況。
Microsoft 在發行 Windows XP 時就引進了 OCA。這是一種自動化分析服務,以當機相關資訊的集中存放庫為基礎。 若 XP 系統在當機後重新開機,系統會提示您將當機資訊傳送至 OCA 網站 (http://oca.microsoft.com/en/Welcome.asp).) 如果您同意,XP 就會上傳一個說明基本系統設定的 XML 檔案,以及 64 KB 小型傾印當機檔案。 小型傾印包含與當機程式碼、當機時正在執行的執行緒堆疊、系統上載入的驅動程式清單,以及管理當機發生時管理處理序的資料結構等少量即時資料。
OCA 收到這些資訊後就會加以分析,並將分析摘要儲存在資料庫中。 如果您在上傳後按照系統提示造訪 OCA 網站,您就有機會追蹤分析結果。 不過您需要先使用 Passport 帳戶登入, 然後輸入當機的名稱,以及說明當機本質的一些文字。 如果 OCA 引擎將當機與 Microsoft 識別出原因之資料庫中的其他當機狀況相互關聯,網站就會以電子郵件告知您。在您重新造訪網站查看所提交的當機狀況時,解決方法中會說明要到哪裡取得驅動程式或作業系統更新。 只是很不幸的,雖然 XP 內建 OCA 支援且接受 Windows 2000 損毀傾印檔案,但並不支援 NT 4,而且無法識別大部分當機的原因 (至少在我的經驗中是如此)。
如果您打算自行執行當機分析,就需要適當的工具。Microsoft 會以 Windows 偵錯工具套件形式提供,您可以到 http://www.microsoft.com/ddk/Debugging/. 下載 此套件包含 Windbg 分析工具等各種內容。 下載並安裝這些工具後,請執行 Windbg 並開啟 [檔案|符號檔案路徑] 對話方塊。 您可以在這裡告知 Windbg 要去哪裡尋找該作業系統版本的符號檔。這是您分析損毀情況時所產生的檔案。 您可以輸入已安裝符號的目錄路徑,但必須取得在損毀系統上所安裝之確切作業系統、服務套件和 hotfix 的符號檔。 手動追蹤符號檔非常繁瑣,如果您想要分析來自不同系統的損毀情況,還必須留意不同安裝程式的各式符號檔集合。
將 Windbg 指向 Microsoft 符號伺服器,即可輕而易舉地管理符號檔。 若將其設定為使用符號伺服器,Windbg 便會根據您開啟的損毀傾印,視需要自動下載符號檔。 符號伺服器會儲存 NT 4 到 Server 2003 Beta 測試版及候選版本的符號,包括服務套件和 hotfix。 將 Windbg 導向符號伺服器的語法為 srv*c:\symbols*http://msdl.microsoft.com/download/symbols
。 將 c:\symbols
取代為欲儲存符號檔的目錄。 如需符號的詳細資訊,請參閱 http://www.microsoft.com/ddk/debugging/symbols.asp
在準備好分析損毀傾印之前,您必須再執行一個步驟:設定系統來產生損毀傾印。 若要執行此操作,請在控制台中開啟 [系統] 小程式,然後在 Win2k 和更新版本上按一下 [進階] 頁面的 [啟動/關機] 按鈕。 在 NT 4 上,移至小程式的 [啟動/關機] 索引標籤。 NT 4 系統上唯一的損毀傾印選項為完整記憶體傾印,損毀時的完整實體記憶體內容會儲存至您指定的檔案。 Win2k 和更新版本上有三個選項:小型、核心和完整。 Win2K & XP Professional 和 Home 預設為 mini;伺服器系統預設為完整。 若在工作站/用戶端電腦上,將設定從小型變更為核心傾印,只能節省作業系統所擁有的部分實體記憶體 (與應用程式相反),因為這樣既可將損毀傾印檔的大小降到最低,又能提供 Windbg 有效分析損毀情況時需要的核心資料結構完整資訊。 若為伺服器系統,則可使用完整傾印,但核心傾印是更安全的選擇 (若您的記憶體系統非常龐大,這可能是您唯一的選擇)。
現在,您已準備好分析損毀情況。 發生損毀時,只需選取 [檔案|開啟損毀傾印] 功能表選項,即可將產生的傾印檔載入 Windbg。 傾印載入時,Windbg 便會開始處理,您將看到作業系統版本和符號載入的相關訊息。 接著,您會看到包含「錯誤檢查分析」的文字訊息。 訊息出現後,系統即會輸出相關報告,說明損毀程式碼、損毀程式碼參數以及「可能原因」。
在某些案例中,Windbg 在此執行的基本分析,已足以識別發生錯誤的驅動程式或核心元件。 不過,建議您一律輸入下列命令:!analyze -v
。 此命令會執行相同的分析,但能提供更多資訊。 例如,會有文字說明損毀程式碼的意義,並告知您選擇性參數的代表涵義,有時還能建議您下一步該嘗試什麼。 您也會看到堆疊追蹤,這是造成程式碼損毀的函式執行紀錄。 如果驅動程式將錯誤資料傳遞至核心或分析所指的驅動程式,您可能會在追蹤中看到其名稱,並將其視為可能的根本原因。
如果您想要深入瞭解損毀時的系統狀態,有許多 Windbg 命令都可讓您查看執行中的流程清單、已載入的驅動程式、記憶體使用量等內容。 Windbg 說明檔也包含錯誤檢查參考,建議您追蹤以取得詳細資訊和指引。如果您仍然無法解決問題,建議您在 Microsoft 知識庫 (KB) 中搜尋該損毀程式碼。 Microsoft 會為常見的損毀情況撰寫 KB 文章,並為您介紹能修正特定問題的廠商網站或 hot fix。
如果您想看我透過範例即時呈現此資訊,請參與下列任一會議與我見面:
- 我和 David 將於 4 月參加的內部和疑難排解研討會 (地點:華盛頓州貝爾維尤)
- 5 月的 Windows and .NET Magazine Connections (地點:亞利桑那州斯科茨代爾):http://www.winconnections.com/win
- 這個夏天的 TechEd US (地點:達拉斯) 或 TechEd Europe (地點:巴塞隆納)
感謝您閱讀 Sysinternals 電子報。
發佈時間:2003 年 2 月 19 日星期三下午 4:47,發佈者:ottoh