2012-04-03 7 views
-1

Ich habe einen Prozess erstellt, der die Process-Klasse verwendet. Jetzt muss ich einschränken, auf was all dieser neue Prozess zugreifen kann, wie die Erlaubnis für den Zugriff auf das Internet, l oder ein spezielles Verzeichnis. wie kann es gemacht werden. mein Code ist so weit.den Prozess zu beschränken, der von System.Diagnostics.Process gestartet wurde

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

Ihr Code kann Deadlock auf 'p.WaitForExit()', wenn die Ausgabeströme gefüllt werden. –

+0

ja .. ich habe es verpasst. Danke, dass du das unterstrichen hast. aber bedenkt, dass ich so viel von Daten durch den Prozess nicht bekommen werde. Ich denke, es wäre ein Problem –

+0

Ist es ein. NET-Prozess? Ist es dein oder ein Dritter? Ist es in Reichweite für Sie, dies zu tun? Es sollte Sache des Benutzers/Admins sein, diese Art von Sicherheitsbeschränkung zu erzwingen. –

Antwort

1

Sie einen Prozess durch Starten mit einem eingeschränkten Benutzerkonto beschränken kann - Sie in dem Pass müssen UserName und Password den Prozess (der ein SecureString ist) entweder in den ProcessStartInfo oder direkt auf den Process bevor ihn gestartet .

+0

ja .. danke dafür. aber das System, auf dem dies laufen wird. Erstellen eines Benutzers Wud muss provrmatically auf jedem recycelt werden, die wudnt cool enuf sein .. Ich hoffe, es muss ein System in Windows oder .net zu kümmern, was ein Prozess zugreifen. –

+0

@ParvSharma - Nicht dass ich mir dessen bewusst bin. Der Prozess, der hervorgebracht wird, ist vollständig getrennt. Und dieses Detail ist wirklich etwas, was Sie in der Frage haben sollten. – Oded

+0

. Auch dies könnte erfordern, dass ich das Benutzerprofil jedes Mal laden musste, um eine Konsolen-App auszuführen, die viele Ressourcen in Anspruch nehmen würde. –

Verwandte Themen