2012-04-03 14 views
-1

私はProcessクラスを使用してプロセスを作成しました。今、私はこの新しいプロセスすべてがインターネット、lまたは特別なディレクトリにアクセスするためのアクセス許可のようにアクセスできるものを制限する必要があります。 どのように行うことができます。 これまでのコードはこれのようです。System.Diagnostics.Processによって開始されたプロセスを制限します。

Process p = new Process() 
      { 
       StartInfo = new ProcessStartInfo(executablePath) { 
       CreateNoWindow = true, 
       ErrorDialog = false, 
       RedirectStandardError = true, 
       RedirectStandardInput = true, 
       RedirectStandardOutput = true, 
       WindowStyle = ProcessWindowStyle.Hidden, 
       StandardErrorEncoding = Encoding.UTF8, 
       StandardOutputEncoding = Encoding.UTF8, 
       UseShellExecute = false, 
       } 
      }; 
      p.Start(); 

      var outputStreamReader = p.StandardOutput; 
      var inputStreamWriter = p.StandardInput; 
      var errorStreamReader = p.StandardError; 

      p.WaitForExit(); 

      string output = outputStreamReader.ReadToEnd(); 
      string s = ""; 
+0

出力ストリームがいっぱいになると、コードは 'p.WaitForExit()'でデッドロックする可能性があります。 –

+0

はい。私はそれを逃した。これを指摘してくれた感謝。しかし、私はこのプロセスを通じて多くのデータを得ることはないと考えています。私はそれが問題になるwudはいない –

+0

それは.netプロセスですか?それはあなたまたは第三者のものですか?あなたがこれを実行することは範囲内ですか?この種のセキュリティ制限を課すためには、ユーザー/管理者に任せてください。 –

答えて

1

あなたは、制限されたユーザーアカウントで、それを起動してプロセスを制限することができます - あなたはそれを開始する前にProcessProcessStartInfo、または直接のいずれかでのプロセスに(SecureStringである)UserNamePasswordに渡す必要があります。

+0

ええ、これに感謝します。これが実行されるシステムです。私はあなたのプロセスがアクセスしているものの世話をするためにいくつかのシステムがWindowsまたは.netになければならないことを願っています。 –

+0

@ParvSharma - それは私が認識しているわけではありません。生成されるプロセスは完全に分離されています。そして、その細部は本当にあなたが質問に持つべきものです。 – Oded

+0

ndまた、これは、毎回、いくつかのコンソールアプリケーションを実行する必要があるユーザープロファイルを読み込む必要があるかもしれません.. wudは多くのリソースを占有します。 –

関連する問題