【问题标题】:How to access cmd.exe from ASP.NET MVC?如何从 ASP.NET MVC 访问 cmd.exe?
【发布时间】:2018-11-20 22:09:42
【问题描述】:

我目前正在使用 ASP.NET MVC 的网站上工作,我正在尝试允许用户通过该网站访问 cmd.exe 并在其中运行一些命令。这是我尝试过的:

Dim command As String = "msg %username% Hello World!"

Dim pi As ProcessStartInfo = New ProcessStartInfo()
Dim p As Process = New Process()
pi.FileName = "cmd.exe"
pi.Arguments = command
pi.UseShellExecute = False
p.StartInfo = pi
p.Start()

不幸的是,当我尝试使用本地 IIS 对其进行测试时,似乎什么都没有发生,也没有显示任何内容。

非常感谢任何帮助。

【问题讨论】:

  • 会不会和IIS有关系?我现在真的零线索了
  • Web 应用程序中的任何 VB 代码都在服务器上执行,因此这不可能帮助用户在浏览器中查看站点,可能在世界另一端的 Web 服务器上。如果您想要的是可能的,则必须通过脚本调用它,但出于安全原因,几乎总是阻止网站访问用户本地计算机上的资源。普通网站根本无法实现您想要的。您真的应该了解 Web 应用程序的工作原理。
  • 此命令将在服务器上运行,而不是在客户端上运行。运行服务器的用户无权访问 do cmd。可以在服务器上创建一个可以运行命令的进程并让网络用户调用这个进程。
  • 如果我创建一个具有管理员权限的新本地用户,并赋予该用户足够的权限来执行批处理脚本,然后在 IIS 中选择该用户作为 AppPool 用户,是否可行?
  • @JessicaSong 你能详细说明你为什么要这样做吗?也许有一种方法并不那么危险。

标签: asp.net asp.net-mvc vb.net batch-file iis


【解决方案1】:

您无法在服务器上的命令行进程中访问客户端 %username%。用户名将是服务器上的登录用户(可能不是您想要的用户名)。

您想要的是使用控制器的User 属性。这将是 ASP.Net 中的当前登录用户(如果有的话)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多