|
論壇說明 |
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
|
主題工具 | 顯示模式 |
2006-06-07, 10:03 PM | #1 |
榮譽會員
|
軟體 - 揪出系統中胡作非為的DLL黑手
揪出系統中胡作非為的DLL黑手
在Windows中,幾乎所有應用程式都會用到DLL(動態鏈接庫)文件,它的正常與否關係到軟件能否正常執行。很多軟件故障也和它有直接關係。但應用程式往往會調用幾十個DLL程式,怎麼判斷誰是「罪魁禍首」呢? 案例回放:在一次非法操作後,Windows XP「搜索助理」變成一張「白板」,不僅如此,「控制台」中「用戶賬戶」項也顯得「面無表情」。點擊「開始→幫助和支持」,滑鼠一陣閃爍卻始終不見「幫助和支持」程式界面的蹤影。 案例分析:憑感覺,筆者認為系統中的某個DLL文件已經登出、丟失或損壞。但Windows中幾乎每個程式都要調用成十上百個DLL文件,如果按一般方法一個個尋找分析,無異於大海撈針。考慮到三個程式同時「毀容」,應該是受同一個(或幾個)DLL文件的影響。為此必須找到上述這三個程式共同使用的DLL文件,然後,從中找出「幕後真兇」。 查找與比對 第一步:先從「搜索助理」入手,先弄清其「身世來歷」。在另外一台裝有Windows XP的電腦中打開「搜索助理」,同時按Ctrl+Alt+Del鍵調出「任務管理器」,在「應用程式」選擇項中,選中「搜索助理」並右擊,選擇「轉到工作行程」,呵呵,原來它是Explorer.exe(視窗檔案總管)的一部分。 第二步:用類似方法可得知「幫助和支持」屬於工作行程Helpctr.exe,但在「用戶賬戶」中只能用觀察比較的方法查出其歸屬工作行程mshta.exe。 小提示 可通過打開、關閉「用戶賬戶」 的方法比較「任務管理器」中的變化來確定其所屬的工作行程;也可以在打開「搜索助理」時,在「命令提示字元」中輸入「tasklist /fo table>C:\acc1.txt」,在關閉該程式後,在「命令提示字元」中輸入「tasklist /fo table>C:\acc2.txt」,然後用fc命令進行比較「fc C:\acc1.txt C:\acc2.txt>C:\acc.txt」,比較得出的多餘項即為該程式所屬的工作行程。 第三步:重啟電腦,下面要請軟件LISTDLLS出場了。到這裡下載該軟件,然後將listdlls.exe移動到C:\Windows,按Ctrl+R打開「執行」框,輸入「cmd」,在「命令提示字元」中輸入: listdlls -r explorer.exe>C:\explorer1.txt。 接著打開「搜索助理」,再次在「命令提示字元」中輸入:listdlls -r explorer.exe>C:\explorer2.txt 最後用fc命令進行比較: fc C:\explorer1.txt C:\explorer2.txt>C:\explorer.txt。 這樣打開C:\explorer.txt文件,對比後多出的文件即是「搜索助理」調用的DLL文件。 小提示 ListDlls的用法為: listdlls [-r] [processname pid] 或listdlls [-r] [-d dllname] 第四步:重啟電腦,用命令「listdlls -r helpctr.exe>C:\helpctr.txt」得到「幫助和支持」所使用的DLL文件。此處重啟是為了使已經沒有使用的DLL文件從記憶體中卸載。 第五步:再次重啟,用命令「listdlls -r mshta.exe>C:\mshta.txt」得到「用戶賬戶」使用的DLL文件。 篩選最後「真兇」 分析explorer.txt中的DLL文件,其中文件目錄中含有「srchasst」的,均為「搜索助理」單獨調用的文件。剩餘的文件分別為C:\Windows\system32目錄下的sxs.dll、vbscript.dll、jscript.dll文件。用「搜索」的方法可以發現文件helpctr.txt和mshta.txt中均存在上述文件,看來「罪魁禍首」非這三者莫屬。 回到原來的電腦,發現三個文件均存在,也並未損壞。用命令regsvr32命令分別進行註冊。果然,在對其中的jscript.dll文件的進行註冊後(使用命令 regsvr32 jscript.dll),「白板」程式終於恢復其美麗的「容顏」。 小編有話說: 系統很多軟件故障都是由DLL文件引起的。以前我們往往更關注DLL文件是否丟失,其實還有很多原因是沒有註冊成功造成的。看了本文介紹的方法,我們就可以很容易地篩選出造成故障的DLL文件,最終解決故障。 Helpctr啟動幫助和支持中心。使用不帶參數的 helpctr 可以顯示「幫助和支持中心」首頁。 語法 helpctr [/url [url]] [/mode [url]] [/hidden] [/fromstarthelp] 參數 /url [url] 指定要在「幫助和支持中心」中顯示的統一資源標識符 (URL)。 /mode [url] 指定符合 Launch_Description.dtd 計劃的可擴展標記語言 (XML) 定義文件,該文件可以控制「幫助和支持中心」的上下文、佈局和內容。 /hidden 不顯示用戶界面啟動「幫助和支持中心」。該命令可以裝載主題。可以使用本命令執行遠端管理腳本。 /fromstarthelp 啟動一個新的「幫助和支持中心」實例。 /? 在命令提示字元顯示幫助。 註釋 使用 URL 使用 /url 和 /mode 時,可以使用 URL 的引號(即 "URL")。如果 URL 中有空格,則可通過鍵入 %20 代替它(即 "URL%20Address")。 範例 要用.msrincident 文件啟動一個遠端幫助會話,請鍵入: HelpCtr /mode "hcp://CN=Microsoft%20Corporation,L=Redmond,S=Washington,C=US/Remote%20Assistance/RAClientLayout.xml"/url "hcp://CN=Microsoft%20Corporation,L=Redmond,S=Washington,C=US/Remote%20Assistance/Interaction/Client/rctoolScreen1.htm?IncidentFile=rahelp.msrincident" "幫助與支持"打不開的解決方法 經過測試,到目前為止是最快速有效的方法,請求加精置頂: 造成這個問題主要是以下幾中可能: 第一:使用優化大師以後[幫助和支持中心]不能使用 但在[執行]中輸入msconfig後仍然可以打開[系統配置實用程式] 那麼把以下文字複製到TXT中,然後儲存為vbs文件(文件類型表菜單選擇所有文件,然後文件名加.vbs後綴),雙擊執行,然後重啟動 --------------------------------- 'fixwinxphelp.vbs - Repairs the damage done by Toni Arts EasyCleaner '?Doug Knox - Modified 2-28-02 to account for XP over 2000 upgrades 'This code may be freely distributed/modified 'Based on information provided by Bill James (http://www.billsway.com) On Error Resume Next 'Declare variables Dim WSHShell, MyBox, p, p1, p2, p3, p4, q1, q2, q3, q4, t Dim jobfunc 'Set the Windows Script Host Shell and assign values to variables Set WSHShell = WScript.CreateObject("WScript.Shell") p1 = "HKEY_LOCAL_MACHINE\Software\CLASSES\TypeLib\{FC7D9E00-3F9E-11D3-93C0-00C04F72DAF7}\1.0\0\win32\" p2 = "HKEY_LOCAL_MACHINE\Software\CLASSES\TypeLib\{FC7D9E00-3F9E-11D3-93C0-00C04F72DAF7}\1.0\HELPDIR\" p3 = "HKEY_LOCAL_MACHINE\Software\CLASSES\TypeLib\{FC7D9000-3F9E-11D3-93C0-00C04F72DAF7}\1.0\0\win32\" p4 = "HKEY_LOCAL_MACHINE\Software\CLASSES\TypeLib\{FC7D9000-3F9E-11D3-93C0-00C04F72DAF7}\1.0\HELPDIR\" Set fso = CreateObject("Scripting.FileSystemObject") Set q = fso.GetSpecialFolder(0) q1 = q & "\PCHealth\HelpCtr\Binaries\HelpCtr.exe\1" q2 = q & "\PCHealth\HelpCtr\Binaries\HelpCtr.exe\" q3 = q & "\PCHealth\HelpCtr\Binaries\HelpCtr.exe\2" q4 = q & "\PCHealth\HelpCtr\Binaries\HelpCtr.exe\" 'Describe the funtion of the script for a dialog box jobfunc = "This VB Script has repaired the damage done" jobfunc = jobfunc & vbCR & "when you ran EasyCleaner on your Windows?XP" jobfunc = jobfunc & vbCR & "installation, by restoring the correct Registry" jobfunc = jobfunc & vbCR & "values for Help and Support." 'This section writes the correct values to the Registry WSHShell.RegWrite p1, q1 WSHShell.RegWrite p2, q2 WSHShell.RegWrite p3, q3 WSHShell.RegWrite p4, q4 t = "Confirmation" MyBox = MsgBox (jobfunc, 4096, t) --------------------------------- 第二:幫助和支持中心 不能打開幫助與支持 錯誤1083:配置成在該可執行程式中執行的這個服務不能執行該服務 Helpsvc "Help and Support" 從HelpOnline論壇中得到不少故障求助,說是「幫助和支持」中心無法打開。並且求助的人均反饋說系統提示【Windows不能打開幫助與支持,因為一個系統服務沒有執行。要修復此問題,啟動名為「幫助與支持」的服務】,當時從第一印象便是提示他們啟動「Help and Support」服務,但是他們的反饋均說在「服務」中找不到名為「Help and Support」的服務,於是提供了一個重置「Help and Support」服務的註冊表文件下載: http://www.mvpdream.org/reg/helpandsupportdefault.reg 當他們下載這個註冊表文件後匯入,根據反饋訊息為可以在「服務」列表中找到「Help and Support」服務了,但是卻沒法啟動這個服務,反饋說系統提示「在本機電腦無法啟動Help and Support 錯誤1083:配置成在該可執行程式中執行的這個服務不能執行該服務」。 這種情況可以先下載下面鏈接地址中的文件: http://www.help-online.org/download/mvpdream/helpsvcfix.zip 執行壓縮文件中的helpsvcfix.exe,然後在如圖所示的交談視窗中單擊「Inspect and Fix Helpsvc」按鈕: 然後根據提示重啟電腦,重啟電腦後再進入「服務」中啟動「Help and Support」服務看看是否正常。如果故障依舊,那麼請根據下面的詳細步驟來操作修復: 1、單擊『開始』表菜單中的「執行」並鍵入「cmd」(不包括雙引號)後單擊「確定」按鈕; 2、在命令提示字元下鍵入「net stop helpsvc」(不包括雙引號)後按下Enter鍵(Enter鍵鍵); 3、待 Help and Support 服務成功停止後,不必關閉該命令提示字元,直接打開「我的電腦」,進入目錄: C:\windows\pchealth\helpctr (如果你的Windows XP不在C硬碟,請根據實際情況操作) 4、在這個目錄中刪除名為 PackageStore 的資料夾; 5、確保「任務管理器」中的「工作行程」選擇項列表中的以下工作行程沒有執行中: helpsvc.exe helphost.exe helpctr.exe 6、在剛才的命令提示字元下鍵入「cd /d c:\windows\pchealth\helpctr\binaries」(不包括雙引號,如果你的Windows XP不在C硬碟,請根據實際情況操作)後按下Enter鍵(Enter鍵鍵); 7、鍵入「start /w helpsvc /svchost netsvcs /regserver /install」(不包括雙引號)後按下Enter鍵(Enter鍵鍵),此時便會有重置Help and Support的過程,請等待一會兒; 8、待可以鍵入命令後,在命令提示字元下鍵入「net start helpsvc」(不包括雙引號)後按下Enter鍵(Enter鍵鍵); 9、鍵入「exit」(不包括雙引號)來退出 命令提示字元。 此時可以在「執行」中鍵入「services.msc」(不包括雙引號)來在「服務」中檢查「Help and Support」服務的啟動狀態,然後再單擊「幫助與支持中心」快捷方式看看是否可以打開了。 第三:使用第三方卸載軟件誤將PCHEALTH卸載 使[幫助和支持中心]無法使用 而且在[執行]中輸入msconfig後彈出警告 無法打開[系統配置實用程式] 而且連部分附件中的功能也無法打開 處理方法:在C:\WINDOWS資料夾(系統資料夾)下找到INF資料夾(隱藏資料夾),找到PCHEALTH.INF文件 右鍵點擊 選安裝 過程中會發現一些文件丟失 在自己的電腦裡搜索一下 然後把這些文件的路徑貼上去到目標路徑欄內就可以了 自己電腦裡沒的從別的地方拷貝 如果沒有源盤的朋友可以從別人的電腦中將[PCHEALTH]整個資料夾壓縮打包(大約6M)複製到自己電腦中覆蓋掉原來的PCHEALTH資料夾 然後再執行PCHEALTH.INF的安裝 最後重啟就可以了 另一種方法:在[執行]中輸入 SFC /SCANNOW 系統會自動檢測缺損的文件(需要源盤) 然後從盤中提取 過程結束後重啟就可以了 第四:就是環境變數,這個問題網上已經濫了,隨便搜索一下照做就可以了 順便把這個VBS腳本文件直接提供一個快捷下載: fixwinxphelp.vbs 有個問題需要討論一下: 我覺得樓主提供的解決方案中就屬直接右擊安裝 pchealth.inf 這個方法最為簡便,不過對於第四個辦法似乎樓主搞錯了,所謂「環境變數」和「幫助與支持」打不開是沒有什麼關聯的,之所以網上能有和它們關聯在一起的要素在於在「執行」中鍵入「helpctr.exe」卻得到回饋說是找不到文件,於是有人便提出在「環境變數」中加入這個文件的目錄,實際上有很多在「執行」中的可以快捷執行的文件都在註冊表有「執行路徑」訊息的,詳情參見類似的案例: http://ms.mblogger.cn/shixinyu1987/posts/17982.aspx or http://help-online.org/Article_Show.asp?ArticleID=144 |
__________________ |
|
送花文章: 3,
|