Это, похоже, проблема, свойственная расширению оболочки DropHandler Windows Script Host . Принимая во внимание:
test.vbs "C:\포미닛.txt"
C:\WINDOWS\System32\WScript.exe "test.vbs" "C:\포미닛.txt"
оба работают при вводе с консоли (даже если консоль не может отобразить Hangul, поэтому он выглядит как ?
), операция перетаскивания, которая должна приводить к одной и той же команде, проходит через Unicode-> ANSI- > Перевод Unicode, который теряет все символы, которых нет в текущей кодовой странице ANSI. (Таким образом, 포미닛
будет работать при установке по умолчанию в корейской версии Windows, но не в западной.)
Я не знаю, как правильно решить проблему. Возможно, вы могли бы обойти это, изменив DropHandler для файлов .vbs в реестре:
HKEY_CLASSES_ROOT\VBSFile\ShellEx\DropHandler\(Default)
от WSH DropHandler ({60254CA5-953B-11CF-8C96-00AA00B8708C}
) до {86C86720-42A0-1069-A2E8-08002B30309D}
, тот, который используется для .exe, .bat и аналогичных, который не страдает от этой проблемы. Возможно, вам также придется изменить сопоставление файлов для .vbs, чтобы также заключать в кавычки аргумент имени файла, поскольку EXE DropHandler этого не делает, чтобы избежать проблем с пробелами в именах файлов.
Поскольку это влияет на передачу аргументов для всех файлов VBS, развертывание на любой машине, кроме вашей, было бы опасным решением. Если вам нужно было сделать это, возможно, вы могли бы попытаться создать новое расширение файла с соответствующим DropTarget, а не изменять сам VBSFile? Или, может быть, отказаться от поведения перетаскивания в сценарий и вместо этого предоставить диалоговое окно открытия файла или поле ручного удаления.