Краткая версия:
Достаточно ли обернуть аргумент в кавычки и выйти \
и "
?
Версия кода
Я хочу передать аргументы командной строки string[] args
другому процессу с помощью ProcessInfo.Arguments.
ProcessStartInfo info = new ProcessStartInfo();
info.FileName = Application.ExecutablePath;
info.UseShellExecute = true;
info.Verb = "runas"; // Provides Run as Administrator
info.Arguments = EscapeCommandLineArguments(args);
Process.Start(info);
Проблема в том, что я получаю аргументы как массив и должен объединять их в одну строку. Аргументы могут быть созданы, чтобы обмануть мою программу.
my.exe "C:\Documents and Settings\MyPath \" --kill-all-humans \" except fry"
В соответствии с этим ответом я создал следующую функцию, чтобы избежать одного аргумента, но я мог что-то пропустить.
private static string EscapeCommandLineArguments(string[] args)
{
string arguments = "";
foreach (string arg in args)
{
arguments += " \"" +
arg.Replace ("\\", "\\\\").Replace("\"", "\\\"") +
"\"";
}
return arguments;
}
Хорошо ли это или есть какая-либо фрейм-функция для этого?