在我的驱动器的根目录中有一个名为的文件夹SourceControl
,其中包含我所有编程项目的所有工作副本。
我想将该文件夹移动到我的用户目录 ( \Users\Me
),但有关该文件夹权限的某些内容禁止我这样做。我不记得我是如何创建文件夹的。
当我执行移动命令时:
MOVE \SourceControl \Users\Me
我收到以下错误:
Access is denied.
我过去使用该Takeown
实用程序将文件的所有权分配给我解决了一个类似的问题,所以我接下来尝试了这个命令:
TAKEOWN /F \SourceControl
它返回以下错误:
ERROR: The current logged on user does not have ownership privileges
on the file (or folder) "C:\SourceControl".
我刚刚了解了该Icacls
实用程序,它可以检查和修改文件权限。
我使用此命令检查文件夹的权限:
ICACLS \SourceControl
它产生了这个列表:
\SourceControl BUILTIN\Administrators:(I)(F)
BUILTIN\Administrators:(I)(OI)(CI)(IO)(F)
NT AUTHORITY\SYSTEM:(I)(F)
NT AUTHORITY\SYSTEM:(I)(OI)(CI)(IO)(F)
BUILTIN\Users:(I)(OI)(CI)(RX)
NT AUTHORITY\Authenticated Users:(I)(M)
NT AUTHORITY\Authenticated Users:(I)(OI)(CI)(IO)(M)
我认为这意味着像我这样的普通用户帐户只有在RX
这里读取和执行 ( ) 的权限,而管理员帐户具有完全控制 ( F
)。
我使用 Icacls 通过以下命令将目录的完全控制权授予我的用户帐户:
ICACLS \SourceControl /grant:r Me:F
该命令产生以下输出:
processed file: \SourceControl
Successfully processed 1 files; Failed processing 0 files
现在检查权限会产生以下输出:
\SourceControl Domain\Me:(F)
BUILTIN\Administrators:(I)(F)
BUILTIN\Administrators:(I)(OI)(CI)(IO)(F)
NT AUTHORITY\SYSTEM:(I)(F)
NT AUTHORITY\SYSTEM:(I)(OI)(CI)(IO)(F)
BUILTIN\Users:(I)(OI)(CI)(RX)
NT AUTHORITY\Authenticated Users:(I)(M)
NT AUTHORITY\Authenticated Users:(I)(OI)(CI)(IO)(M)
但是在此之后,移动命令仍然失败并出现相同的错误。
是否可以在不调用管理员权限的情况下移动此文件夹?如果没有,我应该如何以管理员身份进行操作?
听起来您可能有打开的文件句柄来处理其中的内容。杀死任何可能正在使用它的程序。如果必须,请以安全模式重新启动。
如果您仍然遇到问题,还有一个名为 handles 的 sysinternals 工具也可以帮助您。
错误消息具有误导性。真正的问题不是权限不足,而是目录中某个对象的打开文件句柄。
MDMarra建议的 Mark Russinovich 的 Handle 实用程序帮助解决了错误消息的原因。
使用 Handle 诊断错误
从sysinternals网站下载Handle
%WINDIR%
,解压handle.exe放到路径中。Handle 需要管理员权限,因此以管理员身份打开一个新的命令提示符。运行以下命令以搜索目录中对象的打开文件句柄SourceControl
:输出显示 TSVNCache.exe 在目录中有一个打开的文件句柄:
通过终止进程关闭文件句柄
TSVNCache.exe 是TortoiseSVN的一个组件,它是一个图形化的 SVN 客户端,也是一个众所周知的资源大户。
要终止 TSVNCache.exe 进程,请在 TortoiseSVN 设置对话框中禁用 TortoiseSVN 的状态缓存:
重复句柄搜索。的输出
handle SourceControl
确认目录中不再有打开的文件句柄:移动目录
重复命令以移动目录。操作成功并获得预期输出: