1

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

  1. windowKey + R: открывает окно запуска; Введите regedit.exe, чтобы открыть редактор реестра
  2. перейдите к HKEY_CLASSES_ROOT *\shell\
  3. Создайте новый ключ под названием "sDelete: 3 Passes"
  4. Щелкните правой кнопкой мыши по новому ключу и создайте еще один новый ключ, назовите его "команда".
  5. Дважды щелкните (по умолчанию) и введите следующую команду «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 - это способ их правильной инициализации.

1 ответ1

0

Вы просто включаете параметры в командную строку, которую вводите в разделе реестра. Синтаксис полностью зависит от команды, которую вы запускаете. Если SDelete хочет "-p 3", он должен работать. Обратитесь к документации SDelete, если это не так.

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