Cmd Can';t将oci.dll文件复制到C:/windows/system32

Cmd Can';t将oci.dll文件复制到C:/windows/system32,cmd,copy-paste,oracle-call-interface,Cmd,Copy Paste,Oracle Call Interface,由于这是一个古老的问题,至今仍无法找到很好的解决方案 我正在使用cmd将oci.dll复制到system32文件夹 访问被拒绝正在显示。我的所有oracle服务都已停止,我已登录到管理员帐户 正如所料,我也无法删除oci.dll文件。最终我能够解决这个问题。我将一步一步地发布解决方案,因为它可能在将来有所帮助 问题原因: 问题是我要复制或删除的文件oci.dll已经被一个或多个进程获取 解决方案: 1) 首先,我们必须弄清楚哪些进程实际上正在使用oci.dll文件。要检查这一点,只需转到cmd

由于这是一个古老的问题,至今仍无法找到很好的解决方案

我正在使用cmd将oci.dll复制到system32文件夹

访问被拒绝正在显示。我的所有oracle服务都已停止,我已登录到管理员帐户


正如所料,我也无法删除oci.dll文件。

最终我能够解决这个问题。我将一步一步地发布解决方案,因为它可能在将来有所帮助

问题原因:

问题是我要复制或删除的文件
oci.dll
已经被一个或多个进程获取

解决方案:

1) 首先,我们必须弄清楚哪些进程实际上正在使用
oci.dll
文件。要检查这一点,只需转到cmd,将目录更改为C:\Documents and Settings,然后运行tasklist/m oci.dll(或您遇到问题的dll的名称)。简而言之:

C:\Documents and Settings>tasklist /m oci.dll
运行此命令,您可以获得使用oci.dll的带有PID的进程列表。在我的例子中,它是-
explorer.exe

因此,我必须终止explorer.exe进程才能复制/删除oci.dll文件。Microsoft的一个非常好的软件也可以用于查找有关.dll文件的进程,并终止进程

现在,我们都准备好了。我们必须在管理员模式下打开cmd并将oci.dll文件复制到system32 foler。并且oci.dll已成功复制

p.S.

结束explorer.exe时,您可能会发现复制问题。在正确终止所有explorer.exe进程后,您可以按
Ctrl+Alt+Delete
打开taskmanager,然后转到
File->New Task(Run…)
为explorer创建一个要复制/删除的新任务


通常,您不必关闭进程来替换正在使用的DLL。您应该能够重命名映射的EXE/DLL,然后将新文件移动或复制到旧名称。作为管理员,您甚至可以让系统在下次启动时删除重命名的旧EXE/DLL。如何重命名某个进程已获取的DLL文件加载的EXE/DLL中固有的阻止访问重命名它的内容。使用
file\u SHARE\u DELETE
access打开文件,允许重命名(重新链接)它。实际上删除文件失败,访问被拒绝(5),而不是共享冲突(32)因为内存管理器不允许它,就像它不允许删除分页文件或映射的数据文件一样。还要注意,System32中许多文件的文件安全性只授予管理员RX访问权限,因此您必须通过takeown.exe获得所有权,并修改安全性以通过icacls.exe授予完全控制权。