重命名文件夹时拒绝访问

Access is Denied When Renaming Folder

我不知道在这里问这个问题是否合适,但我还是要问一下。

我在尝试重命名其中一个文件夹时经常遇到问题;它说访问被拒绝。我对我的计算机拥有完全的管理权限。仅当我尝试通过命令提示符或批处理文件执行此操作时才会出现此问题。我可以毫无问题地手动重命名文件夹。但我需要能够使用 ren 命令重命名它。这是一个恼人的问题,我听说其他人也有同样的问题。他们通常通过重新获得文件夹的所有权并重新启动计算机来修复它。这对我有用,但我讨厌每次都必须这样做。有没有我可以做的永久解决方案来阻止这个问题?此外,当出现此问题时,它会发生在所有文件夹中;我无法使用 ren 命令重命名它们中的任何一个。

在您可以 运行 此命令之前,您必须具有这样做的权限,因为从命令行覆盖或修改文件需要管理员权限。完成后,输入以下内容:

ren (path name) (modified name, no quotation marks)

答案很简单:

Windows 不允许删除或重命名 directory/folder 即

  • 任意运行进程(application/service)的当前目录,如命令进程,或
  • 要重命名的目录的任何子目录是任何运行进程的当前目录,或
  • 打开文件时使用 OF_SHARE_DENY_READ, OF_SHARE_DENY_WRITE, OF_SHARE_EXCLUSIVE 的任何进程在要重命名的目录或其任何子目录中打开任何文件。

换句话说,只要目录本身或该目录或其子目录中的任何文件或子目录被任何应用程序使用,Windows拒绝重命名或删除目录。

在 Unix/Linux 上,当目录被 1 个或多个 运行 进程使用时,可以删除或重命名目录。 运行 *nix 进程必须处理特殊用例,即刚刚在一毫秒前成功访问的目录或文件突然不存在了。

我通过禁用快速访问解决了这个问题:

查看截图:

[

1 复制文件夹路径。为此,按住 Shift 键并单击鼠标右键,您将看到“复制为路径选项

2 以管理员身份打开cmd。为此,请按 window + X,然后按 A

3 在 cmd 中,输入“cd C: 然后粘贴路径”,例如:

cd C:\Users\abc\Desktop\music

在你按下回车键之前,请引用姓氏;例如:

cd C:\Users\abc\Desktop\"音乐"

4 接下来,输入:ren *.present extension *.new extension;比如从mp3到exe:

ren *.mp3 *.exe

如果不存在扩展名,那么,例如:

仁*. *.exe

这应该有效并消除访问被拒绝的麻烦。

我通过给 运行 批处理完全目录的用户解决了这个问题。似乎来自组成员的权利是不够的:用户是本地组 Administrators 的成员,我收到了“访问被拒绝”。在具有完全权限的目录 security 中添加用户帐户后,它就完成了工作。

我解决这个问题的方法是 运行 实用程序 Handle,作者是 Windows Sysinternals 的 Mark Russinovich。你可以找到它 here.

此实用程序将显示系统上所有打开的句柄以及正在使用它们的进程。其中之一可能有您要重命名的文件夹的路径。

我通常将 handle.exe 的输出重定向到一个文件。

handle >handles.txt

然后我在文本编辑器中查看 handles.txt 并搜索我试图重命名的文件夹的名称。它将出现在属于该进程的句柄部分中,该进程使该文件夹的句柄保持打开状态,从而防止它被重命名。它显示了有问题的进程的 pid,你可以决定如何处理它,以防你需要终止它。

例如尝试重命名 myfolder 我忘记了我已经使用 pm2(进程监视器)启动了 service 运行ning Handle.exe 的输出包括以下内容:

node.exe pid: 12752 DISCO\Stu
   40: File  (---)   C:\Dev\myfolder\service