Как мы можем передать параметры программам, вызываемым через правки, в реестр Windows с помощью regedit.exe? Насколько я могу судить, это вопрос синтаксиса.
Например... Недавно я добавил новую программу в папку windows/system32, которая называется sDelete.exe. Это безопасная программа удаления, доступная от Microsoft sysinternals
http://technet.microsoft.com/en-us/sysinternals/bb897443
С веб-сайта: SDelete внедряет стандарт очистки и дезинфекции Министерства обороны США DOD 5220.22-M, чтобы дать вам уверенность в том, что после удаления с SDelete данные вашего файла исчезнут навсегда. Обратите внимание, что SDelete безопасно удаляет данные файла, но не имена файлов, расположенные в свободном дисковом пространстве.
Поэтому я хотел добавить пункт контекстного меню в Windows 7, когда щелкнул правой кнопкой мыши файл. Пока что я могу удалить программу из контекстного меню, но только я вызываю ее без передачи параметров.
- windowKey + R: открывает окно запуска; Введите regedit.exe, чтобы открыть редактор реестра
- перейдите к HKEY_CLASSES_ROOT *\shell\
- Создайте новый ключ под названием "sDelete: 3 Passes"
- Щелкните правой кнопкой мыши по новому ключу и создайте еще один новый ключ, назовите его "команда".
- Дважды щелкните (по умолчанию) и введите следующую команду «c:\\windows\\system32\\sdelete.exe» «% 1»
(Обновление: решение ниже)
На этом этапе я могу щелкнуть правой кнопкой мыши по файлу и безопасно удалить его, но по умолчанию используется только 1 проход. Я слишком неоправданно параноидален, чтобы принять это поведение. Теперь я попробовал несколько разных способов передать параметр option, который указывает количество проходов, которые я хочу выполнить sDelete. Например, «-p 3» указывает три прохода.
Я не могу понять, как сделать эту работу, хотя. Я думал, что у меня это было, но потом понял, что это не правильно.
Как мы можем передать параметры опции для вызова программы через контекстное меню таким образом?
ОБНОВЛЕНИЕ: ПРОБЛЕМА С СИНТАКСОМ ДЛЯ ПАРАМЕТРОВ.
Я понял. Я делал то, что вы предлагали, а также различные варианты, но ничего не получалось. «-p 3» не будет работать, я получу сообщение об ошибке или откроется окно с просьбой указать программу для открытия.
- Дважды щелкните (по умолчанию) и введите следующую команду
ИСПОЛЬЗУЙТЕ "c:\\windows\\system32\\sdelete.exe" "-p" "3" "% 1"
не "c:\\windows\system32\\sdelete.exe" "-p 3" "% 1"
а не "c:\\windows\\system32\\sdelete.exe -p 3" "% 1"
а не "c:\\windows\\system32\\sdelete.exe -p 3% 1"
а не c:\\windows\\system32\\sdelete.exe -p 3% 1
Обратите внимание, что включение пробелов вызывает проблемы. Это имеет смысл, если на самом деле. Windows игнорирует пробел, но когда пробел включен в строку, программа просто сопоставляет строку с ограниченным заранее заданным списком. Ожидаются точные совпадения. «-p 3» не равно «-p» "3". При сопоставлении параметра со строкой «-p 3» нет опции "p 3". Скорее, мы должны дать опцию «-p», чтобы программа "прослушивала" значение, передаваемое программе. Если он не начинается с символа -, то программа интерпретирует его как имя файла.
Поэтому разделение всех аргументов, которые вы обычно анализируете, из строки, которую вы вводите, в ввод cmd - это способ их правильной инициализации.