Я собираюсь предварить это тем, что я относительно новичок в настройке реестра, но, пожалуйста, потерпите меня.
Сегодня я возился с 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 будет очень полезна в будущем, когда возникнут новые потребности.