在我的驱动器的根目录中有一个名为的文件夹,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)
但此后,移动命令仍然因相同的错误而失败。
是否可以在不调用管理员权限的情况下移动此文件夹?如果不行,我该如何以管理员身份进行操作?
答案1
听起来你可能打开了文件句柄来处理其中的内容。关闭可能正在使用它的任何程序。如果需要,请以安全模式重新启动。
如果您仍然遇到问题,那么有一个名为 handles 的 sysinternals 工具也可以帮助您。
答案2
错误消息具有误导性。真正的问题不是权限不足,而是目录中某个对象的打开文件句柄。
Mark Russinovich 的 Handle 实用程序,由MDMarra,帮助解决了错误信息的原因。
使用 Handle 诊断错误
下载处理从 sysinternals 网站下载并解压 handle.exe 并将%WINDIR%
其放在路径上。句柄需要管理员权限,因此请以管理员身份打开新的命令提示符。运行以下命令在目录中的对象上搜索打开的文件句柄SourceControl
:
handle SourceControl
输出显示 TSVNCache.exe 在目录中有一个打开的文件句柄:
TSVNCache.exe pid: 2860 type: File 1C8: C:\SourceControl\Project
通过终止进程来关闭文件句柄
TSVNCache.exe 是TortoiseSVN,一个图形化的 SVN 客户端,以及一个著名的资源消耗大。
要终止 TSVNCache.exe 进程,请在 TortoiseSVN 设置对话框中禁用 TortoiseSVN 的状态缓存:
重复句柄搜索。 的输出handle SourceControl
确认目录中不再有打开的文件句柄:
No matching handles found.
移动目录
重复该命令以移动目录。操作成功并显示预期输出:
1 file(s) moved.