Skip to main content
 首页 » 编程设计

c#之如何在 Asp.net Web 服务器端启动 bat 文件

2024年01月21日31over140

我需要调用控制台应用程序将数据加载到位于公司域内的远程服务器上的另一个桌面应用程序中。

用户将进入网页并将数据上传到 asp.net 网络服务器,转换后应调用该控制台应用程序。用户位于远程,除了 Web 服务器之外没有任何其他访问权限。

我决定降低安全 Web 应用程序上下文,让 asp.net 工作进程在当前 IIS 6.0 Web 服务器上启动控制台应用程序

我做了什么:

  • 我更改了本地系统应用程序池的安全帐户;
  • 我将 ASPNET 帐户和 IIS_WPG IIS 进程帐户添加到管理员组;
  • 我为“IIS Admin Service”和“World Wide Web Publishing Service”进程添加了“允许服务与desctop交互”并重启机器;

  • 我试图通过测试页面代码隐藏在服务器端启动 BAT 文件,但失败了:
    protected void btnStart_Click(object sender, EventArgs e) 
    { 
        Process process = new Process();  
        process.StartInfo.FileName = @”C:\run.bat”;  
        process.StartInfo.UseShellExecute = false; 
        process.Start(); 
        process.WaitForExit();   
    } 
    

    错误是 access denied.
    请帮助我找到任何可行的想法如何在 Web 服务器端启动 bat 文件。
    谢谢

    请您参考如下方法:

    尝试设置UseShellExecute为真而不是假。毕竟,批处理文件在 shell 中运行——所以你需要一个 shell 来执行它。 (另一种选择是运行 cmd.exe 并将批处理文件的名称作为参数传递,例如“cmd.exe/k c:\run.bat”)

    您可能还想尝试创建一个简单的 .NET 应用程序,它只是(例如)创建一个带有时间戳的文件。这样,您可以测试“我可以启动另一个进程”位与“我可以将批处理文件工作”位。