2

Я являюсь частью группы администраторов. У меня есть файл, который я могу поменять владельцем на 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 ответ1

1

Чтобы стать владельцем, любая программа должна явно запросить у себя разрешение SeTakeOwnershipPrivilege от Windows.

Посмотрите Привилегии Процесса, где это определено как:

образ

Поэтому кажется, что Windows Explorer позаботился о том, чтобы назначить себе это разрешение, но для cmd оно предоставляется только при выполнении с повышенными разрешениями. cmd запущенный из Windows Explorer, унаследует родительские права доступа и сможет стать владельцем.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .