2017-08-22 8 views
1

ausführen Ich habe einige andere Themen referenziert und es kommt die folgende Codierung, aber es funktioniert nicht. Ich erlaube es, Befehlsfenster zu erstellen und benutze "/ k" -Argument, während das Fenster geöffnet bleibt, damit ich seine Ausgabe verfolgen kann.Wie man Befehlszeile mit Admin-Rechten in C#

Ich kann jedoch die Warnung aus dem Fenster sehen, dass der Befehl Administratorrechte ausführen muss. Wie kann ich es in Admin-Rechten ausführen?

public void ClearArpCache() { 
     ProcessStartInfo processStartInfo = new ProcessStartInfo("cmd.exe", "/user:Administrator \" cmd /k arp -d \""); // same as "netsh interface ip delete arpcache" 
     processStartInfo.RedirectStandardOutput = true; 
     //processStartInfo.CreateNoWindow = true; 
     //processStartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
     processStartInfo.UseShellExecute = false; 
     processStartInfo.StandardOutputEncoding = Encoding.Default; 
     processStartInfo.Verb = "runas"; 

     Process.Start (processStartInfo); 
     UnityEngine.Debug.Log ("ARP table cache cleared."); 
    } 

EDITED:

Versuchen von "cmd.exe" auf "runas.exe" Ändern

public void ClearArpCache() { 
     ProcessStartInfo processStartInfo = new ProcessStartInfo("runas.exe", "/user:Administrator \" cmd /k arp -d \""); // same as "netsh interface ip delete arpcache" 
     processStartInfo.RedirectStandardOutput = true; 
     //processStartInfo.CreateNoWindow = true; 
     //processStartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
     processStartInfo.UseShellExecute = false; 
     processStartInfo.StandardOutputEncoding = Encoding.Default; 

     Process.Start (processStartInfo); 
     UnityEngine.Debug.Log ("ARP table cache cleared."); 
    } 
+1

ich denke, * * Sie, dass vorher, indem Sie sicherstellen lösen sollte Ihre Anwendung erhöht UAC hat, finden https://stackoverflow.com/questions/6412896/giving-application-elevated-uac –

+0

/user: Administrator nicht eine Liste von Parametern für cmd .. Sie sicher, dass Sie Runas nicht gemeint? – BugFinder

+0

Danke @BugFinder, ich habe "Runas" in StartInfo hinzugefügt, aber es hilft nicht. –

Antwort

0

geklärt Genau, warum es mit "runas" ist fehlgeschlagen. Um "runas" in Verb zu verwenden, muss UseShellExecute zuerst true gewendet werden.

Wenn Sie die folgende Funktion ausführen, wird ein Fenster geöffnet, in dem nach Administratorrechten gefragt wird. Klicken Sie einfach auf "Ja", um mit der Ausführung zu beginnen. Obwohl es den Rahmen sprengt, möchte ich, wenn möglich, auch das Popup-Fenster überspringen.

public void ClearArpCache() { 
     ProcessStartInfo processStartInfo = new ProcessStartInfo("cmd.exe", "/k arp -d"); // same as "netsh interface ip delete arpcache" 
     processStartInfo.CreateNoWindow = true; 
     processStartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
     processStartInfo.UseShellExecute = true; 
     processStartInfo.Verb = "runas"; 

     Process.Start (processStartInfo); 
     UnityEngine.Debug.Log ("ARP table cache cleared."); 
    } 
+0

Wenn Sie nicht möchten, dass die UAC-Popup erhalten, müssen Sie [deaktivieren] (https://www.howtogeek.com/howto/windows-vista/disable-user-account-control-uac-the-easy -way-on-windows-vista /). – Oliver

Verwandte Themen