2017-08-22 26 views
1

私は他のトピックを参照していますが、以下のコーディングがありますが、うまくいきません。私はそれがコマンドウィンドウを作成し、その出力をトレースできるようにウィンドウを開いたままにして "/ k"引数を使用できるようにします。C#でadmin権限でコマンドラインを実行する方法

ただし、コマンドの実行に管理者権限が必要であるという警告がウィンドウから表示されます。どうすれば管理者権限で実行できますか?

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."); 
    } 

編集:それは "runasコマンド" を使用して失敗した理由

は "cmd.exeの" へ "runas.exe" ちょうど明らか

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

私は*あなたがhttps://stackoverflow.com/questions/6412896/giving-application-elevated-uac –

+0

/ユーザーを参照してください、あなたのアプリケーションは、UACが上昇していることを確認することによって、あらかじめことを解決すべきだと思う*:管理者は、 cmdの列挙されたセットではありません。あなたは確かにrunasを意味していませんでしたか? – BugFinder

+0

ありがとう@BugFinder、私はStartInfoに "runas"を追加しましたが、それは役に立ちません。 –

答えて

0

から変更してみてください。 Verbに "runas"を使用するには、UseShellExecuteを最初にに変更する必要があります。

次の機能を実行すると、管理者権限を求めるウィンドウが表示されます。実行を開始するには[はい]をクリックします。可能な場合は範囲​​外ですが、ポップアップウィンドウもスキップします。

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

UACポップアップを取得したくない場合は、[無効にする]必要があります(https://www.howtogeek.com/howto/windows-vista/disable-user-account-control-uac-the-easy -way-on-windows-vista /)を使用します。 – Oliver

関連する問題