Когда я пытался получить повышенные права для моего пакетного сценария, когда я нашел два связанных SO вопросытекущий рабочий каталог в VBScript вызывается перетащить и операции перетаскивания
- How to request Administrator access inside a batch file
- How can I auto-elevate my batch file, so that it requests from UAC administrator rights if required?
... что привело к частично отработавшимся ответам. По какой-то причине у меня возникли проблемы с передачей командной строки для аргументов пути к файлу, содержащих пробелы в сценарии VBS, поэтому я попытался разбить решение на 3 части и сосредоточиться на внутреннем (VBS) шаге, а затем добавить последний шаг, вызвав из этой VBS, которая не может быть найдена, несмотря на то, что в той же папке, что и скрипт VBS. Я обнаружил, что перетащить & капля не «так просто» и что при использовании .vbs
это не так, а .bat
или .exe
как цели падения.
Вот мой актуальный вопрос:
Если я перетащить файл и поместите его на исполняемый файл (EXE) или пакетный файл (BAT, CMD), Текущий рабочий каталог определяется источником перемещенного элемента , Его каталог задается как рабочий каталог для программы или скрипта, который ее обрабатывает.
Если я отброшу файл на скрипт VBS, это будет другим. В Windows 8.1 x64 я наблюдаю это как C:\Windows\System32
, даже если аргумент находится в той же папке, что и VBS.
я могу просто использовать пакетный файл (как реле drag'n'drop) как этого
my.vbs %*
, чтобы получить «нормальный» .bat
поведения (источник падения диктует УХО), но я также хочу, чтобы понять, Это.
Это ошибка или функция? Является ли он совместимым во всех версиях Windows?
редактировать: добавил фон (сверху) для вопроса, показывающего, как я туда попал (+ незначительные исправления)
Впечатляющие исследования! Я просто сбросил два файла из разных папок (из результатов поиска) в файл bat.Я заметил, что CWD скрипта установлен в родительскую папку первого аргумента, возможно, стоит добавить в * * установленную родительскую папку с отброшенным файлом * часть вашего ответа. – Wolf
@ Вольф, я забыл включить его, спасибо. Ответ обновлен. –
Я ожидаю, что 'CreateProcess' будет использоваться для' .bat', а все остальные зарегистрированные типы файлов просто «открыты» с помощью 'ShellExecuteEx'? Считаете ли вы, что имеет смысл искать ссылку для предполагаемого поведения? Может ли это быть полезной точкой входа: [Регистрация приложений (Windows)] (https://msdn.microsoft.com/en-us/library/windows/desktop/ee872121 (v = vs.85) .aspx # related_topics)? – Wolf