2017-02-28 18 views
1

私は、挿入されたUSBのドライブレターを見つけて、それを変数_usbDriveLetterに割り当てているC#プログラムを持っています。C#から.cmdファイルをポップアップウィンドウなしで実行

さらにCHKDSK _usbDriveLetterコマンドを実行するバッチファイルに_usbDriveLetterの値を渡す必要があります。

_usbDriveLetterの値を渡し、バッチファイルを実行する次のコードがあります。

 string _usbDriveLetter = @"F:\"; //For testing here 
     string MyBatchFile = @"<FILEPATH>\chkdsk.cmd"; 

     ProcessStartInfo proc = new ProcessStartInfo(); 
     proc.CreateNoWindow = true; 
     proc.FileName = MyBatchFile; 
     proc.Arguments = usbDriveLetter ; 
     Process.Start(proc); 

質問:とすぐにコードがバッチを実行するためのラインに到達として、次のようなウィンドウがCMD.EXEを起動できるように思われます。バックグラウンド/サイレントモードで実行するにはどうすればよいですか(少なくともユーザーとのやり取りはありません)。

enter image description here

+2

UACを無効にするか、高い権限でメインプログラムを開始する – dcg

+0

.cmdファイル内のユーザー権利を既に昇格しています。高い権限でアプリケーションを実行することはできません。 – skm

+3

UACがオンになっている場合は、ユーザーとのやりとりが必要です。このようなプロンプトが常に表示されます。 – Equalsk

答えて

0

あなたはここでそれを行うためのリソースがありますC#

からEXEを実行します.EXEに.CMDを変換し、目に見えないにプロパティを設定してみてください可能性 - http://www.f2ko.de/en/ob2e.php

1

この必要があります作業。

Process runprogram = new Process(); 
          ProcessStartInfo programinfo = new ProcessStartInfo(); 
          programinfo.WindowStyle = ProcessWindowStyle.Hidden; 
          programinfo.CreateNoWindow = true; 
          programinfo.UseShellExecute = false; 
          programinfo.RedirectStandardOutput = true; 
          programinfo.FileName = "cmd.exe"; 
          programinfo.Arguments = " /C \"<FILEPATH>\chkdsk.cmd\""; 
          runprogram.StartInfo = programinfo; 
          runprogram.Start(); 

また、プログラムを最初に実行するときに特権の昇格を求めます。

+0

ありがとう、私の問題はコンソールウィンドウではないので、問題を解決しません。私の問題は、ウィンドウのポップアップメッセージです。明らかに、昇格された権限でUACを実行したり、UACの設定を変更したりする以外は、この問題に対する解決策はありません。 – skm

+0

@skm私はちょうどそれをテストし、それは動作しますか?アプリケーションの は、実行レベルがhighestAvailableに設定されたマニフェストファイルを追加し、そのコードを使用します。 –

+0

この目的でサンプルマニフェストを提供できますか? – skm

関連する問題