Member 12682970 Ответов: 2

Как я могу использовать процесс.начать, когда путь содержит пробелы (VB.NET)


Всем Привет,


Я действительно борюсь с попыткой использовать процесс.Начало("Regedit.exe", " / e path + аргумент) для работы.

У меня нет установленного пути, так как пользователь должен иметь возможность выбрать путь для экспорта раздела реестра. Проблема в том, что если я выбираю папку, которая не содержит пробела в имени, она работает нормально. Если я выберу папку или создам ее с пробелом, она не будет работать.

Для тестирования я создал 2 папки на флешке;

Тест
Тест 1

Приведенный ниже код работает при выборе "тест", но не при выборе " тест 1"


Единственный способ заставить его работать - это сохранить его в корне c:\, а затем скопировать из C:\ в "chosenpath", но я знаю, что это глупый способ сделать это. Должно быть, я упускаю что-то маленькое.

Кто-нибудь может, пожалуйста, пожалуйста, помогите мне с решением? Я перепробовал все, что знаю и могу найти.

Что я уже пробовал:

С FolderBrowserDialog1
. Description = " выберите папку назначения для сохранения резервной копии. Создайте новую папку, если хотите."
.ShowNewFolderButton = Истина
'Открывает диалоговое окно для выбора папки источника
If. ShowDialog = Windows.Формы.свойство DialogResult.Тогда ладно
chosenpath =. SelectedPath
finalpath = chosenpath & " \RegBackup.txt HKEY_LOCAL_MACHINE\SOFTWARE\TestRegKey"

Конец, Если
Конец С
'Проверяет, была ли выбрана папка назначения или нажата кнопка" Отмена".
Если chosenpath это не Ничто тогда
MsgBox ("Reg будет экспортирован в" & amp; finalpath, MsgBoxStyle.OkOnly)
Система.Диагностика.Процесс.Начало("Regedit.exe", "/e " & finalpath)

Ключевые слова elseif chosenpath ничего
MsgBox ("резервное копирование прервано. Папка назначения Не выбрана.", MsgBoxStyle.Восклицание, название:= " резервное копирование прервано!")
Выход Из Субмарины
Ещё
Конец, Если




Я попробовал следующее;

Добавление кавычек вокруг выбранного пути (как рекомендовано постом, который я нашел, однако это был очень старый пост)
finalpath = """" &амп; chosenpath &ампер; """" &ампер; "\RegBackup.txt раздел HKEY_LOCAL_MACHINE\программное обеспечение\TestRegKey"

Это не сработало

Я также попробовал другое рекомендуемое решение, которое я нашел;

finalpath строка = строка.формат(@"\{0}\", chosenpath &ампер; "\RegBackup.txt раздел HKEY_LOCAL_MACHINE\программное обеспечение\TestRegKey")

Это не работает,

Затем я попробовал;

finalpath = " @ "& chosenpath & " \RegBackup.txt HKEY_LOCAL_MACHINE\SOFTWARE\TestRegKey")

Это не работает.

2 Ответов

Рейтинг:
1

OriginalGriff

Вы хотите, чтобы двойные кавычки окружали весь путь, а не его часть, чтобы весь текст рассматривался как один параметр:

System.Diagnostics.Process.Start("Regedit.exe", "/e ""D:\Test 1\My file.txt""")


Member 12682970

Это на самом деле не ответило на мой вопрос, однако после того, как я повозился с кодом и попробовал двойные кавычки (как вы предложили) вместо 4, я смог заставить это работать.

Но спасибо за совет.

Рейтинг:
1

Member 12682970

Вот как я, наконец, заставил его работать..

Система.Диагностика.Процесс.Начнется("Regedit.exe", "/е """ &амп; chosenpath &ампер; "\RegBackup.txt""" + " реестра HKEY_LOCAL_MACHINE \ программное обеспечение\\TestRegKey")