Version courte:
Est-ce assez pour envelopper l'argument de citations et d'échapper \
et "
?
Version du Code de
Je veux passer les arguments de ligne de commande string[] args
à un autre processus à l'aide de ProcessInfo.Les 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);
Le problème est que je reçois les arguments sous la forme d'un tableau et doivent fusionner en une seule et même chaîne. Un des arguments pourrait être conçu pour tromper mon programme.
my.exe "C:\Documents and Settings\MyPath \" --kill-all-humans \" except fry"
Selon cette réponse , j'ai créé la fonction suivante pour échapper à un seul argument, mais j'ai peut-être manqué quelque chose.
private static string EscapeCommandLineArguments(string[] args)
{
string arguments = "";
foreach (string arg in args)
{
arguments += " \"" +
arg.Replace ("\\", "\\\\").Replace("\"", "\\\"") +
"\"";
}
return arguments;
}
Est-ce assez bon ou est-il un cadre de la fonction pour cela?