运行批处理文件或dos命令的C#web服务?

运行批处理文件或dos命令的C#web服务?,c#,web-services,batch-file,cmd,C#,Web Services,Batch File,Cmd,从我之前的问题来看 我检查了所有相关材料的许可,发现: 批处理文件:权限=对所有用户的完全控制 IIS用户=myUser ..win32\cmd.exe:系统权限,管理员,myUser=读取和执行,“TrustedInstaller”的读取权限(是什么?)=完全控制 Visual Studio正在管理员模式下运行 我在互联网上做了一些研究,似乎我需要在我的机器上对“本地政策”做些什么。不幸的是,我使用的是Windows Vista Home Premium,似乎无法设置本地策略。。。我还尝试将c

从我之前的问题来看

我检查了所有相关材料的许可,发现:

批处理文件:权限=对所有用户的完全控制

IIS用户=myUser

..win32\cmd.exe:系统权限,管理员,myUser=读取和执行,“TrustedInstaller”的读取权限(是什么?)=完全控制

Visual Studio正在管理员模式下运行

我在互联网上做了一些研究,似乎我需要在我的机器上对“本地政策”做些什么。不幸的是,我使用的是Windows Vista Home Premium,似乎无法设置本地策略。。。我还尝试将cmd.exe的权限更改为“完全控制”,但它不允许我这样做

似乎我正面临一个“无法解决”的问题,所以我会解释我在做什么,以便有人能告诉我该怎么做

  • 我已经开发了黑莓应用程序使用黑莓模拟器。它与我的web服务位于同一台PC上

  • 我用C#开发了web服务,发布在我的本地主机上

  • Blackberry应用程序将文件上载到web服务。Web服务将文件存储在我的电脑上。(我对这部分没有问题。)

  • 我的电脑上有一个程序,我叫它myprogram.exe。该程序只在dos上运行。程序将使用命令myprogram.exe path\oldfile.x path\newfile.y newfile.y将文件从一种文件类型转换为另一种文件类型。该命令将自动创建并存储在我的电脑上

  • 我需要转换文件,这是从BB发送的,现在存储在我的本地PC上,所以我写了一个批处理文件包含dos命令。Web服务应该执行批处理文件,但不会

如果我停止尝试使用批处理文件,是否有任何方法可以执行这些命令?(或任何我可以运行该外部程序的方式)请给我一个想法。我已经在网上搜索过了,仍然不知道。我不知道现在该怎么办。图特

如果我的问题很愚蠢,请原谅我。我只想尝试一切可能的方法,使项目的这一部分获得成功

我能想到的就是:

  • 您的ASP.NET网站在DefaultAppPool下运行。 DefaultAppPool只有有限的权限

    以便从服务中执行批处理文件 创建一个新的应用程序池

    a) 打开Internet信息服务管理器(IIS 7)。 你会发现互联网信息服务 Windows Vista开始菜单中的管理器

    b) 在左侧的树中,右键单击应用程序池 并添加一个新的应用程序池

    c) 选择新创建的应用程序池并单击 高级设置

    d) 在identity下选择LocalSystem

    e) 在树中选择您的网站(例如默认网站)。 选择基本设置并选择您创建的应用程序池

    f) 重新启动网站(右键单击网站,在 管理您的网站(选择重新启动)

    您应该能够执行批处理文件。 以下是一个例子:

    流程操作流程=新流程()

    oProcess.StartInfo.UseShellExecute=false

    oProcess.StartInfo.WorkingDirectory=@“c:\temp\test”

    oProcess.StartInfo.FileName=@“c:\windows\system32\cmd.exe”

    oProcess.StartInfo.CreateNoWindow=true

    oProcess.StartInfo.WindowStyle=ProcessWindowStyle.Hidden

    oProcess.StartInfo.Arguments=@“/C:\temp\test\mybatch.bat”

    oProcess.Start()

    但是,我不推荐这种方法。

  • 重新考虑你的设计。我建议使用托管在服务器中的WCF服务 Windows服务来执行批处理文件。 然后从web服务调用WCF服务来执行 批处理文件(伪代码):

    var wcfClient=new ConverterServiceClient()

    wcfClient.Convert(@“c:\temp\oldfile.x”、“c:\temp\newfile.y”)

    //在此,您的服务已使用您的应用程序转换了文件

    如果您绑定到.NETFramework2.0,则可以承载 Windows服务应用程序中的.NET远程处理服务


  • 希望,这会有所帮助。

    您为什么创建批处理文件而不是直接调用myprogram.exe。当您将另一个用户分配给您的服务而不是本地服务时会发生什么情况?该用户有足够的权限进行您需要的操作?我真的不知道如何调用myprogram.exe并直接向其输入命令。你能给我举个例子吗?我试过System.Diagnostics.Process.Start(@“C:\Program Files\TotalAudioConverter\AudioConverter.exe”);但什么也没发生。你的AudioConverter.exe可能需要一些参数?So System.Diagnostics.Process.Start(@“C:\Program Files\TotalAudioConverter\AudioConverter.exe”,@“C:\MyFolder\MyInflie C:\MyFolder\MyOutFile”);(或任何需要的参数)这意味着我可以将所有参数放在C:\Program Files\TotalAudioConverter\AudioConverter.exe之后,对吗?完整参数是C:\MyFolder\myinfle C:\MyFolder\MyOutFile C-mp3,因此它看起来像System.Diagnostics.Process.Start(@“C:\Program Files\TotalAudioConverter\AudioConverter.exe”,@“C:\MyFolder\myinfle C:\MyFolder\MyOutFile-cmp3”);正确的?真的非常感谢你的帮助,埃列文!!!我会尽快尝试,并告诉你结果:)谢谢汉斯约格!我会尽力告诉你结果!:)现在,我有了使用DefaultApplicationPool(网络服务)的wwwroot和使用NewAppPool(本地系统)的MyApp。我仍然无法运行批处理文件。我尝试输入web.config,但什么也没发生。请告诉我我犯了什么错误。我在任务管理器中看到了所有进程,并且有一个用户名为system的.exe程序进程。但我仍然不明白为什么它从未被执行过(我想你的程序从未执行过,因为Windows Vista的用户帐户控制(UAC)。UAC将应用程序限制为标准用户权限。哦,不……我正计划换一台机器(Windows 7)。希望我不会面临这种情况。)