Я нашел эту команду здесь.
Команда структурирована как модификация реестра, которая добавит запись "Вступить во владение" в стандартное контекстное меню файла / каталога 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». Единственное ограничение на данный момент заключается в том, что этот сценарий должен запускаться как сценарий завершения работы в локальной групповой политике. Я не доверяю себе, чтобы сделать это правильно, поскольку у меня мало понимания синтаксиса, используемого в этой модификации реестра. Поэтому мне рискованно пытаться сделать это самому. Кто знает, какой урон я могу нанести, если я неправильно понял синтаксис.
Поэтому я спрашиваю, может ли кто-нибудь указать мне правильное направление - бонусные баллы за явные примеры.