Я собираюсь предварить это тем, что я относительно новичок в настройке реестра, но, пожалуйста, потерпите меня.


Сегодня я возился с Windows 10 (дома, версия 1803) и после некоторого поиска в Google сделал 2 вещи:

Я сделал несколько изменений / дополнений в реестре, чтобы добавить опцию "Открыть CMD здесь как администратор", чтобы щелкнуть правой кнопкой мыши контекстное меню. Это сработало отлично, и вот изменения / дополнения реестра, которые я сделал:


HKEY_CLASSES_ROOT\Directory\ Shell \ OpenElevatedCmd:

(По умолчанию) = Открыть командную строку здесь как администратор. Icon = cmd.exe

HKEY_CLASSES_ROOT\Directory\ Shell \ OpenElevatedCmd \ команда:

(По умолчанию) = PowerShell -windowstyle hidden -Command "Start-Process cmd.exe -ArgumentList '/s,/k,pushd,%V' -Verb RunAs"

HKEY_CLASSES_ROOT\Directory\Background\ Shell \ OpenElevatedCmd:

(По умолчанию) = открыть командную строку здесь как администратор

Icon = cmd.exe

HKEY_CLASSES_ROOT\Directory\Background\ Shell \ OpenElevatedCmd \ команды:

(По умолчанию) = PowerShell -windowstyle hidden -Command "Start-Process cmd.exe -ArgumentList '/s,/k,pushd,%V' -Verb RunAs"

HKEY_CLASSES_ROOT\Drive\ оболочки \ OpenElevatedCmd:

(По умолчанию) = открыть командную строку здесь как администратор

Icon = cmd.exe

HKEY_CLASSES_ROOT\Drive\ оболочки \ OpenElevatedCmd \ команда:

(По умолчанию) = PowerShell -windowstyle hidden -Command "Start-Process cmd.exe -ArgumentList '/s,/k,pushd,%V' -Verb RunAs"

HKEY_CLASSES_ROOT\LibraryFolder\ фон \ оболочки \ OpenElevatedCmd:

(По умолчанию) = открыть командную строку здесь как администратор

Icon = cmd.exe

HKEY_CLASSES_ROOT\LibraryFolder\ фон \ оболочки \ OpenElevatedCmd \ команды:

(По умолчанию) = (значение не установлено)


Во-вторых, я использовал планировщик задач, чтобы создать задачу, которая запускает командную строку администратора без глупого всплывающего окна UAC и создала ярлык к нему, чтобы закрепить его на панели задач. Это сработало отлично, как и ожидалось. Вот задача, которую я сделал:

Повышенные CMD Запланированные Задачи Общие

Повышенное действие запланированной задачи CMD

Назначение ярлыка для запуска этой задачи: C:\Windows\System32\schtasks.exe /run /tn "Elevated CMD"


Все пошло под откос, когда я попытался сделать это и сделать что-то, чего не смог найти в Google.

Я подумал, что было бы неплохо сделать так, чтобы при запуске командной строки администратора из контекстного меню в любой папке приглашение UAC не отображалось. Моей первой мыслью было использование какого-то метода, чтобы в командной строке администратора не требовалось всплывающее окно UAC, поэтому я немного погуглил, и единственный метод, который я смог найти, был с помощью "Инструментария совместимости приложений". Я попробовал этот метод, и он не сработал, поэтому моей следующей мыслью было объединить уловку запланированных задач с правками в реестре, которые добавили контекстную опцию "запустить cmd здесь как администратор". Для этого мне нужно было выяснить, что для новых значений выставить в "команде" по умолчанию. Поэтому я взял аргументы из рабочих значений, которые добавили административный cmd в контекстное меню (/s /k pushd% V), и протестировал их с помощью команды, основанной на значениях рабочего реестра в PowerShell, чтобы убедиться, что они это сделали. что я думал они сделали:

" Start-Process cmd.exe '/s /k pushd %V' "

Это привело к открытию новой командной строки администратора с сообщением «система не может найти указанный путь». Я предположил, что именно это и должно было произойти, исходя из того, как я думаю, что эти аргументы работают.

Затем я создал новую запланированную задачу под названием "ecmd", которая была идентична моей задаче "Повышенные CMD", которая запускает cmd администратора без раздражающего приглашения UAC, но на этот раз я добавил аргументы « /s /k pushd %V » в «» Добавьте аргументы (необязательно):«поле. Затем я протестировал следующее в PowerShell:

