L'exécution de CMD en tant qu'administrateur avec un argument de C#

Je veux courir cmd.exe en tant qu'administrateur avec les arguments de C# afin de prévenir une Contrôle de compte d'utilisateur popup. Cela est nécessaire afin de l'utiliser comme un processus d'installation automatisée. La commande je suis de passage dans l'est simplement un chemin vers le fichier d'installation (.exe) avec /q pour l'installation silencieuse.

Lorsque j'exécute ce code, il y a un CMD popup, mais il s'exécute comme si cela n'avait pas d'exécuter quoi que ce soit.

public static string ExecuteCommandAsAdmin(string command)
{
ProcessStartInfo procStartInfo = new ProcessStartInfo()
{
RedirectStandardError = true,
RedirectStandardOutput = true,
UseShellExecute = false,
CreateNoWindow = true,
FileName = "runas.exe",
Arguments = "/user:Administrator cmd /K " + command
};
using (Process proc = new Process())
{
proc.StartInfo = procStartInfo;
proc.Start();
string output = proc.StandardOutput.ReadToEnd();
if (string.IsNullOrEmpty(output))
output = proc.StandardError.ReadToEnd();
return output;
}
}
et c'est pourquoi le contrôle de compte d'utilisateur existe, pour empêcher les indésirables ou potentiellement hostiles augmentation de privilège de se produire en silence.
Ne serait-il pas plus facile d'élever la MSI elle-même: stackoverflow.com/questions/8721349/... mais n'oubliez pas que vous ne pouvez pas sauter à l'UAC....

OriginalL'auteur Eric Kim | 2013-05-13