2000年11月30日-在此問題中:

  1. 編輯

  2. SYSINTERNALS 的新功能

    • PsLoggedOn v 1。2
    • PsShutdown v1。0
    • PsTools v1。1
    • BgInfo v1。1
    • Tokenmon v1。0
    • Filemon v 4.32
    • Regmon v 4.32
    • 在 Windows 2000、第 3 Ed 內。
    • 11月和冬季 Windows 2000 雜誌
    • Microsoft 的 Sysinternals
    • Sysinternals 授權
  3. 內部資訊

    • NFI
    • 隱藏的 Win9x 登錄機碼
  4. 即將推出的內容

    • 新的 Whistler 系統呼叫

贊助商: WINTERNALS SOFTWARE

Sysinternals 電子報是由 Winternals Software 贊助,網址為 www.winternals.com。 Winternals Software 是 advanced systems tools for Windows NT 的領導開發人員和提供者/2K。 Winternals Software 產品包括 FAT32 適用于 Windows NT 4.0、NTFSDOS Professional Edition (讀取/寫入 NTFS 驅動程式以進行 DOS) 和遠端復原。

netstat 命令(隨附于所有版本的 Windows 9x 和 Windows NT/2000)會顯示您的系統上開啟了哪些 tcp/ip 通訊埠,但不會顯示已開啟該埠的進程。 TCPView Pro,Winternals ' 最新的監視工具,不只隨附 netstat 相等的命令列工具 Tcpvstat,它會顯示每個埠開啟的進程,但包含顯示相同資訊的 GUI,以及 tcp/ip 活動的即時追蹤。 即時追蹤會顯示讓應用程式進行網路存取、存取的本機和遠端 IP 位址,以及選用的 DNS 名稱解析、存取類型、存取成功,以及傳輸的資料量。 TCPView Pro 僅限 $69。 立即下載 TCPView Pro 的14天完整功能試用版,網址為 www.winternals.com/products/monitoringtools/tcpviewpro.shtml。

大家好,

歡迎使用 Sysinternals 電子報。 這份電子報目前有28000的訂閱者。

從 Windows NT 移至 Windows 2000 的優點之一,就是大幅改善可靠性。 我寫了幾篇文章中改進的原因,而且主要是稱為驅動程式驗證器的工具結果。 您可以在 [開始] 功能表的 [執行] 對話方塊中輸入 "Verifier" 來設定要啟動的驗證器,以密切監看特定設備磁碟機的執行,以尋找任何的驅動程式設計規則是否有違規。 但是,驗證器會比被動監視更進一步,不過,它也 exacerbates 潛力。例如,針對使用無效區域所 straddled 的驅動程式配置記憶體區塊,以及將傳遞至驅動程式之資料結構中的特定欄位清空時,所發生的錯誤狀況。 如果您真的想要變得很困難,您可以讓驗證器模擬驅動程式的低記憶體狀況。

Microsoft 會透過其驅動程式簽署計畫來利用驗證程式,這需要由 Microsoft 數位簽署的任何驅動程式通過嚴格的驅動程式驗證器測試。 安裝驅動程式時,硬體嚮導會檢查驅動程式是否已簽署。 如果不是,則會根據您在 [驅動程式簽署選項] 對話方塊中輸入的設定來警告您或無法安裝驅動程式,這可從主控台中系統小程式的 [硬體] 頁面存取。

預設的驅動程式簽署原則會警告使用者有關未簽署驅動程式的問題,足以讓大部分的硬體廠商都能充分利用使其驅動程式穩固並讓其成為簽署的問題。 不過,設備磁碟機可搶先至驅動程式簽署原則未偵測到的系統。 只有使用 INF 檔案安裝的驅動程式 (以 .inf 副檔名結尾的驅動程式安裝檔案,) 檢查是否有簽章。 安裝程式應用程式可以直接使用安裝程式 Api 手動安裝驅動程式,或手動設定驅動程式的登錄設定。 Sysinternals 應用程式是這項功能的絕佳範例: Filemon、Regmon 和其他 Sysinternals 工具,這些工具的驅動程式元件會以手動方式安裝其驅動程式,因此您不會收到警告,表示這些工具未由 Microsoft 簽署。