" Start-Process schtasks.exe '/run /tn ecmd' "

Новые аргументы "/run /tn ecmd" - это те же аргументы, которые я использовал для запуска этой задачи с помощью ярлыка. Эта команда работала точно так, как я ожидал. Она открыла новую командную строку администратора без всплывающего окна UAC с тем же сообщением «не удается найти указанный путь», как в моем предыдущем тесте.

В этот момент я подумал, что мне пора, и я изменился:

" PowerShell -windowstyle hidden -Command "Start-Process cmd.exe -ArgumentList '/s,/k,pushd,%V' -Verb RunAs" "

чтобы:

" PowerShell -windowstyle hidden -Command "Start-Process schtasks.exe -ArgumentList '/run,/tn,ecmd' -Verb RunAs" "

Во всех соответствующих местах, заменив cmd на задачи и заменив исходные аргументы аргументами, которые заставили бы планировщик задач выполнить задачу "ecmd" ...

Это где я стал полностью потерянным. Все, что происходит, когда я открываю контекстное меню, вызываемое правой кнопкой мыши, и выбираю «Открыть командную строку здесь как администратор», - это краткое всплывающее окно с командой и ничего больше.

Я пробовал эти команды, а также:

" PowerShell -windowstyle hidden -Command "Start-Process schtasks.exe -ArgumentList '/run,/tn,ecmd' -Verb RunAs" "

" PowerShell -windowstyle hidden -Command "Start-Process schtasks.exe -ArgumentList '/run,/tn,ecmd' -Verb Open" "

" PowerShell -windowstyle hidden -Command \"Start-Process schtasks.exe -ArgumentList '/run,/tn,ecmd' -Verb RunAs\" "

" PowerShell -windowstyle hidden -Command "Start-Process schtasks.exe -ArgumentList '/run,/tn,ecmd'" "

" PowerShell -windowstyle hidden -Command "Start-Process schtasks.exe -ArgumentList '/run,/tn,"ecmd"' -Verb RunAs" "

" PowerShell -windowstyle hidden -Command "Start-Process schtasks.exe -ArgumentList '/run,/tn,'ecmd'' -Verb RunAs" "

" PowerShell -windowstyle hidden -Command "Start-Process schtasks.exe -ArgumentList '/run,/tn"ecmd"' -Verb RunAs" "

" PowerShell -windowstyle hidden -Command "Start-Process schtasks.exe -ArgumentList '/run,/tn'ecmd'' -Verb RunAs" "

" PowerShell -windowstyle hidden -Command "Start-Process schtasks.exe -ArgumentList '/run,/tn "ecmd"' -Verb RunAs" "

" PowerShell -windowstyle hidden -Command "Start-Process schtasks.exe -ArgumentList '/run,/tn 'ecmd'' -Verb RunAs" "

Все они дают одинаковые результаты, или некоторые из тем откроют приглашение UAC о запуске планировщика задач, и в нем будет выведен список schtasks.exe с аргументами, которые я использовал "/run" "/tn" и "ecmd" в качестве местоположения.

У меня совершенно нет идей, и я хотел бы знать, как отформатировать эти команды, чтобы это работало. Я недостаточно осведомлен, чтобы уверенно утверждать это, но я также чувствую, что возможность выполнить задачу двумя щелчками мыши из любого места в explorer/desktop/library будет очень полезна в будущем, когда возникнут новые потребности.

1 ответ1

0

Вы уже видели этот пост?

https://stackoverflow.com/questions/20449316/how-add-context-menu-item-to-windows-explorer-for-folders#29769228


Кроме этого, когда я просматриваю некоторые из записей, которые у вас есть выше, я вижу, что у вас есть несколько вложенных одинарных и двойных кавычек. В этих сценариях вы должны избегать внутренних одинарных / двойных кавычек (чтобы ваша внутренняя кавычка не заканчивала то, что вы намереваетесь считать кавычками, заключающими блок содержимого).

Имеет ли это смысл?

Вот пример, который имеет как вложенные одинарные, так и двойные кавычки одновременно.

"PowerShell -windowstyle hidden -Command \"Start-Process schtasks.exe -ArgumentList '/run,/tn \'ecmd\'' -Verb RunAs\""

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