【问题标题】:How to execute EXE file on Windows 2008 using ASP.NET如何使用 ASP.NET 在 Windows 2008 上执行 EXE 文件
【发布时间】:2011-08-05 13:18:23
【问题描述】:

如何使用 ASP.NET 和 IIS7 在 Windows 2008 上执行 EXE 文件?我试图在下面运行代码,但它似乎不起作用。代码执行没有任何错误,但我没有在进程列表中看到记事本。如果我使用 ASP.NET 开发人员服务器但不使用 IIS7,一切正常。

string enginePath = "notepad";

var password = new System.Security.SecureString();
foreach (char character in ConfigurationManager.AppSettings["Credentials"])
    password.AppendChar(character);

var p = new Process
            {
                StartInfo =
                    {
                        FileName = enginePath,    
                        UseShellExecute = false,
                    }
            };


p.StartInfo.UserName = "Administrator";
p.StartInfo.Password = password;

p.Start();

【问题讨论】:

  • 我真的希望您不要将服务器管理员密码保存在 web.config 文件中。
  • 是的,我保留,但这只是测试项目。我需要让 exe 执行工作。如果它可以使用管理员密码,我会更进一步并使用另一个帐户。
  • @sgmeyer 他检查了进程的进程列表 - 即使它不可见,它也会在那里。此外,他试图在服务器上运行它,而不是客户端。
  • @Tomas 如果您打印出 p.ID 值(即 PID),您会得到什么。这是否与进程资源管理器中的任何内容相匹配?您是否在任务管理器中单击了“显示所有用户的进程”?您是否尝试过使用进程资源管理器而不是任务管理器?

标签: c# asp.net windows permissions


【解决方案1】:

为了应对安全问题,Microsoft 不断增加对 IIS 进程的隔离,这样您就不能(或者我没有找到允许您...的解决方法)直接调用 IIS 应用程序域之外的任何内容。您可以构建一个 Windows 服务,该服务可以使用 WCF 通道间接跨越该边界。该服务(配置为允许与桌面交互)可以反过来启动您的 Notepad.exe。

要做到这一点有点麻烦,我当然有兴趣看看其他人是否有更好的答案。

【讨论】:

    【解决方案2】:

    我删除了下面的行,它突然开始工作了。我无法解释如何在 IIS7 帐户下运行 exe,但它可以运行。

    p.StartInfo.UserName = "Administrator";
    p.StartInfo.Password = password;
    

    【讨论】:

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