【问题标题】:Process.Start does not work in asp.net [duplicate]Process.Start 在 asp.net 中不起作用 [重复]
【发布时间】:2016-04-20 03:21:37
【问题描述】:

我有一个非常简单的代码,用于测试是否可以打开特定文件。到目前为止,这是我拥有的代码

string filename = "C:\\anu.txt";
Process myProcess = new Process();
myProcess.StartInfo.FileName = filename;
myProcess.StartInfo.UseShellExecute = true;
myProcess.StartInfo.RedirectStandardOutput = false;
myProcess.Start(); 

此代码完美地启动了记事本进程,但作为用户“DefaultAppPool”。所以,我可以在任务管理器中看到这个过程,但记事本窗口没有出现。我不知道我能在这里做什么来解决这个问题。我尝试以不同的用户身份运行它,但它仍然显示为“DefaultAppPool”用户 ID。

编辑:

显然这是 Vista 及更高版本中的一项安全功能。 :/所以,不能再这样做了。哦,是时候找到解决方法了。

【问题讨论】:

  • 不是。在这两种情况下再次检查问题。我没有进程无法启动的问题。我在默认用户名下启动进程时遇到问题。 ://
  • 如果您正在测试“我是否可以打开特定文件”,为什么需要查看记事本窗口?将 asp.net 应用程序部署到服务器后会发生什么?
  • 我应该在用户端打开一个邮件客户端,并将文件附加到新的邮件对象中。我正在测试是否可以在客户端机器上打开 msg 文件。我想将此 msg 文件显示给用户,以便他/她可以在发送前进行更改。这是指向实际问题的链接,其中包含更多详细信息。 stackoverflow.com/questions/36714879/… 无论如何,事实证明,这种解决方法行不通,所以我现在要去尝试新的东西。
  • 您将无法从您的 C# 服务器端代码访问任何客户端!

标签: asp.net


【解决方案1】:

您不需要编写那么多代码。您可以仅通过一行打开文本文件

Process.Start(@"C:\Users\ankush.jain\Desktop\test.txt");

Process 存在于System.Diagnostics 命名空间中。

【讨论】:

  • 我想你根本不明白这个问题。我使用那么多行还是只使用一行都没关系。它做同样的事情。进程完美启动,仅在 IIS 用户名下。我按原样尝试了您的代码,同样的事情。附:我确实知道要使用哪个命名空间。 ;)
  • 这是一个非常古老且不同的问题。首先,我的系统确实启动了进程,工作进程可以并且正在启动我扔给它的各种进程。如果我去任务管理器,我可以在那里看到进程。只是它是默认 IIS 用户启动的,因此无法从登录用户的桌面访问。至于管理服务,那不再起作用了。 IIS 在 Win 7 或更高版本中不需要管理员服务。 :) 所以,第二个建议出来了。无论如何,IIS 服务可以访问整个 Web 应用程序文件夹和 C 盘。所以,没有问题,真的。
  • 和你一样的具体情况stackoverflow.com/questions/22171115/…
  • 谢谢。第二个链接正是我正在寻找的。原来这是一种安全措施,所以我必须想办法绕过它。 ://
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多