Wednesday, December 7, 2011

The memory could not be read or written error message

Q:
我的電腦在執行某些應用程式時會出現「該記憶體不能為"read"或"written"」的錯誤訊息,請問我該怎麼辦?

A:
重新註冊所有DLL檔,
按開始>>執行>. 輸入cmd>> 按「確定」,出現DOS窗口,在命令提示符號下輸入
for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1
按Enter。

以上這個方法幾乎充斥各大論壇,雅虎知識+,甚至利用搜尋也都可以搜尋到一堆這種論調,只要有人遇到「該記憶體不能為"read"或"written"」的錯誤訊息,這個困擾人的電腦問題,總是一堆人搶著告訴你只要執行上面

for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1的這個方法,好像所有問題都能得到解決似的。

現在本人以親身經驗告訴你,重新註冊所有DLL檔 [for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1 ],也許能解決部分軟體衝突所造成的「該記憶體不能為"read"或"written"」的問題!但絕對不是唯一的解決辦法!

建議解決方法:
我個人處理這個問題的方法是這樣:
方法1.
將 C:\WINDOWS\Prefetch\資料夾中所有檔案全部刪除,重新開啟該有問題的程式再試試 ,看看問題有無解決。
如果沒有改善就進行第2種方法。

方法2.
重新註冊所有DLL檔,
按開始>>執行>. 輸入cmd>> 按「確定」,出現DOS窗口,在命令提示符號下輸入
for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1
按Enter。


為了快速執行方法1及方法2,我把它做成兩個CMD執行檔,只要點兩下滑鼠就可馬上搞定,在此分享作法。如果你對DOS指令有研究也可自行製作個人的執行命令檔。

方法1.開啟一個記事本檔案,將以下指令
del /f /s /q %windir%\prefetch\*.*
複製再貼上,將記事本重新命名為Dll refetch.cmd檔。

方法2開啟一個記事本檔案,將以下指令
for %%1 in (%windir%\system32\*.dll) do regsvr32.exe /s %%1
複製再貼上,將記事本重新命名為Reg DLL.cmd檔。


如果試過以上2種方法還是無效,
建議你把作業系統或相關軟體執行更新,
再執行掃毒掃木馬及清除[包括隨身碟病毒KAVO],
再來就是清理無效的登錄檔等等。

Reference:

http://rong120.pixnet.net/blog/post/22599751

No comments: