В корне моего диска есть папка с названием 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)
Но после этого команда перемещения по-прежнему не работает с той же ошибкой.
Можно ли переместить эту папку без прав администратора? Если нет, как мне это сделать как администратору?
Похоже, у вас, вероятно, есть дескрипторы открытых файлов для чего-то там. Убейте любую из ваших программ, которые могут его использовать. При необходимости перезагрузитесь в безопасном режиме.
Если у вас все еще есть проблемы, есть инструмент sysinternals, называемый дескрипторами, который также может вам помочь.
Сообщения об ошибках вводят в заблуждение. Настоящая проблема заключалась не в недостаточных разрешениях, а в дескрипторе открытого файла для объекта в каталоге.
Утилита Марка Руссиновича Handle, предложенная MDMarra, помогли устранить причину появления сообщений об ошибках.
Диагностируйте ошибку с помощью Handle
Скачать Ручка с веб-сайта sysinternals и извлеките handle.exe в %WINDIR%
поставить его на путь. Для Handle требуются права администратора, поэтому откройте новую командную строку как администратор. Выполните следующую команду для поиска дескрипторов открытых файлов на объектах в 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.