Я нашел эту команду здесь.
Команда структурирована как модификация реестра, которая добавит, "Берут Владение" запись в стандартном контекстном меню файла/каталога Windows Explorer. Я вижу, где это использует cmd.exe, и я могу отсортировать, понимают то, что происходит оттуда.
Модификация реестра содержит несколько команд, но я конкретно интересуюсь командой брать владение и давать разрешения на дереве каталогов:
[HKEY_CLASSES_ROOT\Directory\shell\runas]
@="Grant Admin Full Control"
"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"
Одна из проблем - то, что - из-за пути команда выполняется - это явно вызывает cmd.exe с переключателем/C. Это заставляет escape-последовательности требоваться для кавычек (который я не полностью понимаю). Команда также содержит маркеры, что я понятия не имею, как использовать от командной строки ("takeown", "icacls", и т.д.). Вдобавок ко всему, команда разделяется на две отдельных строки с промежуточным разрывом строки - который я принимаю, заставил бы cmd.exe пытаться выполнить его как две отдельных команды, когда это, кажется, не такой.
Я должен преобразовать команду в файл сценария (тот, который не открывает другой экземпляр cmd.exe - по-видимому, пакет), с явным каталогом, заменяющим "%1". Единственное ограничение в этой точке - то, что этот сценарий должен смочь работать как сценарий завершения работы в локальной Групповой политике. Я не доверяю мне, чтобы сделать это правильно, так как у меня есть мало понимания синтаксиса, используемого в этой модификации реестра. По сути, это довольно опасно для меня, чтобы попытаться сделать это самого. Кто знает то, что повреждает, я мог вызвать, если бы я понял синтаксис превратно.
Поэтому я спрашиваю, может ли кто-либо указать на меня в правильном направлении - бонусные очки для явных примеров.
takown и isacls являются командами DOS. Как нет никакого пути, указанного для достижения их в Файле реестра, я предполагаю, что они доступны на пути.
Просто создайте пакетный файл (скажите что ownandgrant.bat), содержащий
@echo off
takeown /f %1 /r /d y
icacls %1 /grant administrators:F /t
Это могло вызвать проблемы, если имя каталога содержит 1 или более пробелов, так удостоверьтесь, что Вы включаете каталог с двойными кавычками при вызове пакетного файла.
ownandgrant.bat "my special directory"