Что лучший способ состоит в том, чтобы преобразовать этот комплекс “takeown” команда в сценарий завершения работы?

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

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

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

0
задан 09.09.2009, 13:51

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"
2
ответ дан 24.11.2019, 07:04
  • 1
    BTW, если Вы можно хотеть можете назвать ownandgrant.bat (или независимо от того, что Вы называете его) от другого пакетного файла, не забывайте использовать, "называю ownandgrant.bat". Если Вы не сделаете, то это не возвращается к Вашему сценарию после выполнения ownandgrant.bat. – Snark 10.09.2009, 12:39

Теги

Похожие вопросы