【问题标题】:restricting the process started by System.Diagnostics.Process限制由 System.Diagnostics.Process 启动的进程
【发布时间】:2012-04-03 12:43:09
【问题描述】:

我已经使用 Process 类创建了一个进程。现在我需要限制所有这些新进程可以访问的内容,例如访问 Internet、l 或特殊目录的权限。 如何做呢。 到目前为止我的代码是这样的。

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 = "";

【问题讨论】:

  • 如果输出流被填满,您的代码可能会在 p.WaitForExit() 上死锁。
  • 是的.. 我错过了。感谢您指出这一点。但考虑到我不会通过这个过程获得那么多数据。我不认为这是一个问题
  • 它是 .net 进程吗?是你的还是第三者的。你这样做是否在范围内。应该由用户/管理员来施加这种安全限制。
  • 执行 wud 的路径是在运行时决定的,它将是其他一些控制台应用程序,但它将运行的系统是我的,而且代码是我的。

标签: .net security c#-4.0 process


【解决方案1】:

您可以通过使用受限制的用户帐户启动进程来限制进程 - 您需要在 ProcessStartInfo 或直接在Process 在开始之前。

【讨论】:

  • 是的……谢谢。但是将在其上运行的系统。创建一个用户 wud 必须在每次回收时都以编程方式完成 wudnt 很酷 enuf .. 我希望 windows 或 .net 中必须有一些系统来处理进程正在访问的内容。
  • @ParvSharma - 我不知道。产生的过程是完全独立的。这个细节确实是你应该在问题中提出的。
  • 另外,这可能需要我每次都加载用户配置文件需要执行一些控制台应用程序。这会占用大量资源。
  • 嗯。与 appDomains 相比,有一些系统可以限制一段代码在应用程序域中访问的内容。
猜你喜欢
  • 2013-10-09
  • 1970-01-01
  • 2010-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多