在我的驱动器的根目录中,存在一个名为SourceControl
的文件夹,其中包含我所有编程项目的所有工作副本。
我想将文件夹移动到我的用户目录( \Users\Me
),但有关文件夹的权限的东西禁止我。 我不记得我是如何创build文件夹的。
当我执行移动命令时:
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
)的权限,而pipe理员帐户有完全的控制权( 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)
但在此之后,移动命令仍然失败,并出现相同的错误。
是否有可能移动此文件夹而不调用pipe理员权限? 如果不是,我该如何做pipe理员?
听起来像你可能有打开文件句柄在那里的东西。 杀死可能使用它的任何程序。 如果必须以安全模式重新启动。
如果你仍然有问题,还有一个称为句柄的sysinternals工具,可以帮助你。
错误消息是误导性的。 真正的问题不是权限不足,而是目录中对象的打开文件句柄。
MDMarrabuild议的Mark Russinovich的Handle实用程序帮助解决了错误消息的原因。
使用Handle诊断错误
从sysinternals网站下载句柄 ,并将handle.exe提取到%WINDIR%
,将其放在path上。 处理需要pipe理员权限,因此以pipe理员身份打开一个新的命令提示符。 运行以下命令来searchSourceControl
目录中对象的打开文件句柄:
handle SourceControl
输出显示TSVNCache.exe在目录中有一个打开的文件句柄:
TSVNCache.exe pid: 2860 type: File 1C8: C:\SourceControl\Project
通过终止进程closures文件句柄
TSVNCache.exe是graphicsSVN客户端TortoiseSVN的一个组件,也是知名的资源pipe理器 。
要终止TSVNCache.exe进程,请在“TortoiseSVN设置”对话框中禁用TortoiseSVN的状态caching:
重复处理search。 handle SourceControl
的输出确认目录中不再有打开的文件句柄:
No matching handles found.
移动目录
重复该命令来移动目录。 操作成功与预期的输出:
1 file(s) moved.