通常不會與 INF 檔案一起安裝的驅動程式包括病毒掃描程式、加密軟體和 CD-ROM 燒錄軟體。 不過,這不會讓硬體相關的驅動程式無法通過。 適用于 Windows 2000 (www.sysinternals.com/ctrl2cap.htm 的 Sysinternals Ctrl2cap 驅動程式,是以略過驅動程式簽署檢查的方式安裝的硬體相關驅動程式範例。 此漏洞會導致系統上的驅動程式尚未經過驗證,這可能會危害系統穩定性, (我確認) 最高設定的所有 Sysinternals 驅動程式。 Microsoft 應該強制所有驅動程式,而不只是使用 INF 檔案安裝的驅動程式,以進行簽章檢查。

為什麼我會在此 rant? 我的 cd-rom 燒錄軟體(這是市場上最受歡迎的軟體類型)有一個驅動程式,將重現方式損毀 Windows 2000 SP1 系統。 如果我設定 Driver Verifier 來檢查它,系統就不會在驗證器偵測到驅動程式的第一次違規並損毀系統之前完成開機。 安裝的驅動程式沒有 INF 檔案,因此我不會警告您該驅動程式未簽署。 我保證如果 Microsoft 的原則更嚴格,此廠商會將不帶正負號的 (和錯誤的) 驅動程式傳送給這兩次。

請將電子報傳遞給您認為可能對其內容感興趣的朋友。

謝謝!

-Mark

SYSINTERNALS 的新功能

PSLOGGEDON V 1。2

除了從 LoggedOn 到 PsLoggedOn 的明顯名稱變更之外,此命令列工具還能讓您向本機或遠端系統上的資源分享顯示登入的使用者,還有一些新功能。 第一個是由使用者意見反應所產生的 '-l ' 命令列參數。 許多人都會使用 PsLoggedOn 來查看是否有任何帳戶在本機登入伺服器。 例如,使用者可能會透過檔案共用登入,但在決定何時可以更新帳戶,或可以從遠端管理伺服器時,這並不相關。

PsLoggedOn 的第二個新功能顯示您不只是登入的使用者,而是登入的時間。 PsLoggedOn 會在使用 WIN32 API (NetSessionEnum)列舉資源分享登入時,從資源分享取得登入的登入時間, (命令列 Net 命令也會使用 NetSessionEnum 來列舉會話) 。 但是,並沒有 WIN32 API 可告知您在本機登入系統的使用者,而是在登入的時間更少。

若要判斷誰是在本機登入系統,PsLoggedOn 會列舉位於電腦登錄機碼下 (Sid) 的安全識別碼 HKEY_USERS 。 當有人在本機登入電腦時,無論是在主控台或透過服務,其設定檔都會載入到 HKEY_USERS 金鑰中。 應用程式可以透過金鑰存取其設定檔的登錄設定 HKEY_CURRENT_USER ,因為系統會將該金鑰視為其特定設定檔的符號連結 HKEY_USERS 。 因此,PsLoggedOn 可以藉由將電腦金鑰中所找到的 Sid 轉譯成對應的使用者名稱,來知道誰是在本機登入 HKEY_USERSRegConnectKey當您導向遠端電腦的登錄,以列出登入遠端系統的使用者時,PsLoggedOn 會使用連接到遠端電腦的登錄。

使用類似的訣竅來找出使用者登入的工作時間。 當 WinLogon 程式在登入後將使用者的設定檔載入時 HKEY_USERS ,winlogon 會建立暫時性的 (,而不會儲存至設定檔中的) 設定檔,該設定檔中的設定檔名為、適當、穩定的環境。 登錄會儲存最近修改過的登錄機碼時間戳記,因為系統不會在建立之後修改暫時性環境子機碼,所以 PsLoggedOn 可以藉由取得其 Volatile 環境子機碼的時間戳記,判斷使用者登入的時間。

下載 PsLoggedOn v 1.2 與完整來源
www.sysinternals.com/psloggedon.htm。

PSSHUTDOWN V1。0

如果您需要將本機或遠端 Windows NT/2000 系統關機或重新開機,則您會想要下載 PsShutdown。 PsShutdown 是 Shutdown Windows NT/2000 資源套件工具的複製。 它採用相同的命令列引數,可讓您指定關機之前的延遲、是否要重新開機、要對目前登入系統的任何使用者顯示的選擇性訊息,以及要關機或重新開機的電腦名稱稱。

下載 PsShutdown v1.0,網址為 www.sysinternals.com/psshutdn.htm。

PSTOOLS V1。1

您可能已經注意到開頭為 "Ps" 前置詞的 Sysinternals 工具數目不斷增加。 第一個是 PsList,這是一種命令列工具,會列出本機或遠端 Windows NT/2000 系統上使用中進程的相關資訊。 我 PsList 了它的名稱,因為標準 UNIX 的命令列程式資訊工具名為 "ps"。 取得前置詞的下一個工具是 PsKill,這是一個命令列公用程式,可讓您終止在本機或遠端 Windows NT/2000 系統上執行的處理常式。 我 PsKill 了 "Ps" 前置詞,因為它已與 PsList 完美相關。

經過一段時間後,我開發了與 PsList 和 PsKill 共用相同定義特性的其他工具:它們都是以命令列為基礎,而且可在本機或遠端 Windows NT/2000 系統上運作。 例如,ElogList 可讓您傾印系統事件記錄檔的內容,而 GetSid 會向您顯示電腦或特定帳戶的 SID。 最近,我決定將所有這些工具系結在一起,方法是提供所有「Ps」前置詞,並將其下載為名為 PsTools 的單一套件。

PsTools 包括 PsList、PsKill,以及重新命名的 PsLogList 和 PsGetSid,總共包含七個工具。 如果您看到具有 "Ps" 前置詞的 Sysinternals 工具,您會自動知道它是一種可在本機和遠端運作的命令列工具。

下載 PsTools v1.1,網址為 www.sysinternals.com/pstools.htm。

BGINFO V1。1

由於有大量的使用者意見反應,Bryce 已更新 BgInfo,這是一個公用程式,它會設定桌面壁紙來顯示有關系統設定的可自訂資訊,這是他取得使用者意見反應的結果。 依預設,BgInfo 會在套用其對話方塊中指定的設定之前,先將10秒遞減,但是新的命令列選項,可 /timer 讓您同時變更或消除倒數計時。 這可讓您更方便地將 BgInfo 包含在登入腳本中,或做為設定檔的開機檔案夾中的快捷方式。

1.1 版包含其他的新功能,例如能夠顯示您所定義的任意文字,以及更多預先定義的資訊分類。 桌面點陣圖 BgInfo v1.1 建立通常也比較小,可將 BgInfo 的桌面記憶體使用量降到最低。

下載 BgInfo v1.1,網址為 www.sysinternals.com/bginfo.htm。

TOKENMON V1。0

Tokenmon 是您可以從 Sysinternals 下載的各種監視工具套件的最新加入。 Tokenmon 與 cousin (例如 Regmon 和 Filemon)共用相同的 UI,可監視 Windows NT/2000 系統上的重要安全性相關活動。 「重大」安全性相關活動是什麼? Windows NT/2000 安全性的核心是 token 物件,這是包含帳戶 SID、群組 sid 和許可權的資料結構。 每當進程嘗試存取受保護的物件時,安全性參考監視器會使用其權杖中的 Sid 作為存取驗證的一部分。 如果處理常式嘗試執行受限制的作業,例如將系統重新開機,則系統會檢查進程的權杖中是否有適當的許可權。

Windows NT/2000 安全性模型的其中一項強大的 (和獲專利的) 功能是模擬。 模擬可讓執行緒暫時覆寫其以進程為基礎的身分識別,並透過使用模擬權杖來採用替代身分識別。 伺服器應用程式會在存取資源時,利用模擬,在存取期間採用用戶端的身分識別。

Tokenmon 會以 Regmon 針對登錄 Api 進行的相同方式安裝系統呼叫攔截,以監視權杖的建立和刪除、啟用和停用許可權,以及模擬。 Tokenmon 也會使用 NT/2000 核心提供的進程建立勾點來監視進程的建立和刪除,以及其他 Api 來判斷使用者登入的時間和登出時間。

Tokenmon 的完整原始程式碼已張貼,值得您討論一些程式碼所示範的有趣技巧。 Tokenmon 會藉由將 NtCreateToken 系統呼叫(例如 WinLogon)所用的登入事件,來偵測登入事件,以在新登入會話的第一個進程中建立初始權杖。 第一個進程所建立的進程會繼承第一個 token 的複本。 若要偵測登出,Tokenmon 會透過核心模式 SeRegisterLogonSessionTerminatedRoutine 函式註冊登出通知,此 API 存在於檔案系統驅動程式的優點(稱為網路重新導向程式),可快取登入會話資料,並希望使用者登出時進行清除。 網路重新導向程式會執行檔案共用用戶端/伺服器連線的用戶端。

另一個有趣的 Tokenmon 實行詳細資料,是 Tokenmon 攔截所監視之 Api 的方式。 某些 Tokenmon 勾點的 Api 不會匯出以供設備磁碟機使用,但是會在使用者模式 NTDLL.DLL 程式庫中匯出,以供使用其 Win32 對應專案的應用程式使用。 所有 Regmon 掛勾的登錄 Api 都會以核心模式匯出,讓 Regmon 設備磁碟機能夠取得其系統電話號碼,以及適當地攔截系統調用資料表。 針對未匯出以供驅動程式使用的 Api,Tokenmon GUI 必須使用 NTDLL.DLL 中的匯出來取得電話號碼,然後將數位傳遞給驅動程式,讓驅動程式能夠攔截系統呼叫資料表。 因此,Tokenmon 會示範如何攔截未在核心模式中匯出的系統呼叫。

在 www.sysinternals.com/tokenmon.htm 下載含完整來源的 Tokenmon v1.0。

FILEMON V 4.32

這項最新的 Filemon 更新引進了更直覺且完整的篩選、顯示 Windows 9x/Me 網路檔案存取的完整 UNC 路徑名稱,以及 NTFS 元資料檔案名的顯示。

舊版 Filemon 需要您輸入具有強制萬用字元的篩選準則。 例如,如果您想要監視磁片磁碟機上臨時目錄的存取權 C: ,您必須輸入如下的篩選器: " c:\temp\* "。 使用新的篩選語法萬用字元是選擇性的,因此當範例篩選準則可以運作時," c:\temp " 會達到相同的效果。 此外,Filemon 現在會對顯示中的所有欄位套用您輸入的篩選器,包括進程名稱、要求類型、路徑和 "other" 資料行。 這項彈性可讓您監看特定類型的要求,或其他資料行中特定資料的要求,但先前並不可能發生。

Filemon 在 Windows 9x/Me 系統上的使用者現在會看到 Filemon 在存取遠端資源時,顯示路徑名稱具有完整的 UNC 語法。 Filemon 先前未顯示這類存取的伺服器或共用名稱,因此不完整的路徑名稱。

最後,如果您在 Windows NT/2000 上使用了 Filemon,您就會在 [路徑] 資料行中看到「dasd」文字有許多存取權 ( 「dasd」來自「直接存取儲存體裝置」,這是 Microsoft 用來描述略過檔案系統結構) 之磁片區存取權的詞彙。 針對 NTFS 磁片區上的大部分活動,DASD 現在已經是過去的一件事。 相反地,您會看到所讀取和寫入的 NTFS 中繼資料檔案的名稱。 例如,對 MFT 記錄的更新會先產生一個 DASD 輸出行,但現在您會看到它是「$Mft」的存取權,也就是 MFT 的內部元資料檔案名。

為什麼 Filemon 沒有顯示元資料檔案名,以及它現在如何取得這些名稱呢? 代表 NTFS 中繼資料檔案的檔案物件不會儲存檔案名,因此 Filemon 無法從檔案物件解壓縮名稱。 Filemon 用來取得檔案名稱的替代方法,就是查詢檔案系統驅動程式,不適用於 NTFS 中繼資料檔案。 雖然 NTFS 會以中繼資料檔案的名稱來回應,但是在 NT 4 上的 NTFS 會隨機造成損毀,而在此類查詢的回應中,NTFS 有時會停止回應。

因此,Filemon 必須使用訣竅來取得元資料檔案名。 當它在 NTFS 磁片區上看到以檔案物件導向的要求(沒有名稱)時,會傳送 NTFS 給檔案的索引。 這是 Win32 函數 GetFileInformationByHandle 傳回的相同索引,而針對 NTFS 磁片區上的檔案,索引是檔案的 MFT 索引。 在 MFT 中的前16個專案會保留給特定的中繼資料檔案,因此,在該範圍內的索引中,Filemon 只會在它自己的資料表中查閱元資料檔案名。

可惜的是,您仍會看到適用于目錄中繼資料和檔案配置表的 DASD (FAT) 存取 FAT 磁片區,因為 FAT 不會儲存目錄中繼資料檔案或 FAT 的名稱。 您將會對 NTFS 記錄檔 ($LogFile) 的存取頻率感到驚訝。 順便一提,NTFS 在 Whistler 上會儲存中繼資料檔案的名稱,因此在 Whistler 上不需要這個訣竅。

最終的 Filemon 增強功能可讓 Filemon 顯示具有毫秒解析度的時間時間戳記。 這項支援在 Windows 9x/我的 Filemon 驅動程式中需要很麻煩的攻擊,因為 Windows 9x/me 核心的計時函式中有錯誤。 如需詳細資訊,請參閱原始程式碼。

在 www.sysinternals.com/filemon.htm 下載 Filemon v 4.32 與原始程式碼。

REGMON V 4.32

Regmon 的變更不像 Filemon 的變更一樣重要,但 Regmon 現在支援與 Filemon 相同更直覺的篩選語法,例如 Filemon,會將篩選套用至所有欄位。 它也可以顯示時間戳記的毫秒解析度。

您已開始與 Whistler (的 Windows 2000) Beta 1 的後續版本,可能會注意到 Regmon 在啟動時,可能會有先前的版本損毀。 這是因為 Microsoft 已將 Regmon 修改的系統呼叫資料表,以將其勾點插入到寫入保護的記憶體中。 Regmon v 4.32 的解決方法是使用未在 Microsoft 要求中提供原始程式碼的技術,因為這項技術可能會在 Whistler 的最終發行版本中中斷,且 Microsoft 正在探索支援系統呼叫連結的方法。 Windows NT 並非設計用來支援系統呼叫的連結,這是我們在1996中第一版 Regmon 的第一版中所引進的。

以下是未記載的 Filemon/Regmon 提示。 我通常會收到一封電子郵件,要求如何從 Windows NT/2000 上的非系統管理帳戶執行 Regmon 或 Filemon。在許多情況下,當特定應用程式從系統管理員帳戶執行,而不是從無特殊許可權的使用者執行時,在許多情況下,Regmon 和 Filemon 會很適合用來判斷應用程式失敗的原因 (通常是與檔案) 或登錄機 不過,從無特殊許可權帳戶執行 Regmon 和 Filemon 將會失敗,因為 Filemon 和 Regmon 會安裝設備磁碟機,需要系統管理員許可權。

不過,有一項訣竅讓您解決這個問題:如果您以系統管理員身分登入,然後啟動 Filemon 或 Regmon,就可以從無特殊許可權的帳戶執行這些動作。 這是因為 Filemon 和 Regmon 會在第一次執行時安裝驅動程式,並在下列執行中存取已載入的驅動程式。 由於我未在驅動程式中實施任何安全性,因此無特殊許可權的使用者可以在載入驅動程式之後執行工具。 安全性問題? 沒錯,但 Filemon 和 Regmon 的目的是要進行疑難排解工具,讓我和詢問如何從無特殊許可權帳戶執行公用程式的人員,將此視為一項功能。

下載 Regmon v 4.32 與 www.sysinternals.com/regmon.htm 的完整原始程式碼。

DEBUGVIEW V 4.02

我收到最多使用者意見反應的其中一個應用程式是,有點令人驚訝的 DebugView。 這個新版本有一些重要的增強功能,可解決我所收到的許多功能和功能要求,使 DebugView 比以往更加強大。

最明顯的是,DebugView 現在支援最多五個不同的醒目提示篩選,每個都有自己的可自訂色彩。 這可讓您同時在 debug 輸出中的不同關鍵字上進行首頁,並輕鬆地加以區別。 此外,DebugView 會在 Filemon 和 Regmon 中執行相同的新篩選語法,讓子字串比對的萬用字元是選擇性的。

我收到有關舊版 DebugView 的投訴,那就是,即使您只想要捕捉 Win32 debug 輸出,仍然需要系統管理許可權才能執行 DebugView,因為 DebugView 無法安裝其設備磁碟機,就不會執行。 這個新版本甚至是從沒有特殊許可權的帳戶執行。 如果它無法安裝或存取其驅動程式,則只會停用其核心模式的捕獲相關功能表項目。

這兩項功能可讓您更輕鬆地讓 DebugView 在您登入時自動開始捕獲輸出,這是最小化的工作列選項以及對命令列參數的支援。 使用命令列參數時,您可以在系統匣中啟動 DebugView,並將它所捕獲的記錄輸出寫入檔案,然後在開始 DebugView 之後,您可以使用功能表選項來切換最小化的最小化按鈕行為,並將系統匣最小化。

針對在 Windows 2000 終端機服務的遠端會話中執行 DebugView 的使用者,DebugView 現在會在您的遠端會話中執行應用程式所產生的 Win32 輸出,也可從主控台會話取得。 這在遠端偵錯 COM 伺服器和 Win32 服務時很有用,因為這些類型的程式會在主控台會話中執行。

最後,DebugView 現在適用于 Whistler Beta 1,並支援從核心模式 DbgPrint 函式上的數個新的 Whistler 變數來捕捉輸出。

在 www.sysinternals.com/dbgview.htm 下載 DebugView v 4.02。

在 WINDOWS 2000 中,第3版

Windows 2000 的內部官方書現在已可供使用! 此版本(由 David 索羅門群島 (www.solsem.com) 和 Mark Russinovich)超過40% 以上的版本,並有新的網路功能、隨插即用、電源管理、服務、登錄、WMI、開機和關機和儲存。 它也包含一張 CD,其中有數個功能強大的工具,而不是其他任何地方,可用於調查 Windows 2000 內部。

我為本書撰寫的其中一項工具是 LiveKd,這是一項程式,可讓您在即時系統上執行 Microsoft 核心偵錯工具 i386kd 和 WinDbg,就像是查看損毀傾印一樣。 書籍中所呈現的許多實驗都能在使用 LiveKd 執行的即時系統上運作。 LiveKd 的運作方式是安裝檔案系統篩選器驅動程式,將電腦的實體記憶體呈現給 Microsoft 偵錯工具,就像是損毀傾印檔案一樣。 LiveKd 會建立0長度的虛擬傾印檔案,當偵錯工具從檔案讀取時,LiveKd 會從實體記憶體傳回資料。 查看 LiveKd 修補程式的 [錯誤和更新] 頁面,以更正 LiveKd v1.0 與數個存取中病毒掃描程式之間的不相容性。

立即透過 www.sysinternals.com/insidew2k.htm 查看書籍的目錄和順序。

11月和冬季 WINDOWS 2000 雜誌

想知道 NTFS v4 和 NTFS v5 之間有哪些確切的改變嗎? 如果是,請查看 Windows 2000 雜誌的11月和冬季問題中的兩部分系列。 第1部分描述重新剖析點、目錄連接、磁片區掛接點、配額支援,以及合併的安全性設定。 第2部分以接近加密、資料流程、分散式連結追蹤和變更日誌的方式結束。 這兩篇文章都能讓您更深入探索,並提供這些新功能的磁片變更和內部行為。

我不在文章中討論的是,Windows NT 4 的 NTFS 不是真正的版本

在 www.sysinternals.com/publ.htm 尋找所有發行的連結。

SYSINTERNALS AT WWW.MICROSOFT.COM

Sysinternals 已在幾個新的 Microsoft 知識庫中發表了 (KB) 文章自上次電子報起的外觀,而且我也追蹤一些較舊的知識庫文章,稱為 Sysinternals。

  • Q260513 PRB:當您安裝 Visual Studio 產品時發生錯誤
    http://support.microsoft.com/support/kb/articles/Q260/5/13.ASP
    本文建議讀者使用 Filemon 和 Regmon 來針對 Microsoft Visual Studio 安裝問題進行疑難排解。

  • Q202258 XADM:系統找不到指定的路徑-識別碼 No:0cx002003
    http://support.microsoft.com/support/kb/articles/Q202/2/58.ASP
    Microsoft 實際上會逐步引導使用者使用 Filemon 來針對 Exchange 5.0 service pack 升級問題進行疑難排解、使用範例 Filemon 輸出行完成,以及設定篩選準則的建議。

  • Q269383 PRB:顯示 VB/VBA 參考時發生「存取系統登錄時發生錯誤」訊息
    http://support.microsoft.com/support/kb/articles/Q269/3/83.ASP
    Regmon 會取得本文的參考,其中討論如何使用它來判斷 Visual Basic IDE 中的 [參考] 對話方塊在無法存取登錄機碼的情況下,因為 Seagate Crystal reports 將不正確的許可權套用至數個索引鍵。

  • Q269251 錯誤:自動化 Windows Installer 可能會在列舉產品時停止回應
    http://support.microsoft.com/support/kb/articles/q269/2/51.asp
    Regmon 會在這裡再次反白顯示,用來顯示 Windows Installer automation bug。

  • 當您監視開啟的控制碼時,Q276525 您的電腦可能會停止回應
    http://support.microsoft.com/support/kb/articles/Q276/5/25.asp
    NtHandle 會負責洩漏 Windows NT 4 SP6a 中的錯誤(bug),在此情況下,核心會在使用 NtHandle 時在特定狀況下停止回應。 Microsoft 與我合作來解決問題,並已發出一個修正程式。 如果您的 NT 4 系統在使用 NtHandle 時停止回應,您應該會看到此文章的連結。

  • Q160660 Ntregmon.exe 導致使用新 Service Pack 停止0x0000001E
    http://support.microsoft.com/support/kb/articles/Q160/6/60.asp
    最後一個是 oldie,但是包裝盒。 第一個版本的 Regmon 使用硬式編碼的系統呼叫號碼來修補系統服務資料表,以便攔截登錄 Api。 因為服務套件之間的系統呼叫號碼有時會變更,所以這項技術很脆弱,而且我尚未針對依舊撰寫, Andrew Schulman 的建議進行此 (,而是害怕 Regmon 會中斷) 。 當然,SP3 引進了幾個新的系統呼叫,而 Regmon 會在發生不正確的系統呼叫時損毀系統。 雖然這當然感到苦惱了一些人,但是我已經把自己的知識庫文章從看得到了!

SYSINTERNALS 授權

即使您從 Sysinternals 下載的軟體是可免費使用的,這表示您可以使用它而不需支付費用,您也不能再轉散發,或衍生從 Sysinternals 原始程式碼散發的產品。 比方說,如果您在多個使用者發現特定 Sysinternals 工具有用的公司工作,您可能不會將這些工具張貼到內部共用或網站。 相反地,請將您網站上的連結放在 Sysinternals 上的每個工具首頁上。 這也有助於確保您的同事一律會下載最新版本。

如果您想要在內部轉散發 Sysinternals 工具、使用商業產品或在共用的 CD 上,或是想要以 Sysinternals 原始程式碼作為商業產品或可轉散發方案,請傳送電子郵件,以說明您想要使用的詳細資料 licensing@ ...。

內部資訊

NFI

有幾張電子報會顯示 Microsoft 不慎在 NT 4 SP4 CD 上 DiskEdit 工具的存在。 DiskEdit 是一種功能強大的古怪檔案系統結構檢視器,可讓您用來檢查 NTFS 和 FAT (,不過它是) 磁片資料結構上有趣的 NTFS 支援。 但是,如果您錯過了 NT 4 SP 4 光碟,而且有興趣探索 NTFS 磁片上的結構,您就不會在此深。 Microsoft 發行了一個名為 NFI 的免費工具 (NTFS 資訊) 瞭解並可以傾印 NTFS 磁片區的內部結構。 雖然它的輸出不如 DiskEdit 的詳細資訊,但它會很有趣且更洩漏。

You can download NFI as part of the OEM Support Tools at http://support.microsoft.com/support/kb/articles/q253/0/66.asp. 使用檔案名來執行 NFI 會傾印該檔案的 NTFS MFT 記錄。 下列範例顯示 NFI 傾印中繼資料檔案的 MFT 記錄 $Quota ,這是在磁片區上啟用配額管理時只存在的檔案:

C:\nfi c:\$extend\$quota
File 24
\$Extend\$Quota
$STANDARD_INFORMATION (resident)
$FILE_NAME (resident)
$INDEX_ROOT $O (resident)
$INDEX_ROOT $Q (resident)

輸出顯示檔案在 MFT 中佔用24日專案 (其檔案索引為 24) ,其中包含四個屬性,包括標準資訊、檔案名和兩個索引根目錄 (而索引基本上是以定序排序的專案清單,例如目錄) 。 我描述 ntfs 如何使用 $Quota ntfs v5 的最新 Windows 2000 雜誌系列中的索引。

若要傾印磁片區上的所有檔案,請在 NFI 的命令列上指定磁碟機號,而不使用檔案名,例如 nfi c: 。 您會看到每個 MFT 專案的清單,包括所有中繼資料檔案。

NFI 有一些其他長處,例如將磁區編號轉譯至其所在檔案的能力。 想知道磁片磁碟機上有哪些檔案磁區 2345 C: ? 使用命令 nfi c: 2345 。 請注意,這在軟體-RAID 磁片區(例如磁片區組和等量組)上會失敗。 NFI 適用于 NT 4 和 Windows 2000。

隱藏的 WIN9X 登錄機碼

有兩個問題:我曾經說過,我會在下列電子報中討論「隱藏的 Win9x 登錄機碼」,而您有好幾個提醒我忘了。 本月我將告訴您 Windows 9x 中隱藏的登錄機碼。

幾年前,我發現了一個方法可以在 Windows NT 中建立隱藏的登錄機碼。 我的意思是,雖然您可以看到使用 Regmon 來建立應用程式的金鑰,但您無法撰寫 Win32 程式來查看機碼的值,也不能使用 Regedit 或 Regedt32 登錄編輯器來查看金鑰。 隱藏金鑰適用于儲存您不希望使用者能夠修改的資料,例如試用產品的超時日期。

若要建立隱藏的登錄機碼,我實現了原生 NT API (也就是建立 WIN32 API 時所使用的系統呼叫介面),需要將登錄機碼指定為計數的 Unicode 字串。 計數的 Unicode 字串是長度欄位所表示的長度,而不是 null 結束字元的存在。 因此,您可以使用原生 API 建立包含 null 字元的登錄機碼(例如) "test\0test" 。 由於 WIN32 API 的登錄機碼 API 是以 null 結束字串為基礎,因此無法使用 WIN32 API 來開啟包含 null 結束字元的登錄機碼。 如果您嘗試將上述的範例索引鍵名稱傳遞給或,就會將 RegOpenKeyRegCreateKey 它視為 "test" ,並在 null 字元截斷字串。 由於所有現有的登錄編輯器(包括隨附于 Windows NT 和 Windows 2000 的登錄編輯器)都會使用 Win32 api,此應用程式會使用原生 api 來建立 null 字元內嵌名稱,以有效地建立隱藏的索引鍵。

此方法適用于 Windows NT,但 Windows 9x 呢? 我不認為有辦法在 Windows 9x 上建立隱藏的登錄機碼,直到有人以電子郵件傳送給我的 Regmon 記錄檔,以顯示 Internet Explorer (IE) 存取未出現在 Regedit 中的金鑰。 若要自行查看,請啟動 Regmon 並設定下列 include 篩選: "policydata"。 然後啟動 IE (這適用于所有版本的 IE 4 和 IE 5) 並造訪網站。 如果您在 Regmon 中看不到任何輸出,請移至 IE 的 [選項設定] 對話方塊,並確定已啟用 [內容審查]。

如果已啟用內容建議程式,或已在您的系統上啟用,您將會看到 HKLM\PolicyDat 金鑰和其子機碼的存取權。 不過,在 HKEY_LOCAL_MACHINE 您查看 Regedit 時,找不到 PolicyData 索引鍵。 花一分鐘的時間看看您是否可以找出發生什麼事。

答案是,IE 會使用 WIN32 API 動態載入登錄 hive RegLoadKey 、讀取所需的值,然後將 hive 卸載 RegUnloadKey 。 Hive 的命名方式為:檔案 C:\Winows\System\Ratings.pol 為隱藏和唯讀,但您可以輸入來顯示它 attrib –r –h c:\windows\system\ratings.pol

您在 Regmon 中看到的追蹤會顯示 Content Advisor 在 hive 中尋找的資訊。 如果您想要自行探索其內容,請從 www.sysinternals.com/regload.zip 下載我的 Regload 公用程式,並使用下列語法來執行: regload test c:\windows\system\ratings.pol 。 然後開啟 Regedit 並流覽 HKLM\test 。 您可以找到的值會對應至您在內容建議程式中指定的設定,而且與 hive 中的值所指定的設定檔有關 Users\FileName0 。 此值通常會指向 C:\Windows\System\RSACi.rat 網際網路內容分級關聯所定義的評等檔案。 順便一提,您可能會在內容建議程式的登錄設定中看到一個名稱為 "PleaseMom" 的值,例如在底下 HKLM\Test\Users\Default 。 此值衍生自 Content Advisor 設定對話方塊的 [一般] 頁面上的 [監督員可以輸入密碼以允許使用者查看受限制的內容] 核取方塊。

Microsoft 會混淆這些登錄值是否存在的原因應該很明顯。 不過,其設計中有相當嚴重的弱點。 請注意,當您啟用內容審查時,您必須指定密碼來保護 Content Advisor 的 [設定] 對話方塊。 此密碼會儲存在中 HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Ratings\Key 。 刪除該值,presto,您可以存取 Content Advisor 設定,而不需要輸入密碼! 現在,如果 IE 開發人員在混淆 Content Advisor 設定時遇到問題,為什麼要讓這項功能在開啟時消失? 我猜的一般 Microsoft 安全性設計。 如此一來,只要輸入,就可以卸載您以 Regload 載入的金鑰 regload test

即將推出的內容

新的 WHISTLER 系統呼叫

Whistler 是 Windows 2000 作業系統的增量演進,著重于提升可靠性,以及從 Windows 9x 作業系統輕鬆地遷移使用者。 不過,它確實包含一些核心變更。 最明顯的是,有幾個新的系統呼叫和匯出的 (可供設備磁碟機) 核心功能使用。 下一次我將為您提供這些新核心 Api 的預覽。


感謝您閱讀 Sysinternals 電子報。

Ottoh 年11月30日星期四下午 2000 7:05 PM 發行

[電子報封存 ^][ 磁片區2,數位 4][磁片區3,數位 1 ]

[電子報封存 ^][ 磁片區2,數位 4][磁片區3,數位 1 ]

系統內部電子報第2號,第5期

www.sysinternals.com
著作權 (c) 2000 Mark Russinovich