2015-08-08 70 views
0

我无法执行以下从asp.net web应用程序。 System.Diagnostics.Process.Start(“Notepad.exe”);System.Diagnostics.Process.Start(“Notepad.exe”);不在现场服务器上工作

该项目生成没有错误,它在当地正常工作。在现场服务器上,它只是超时。我花了数小时在网上进行研究,发现其他人也遇到了同样的问题。到目前为止,我没有任何工作。大多数回复似乎都建议查看权限。我们的IT主管也不确定如何解决这个问题。

+7

客户端在服务器上打开记事本有什么用处?你没有想到它会在客户端开放吗?服务不允许在Windows中与桌面交互,因此您的Web服务器将永远不会打开记事本用户界面......鉴于所有这些,我认为这个问题是无意义的。 (它在本地工作,因为很有可能,您在用户会话中以管理员身份运行开发服务器......一个非常不同的环境) – spender

+0

spender:您可以让客户端访问服务器上的可执行文件。您必须创建一个组帐户以允许访问,并且必须在可执行文件上设置凭据以允许组帐户。这应该在有限的情况下完成,因为您不希望入侵者进入服务器。 – jdweng

+0

@jdweng当然,但你永远不会看到从服务启动的桌面UI。 [这只是不允许](https://msdn.microsoft.com/en-us/library/windows/desktop/ms683502%28v=vs.85%29.aspx)。 – spender

回答

0

您可能在本地运行IIS Express上的Web应用程序。这意味着像打开记事本这样的任何东西都可以工作,因为它在会话中的帐户下运行。

然而,在完整的IIS运行是完全不同的事情,因为在我的博客文章中透露,

https://blog.lextudio.com/2015/04/web-application-differences-in-visual-studio-and-iis/

即使记事本以这种方式打开,它是在会话0在IIS服务器端,你看不到它。

如果您尝试在客户端使用JavaScript打开记事本,则可能也会被禁止,因为浏览器在沙箱中运行客户端Web应用程序,从而删除对操作系统资源的访问。

通常,只有浏览网页浏览器安全漏洞的网络应用程序才能通过绕过沙盒以及其他安全保护机制启动记事本,并且您可能不会在正常的Web应用程序中执行此操作。

相关问题