2017-06-05 165 views
0

由於這是一個古老的問題,仍然無法找到好的解決方案。無法將oci.dll文件複製到C:/ windows/system32

我正在使用cmd將oci.dll複製到system32文件夾。

enter image description here

訪問被拒絕被顯示。我的所有oracle服務已停止,並且我登錄了一個管理員帳戶。

和預期的一樣,我也無法刪除oci.dll文件。

回答

0

最後我能解決這個問題。我將逐步發佈解決方案,因爲它可能在未來有所幫助。

原因的問題:

的問題是,我要複製或刪除文件oci.dll已經被一個/多個進程獲取。

解決方案:

1)首先,我們必須找出哪個進程(或多個)/實際使用oci.dll文件。要檢查這只是去到CMD,將目錄更改爲C:\ Documents和Settings,然後運行任務列表/ M OCI.DLL(或你所面臨的麻煩的DLL的名稱因此,簡而言之:

C:\Documents and Settings>tasklist /m oci.dll 

運行此命令可以用PID其使用OCI.DLL獲取進程(ES)的列表。在我的情況是 - exploerer.exe

所以,我要殺死Explorer.exe進程拷貝/刪除oci.dll文件。還可以使用Microsoft的一個非常好的軟件Process Exploerer來查找有關.dll文件的進程並終止進程。

現在,我們都準備好了。我們必須以管理員模式打開cmd並將oci.dll文件複製到system32文件夾中,並且oci.dll已成功複製。

enter image description here

附:

結束Explorer.exe中您可能會發現要複製的問題。在正確地終止所有explorer.exe進程後,您可以按Ctrl+Alt+Delete來打開任務管理器並去File -> New Task(Run...)創建一個用於複製/刪除資源管理器的新任務。

enter image description here

+1

你通常沒有殺死一個進程,以取代正在使用的DLL。您應該能夠重命名映射的EXE/DLL,然後將新文件移動或複製到舊名稱。作爲管理員,您甚至可以讓系統在下次啓動時刪除重命名的舊EXE/DLL。 – eryksun

+0

如何重命名某個進程已經獲取的dll文件? –

+1

在加載的EXE/DLL中沒有任何固有的東西阻止獲取對其進行重命名。該文件以「FILE_SHARE_DELETE」訪問打開,允許重命名(重新鏈接)該文件。實際上,刪除文件失敗,訪問被拒絕(5)而不是共享衝突(32),因爲內存管理器是不允許的,就像它不允許刪除分頁文件或映射數據文件一樣。還要注意,System32中很多文件的文件安全性只授予管理員RX訪問權限,因此您必須通過takeown.exe獲取所有權並修改安全性以授予通過icacls.exe的完全控制權。 – eryksun

相關問題