史萊姆論壇

返回   史萊姆論壇 > 教學文件資料庫 > 作業系統操作技術文件
忘記密碼?
論壇說明

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


 
 
主題工具 顯示模式
舊 2006-06-07, 10:03 PM   #1
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 軟體 - 揪出系統中胡作非為的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文件,最終解決故障。



http://tinypic.com/x3d6b4.jpg


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」按鈕:

http://www.mvpdream.org/pic/helpsvcfix.png

然後根據提示重啟電腦,重啟電腦後再進入「服務」中啟動「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
__________________
http://bbsimg.qianlong.com/upload/01/08/29/68/1082968_1136014649812.gif
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次
 



發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用


所有時間均為台北時間。現在的時間是 04:01 AM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1