Почему я получаю ошибку привилегии при запуске "takeown" из командной строки?
Я являюсь частью группы администраторов. У меня есть файл, который я могу поменять владельцем на HOSTNAME\Administrators и обратно, используя вкладку "Безопасность" в свойствах файла.
Я также могу взять на себя ответственность, используя этот прекрасный сценарий из Интернета, который предоставляет контекстное меню при щелчке правой кнопкой мыши по файлу.
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\runas]
@="Take Ownership"
"NoWorkingDirectory"=""
[HKEY_CLASSES_ROOT\*\shell\runas\command]
@="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F"
"IsolatedCommand"="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F"
[HKEY_CLASSES_ROOT\Directory\shell\runas]
@="Take Ownership"
"NoWorkingDirectory"=""
[HKEY_CLASSES_ROOT\Directory\shell\runas\command]
@="cmd.exe /c takeown /f \"%1\" /r /d y && icacls \"%1\" /grant administrators:F /t"
"IsolatedCommand"="cmd.exe /c takeown /f \"%1\" /r /d y && icacls \"%1\" /grant administrators:F /t"
Тем не менее, открытие непривилегированной командной строки в каталоге запрещает мне разрешение, когда я вызываю "takeown" из нее:
C:\path>takeown /f "file"
ERROR: The current logged on user does not have ownership privileges on
the file (or folder) "C:\path\file".
Почему мне нужно вызывать явное административное разрешение в командной строке с повышенными правами, когда этот параметр реестра, вызываемый из непривилегированного окна обозревателя, может изменить ситуацию без проблем?
1 ответ
Чтобы взять на себя ответственность, любая программа должна явно запросить у себя SeTakeOwnershipPrivilege
разрешение от Windows.
Посмотрите Привилегии Процесса, где это определено как:
Таким образом, кажется, что Windows Explorer позаботился о том, чтобы выделить себе это разрешение, но для cmd
он предоставляется только при выполнении с повышенными разрешениями. cmd
Запущенный изнутри Windows Explorer будет наследовать родительские права доступа и, таким образом, сможет стать владельцем.