Я нашел эту команду здесь.

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

Поэтому я спрашиваю, может ли кто-нибудь указать мне правильное направление - бонусные баллы за явные примеры.

1 ответ1

2

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"

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