c# web服务运行批处理文件或dos命令

本文关键字:dos 命令 批处理文件 运行 web 服务 | 更新日期: 2023-09-27 18:05:47

从我之前的问题,执行批处理文件在c# web服务

我检查了所有相关人员的权限,发现:

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

IIS user = myUser

..win32'cmd.exe:权限为system, admin, myUser = read&execute,读取权限为TrustedInstaller(这是什么?)=完全控制

Visual Studio在管理员模式下运行

我在网上做了一些研究,似乎我需要在我的机器上对"本地政策"做些什么。不幸的是,我使用的是Windows Vista家庭高级版,似乎我无法设置本地策略……我也尝试将cmd.exe的权限更改为"完全控制",但它只是不允许我这样做。

看来我正面临着一个"无法解决"的问题,所以我将解释我在做什么,这样别人可能会给我一个主意。

  • 我已经开发了黑莓应用程序使用黑莓模拟器。

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

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

  • 我的电脑上有一个程序,我将其命名为myprogram.exe。这个程序只能在dos上运行。该程序将使用命令myprogram.exe path'oldfile将文件从一种文件类型转换为另一种文件类型。x路径' newfile中。y newfile中。

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

如果我停止尝试批处理文件的工作,有什么办法我可以执行这些命令?(或任何我可以运行外部程序的方式)请给我一个想法。我在网上搜索了一下,仍然没有得到任何想法。我现在不知道该怎么办了。T_T

p。如果我的问题很愚蠢,请原谅我。我只是想尽一切办法使项目的这一部分成功。

c# web服务运行批处理文件或dos命令

我能想到的就是:

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

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

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

    b)在左侧树中右键单击Application Pools并添加新的应用程序池。

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

    d)在身份下选择LocalSystem。

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

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

    你应该能够执行你的批处理文件。下面是一个例子:

    Process oProcess = new Process();

    oProcess.StartInfo。UseShellExecute = false

    oProcess.StartInfo。工作目录= @"c:'temp'test";

    oProcess.StartInfo。FileName = @"c:'windows'system32'cmd.exe";

    oProcess.StartInfo。

    oProcess.StartInfo。

    oProcess.StartInfo。参数= @"/C C:'temp'test'mybatch.bat";

    oProcess.Start ();

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

  2. 重新考虑设计。我建议使用托管在Windows服务来执行批处理文件。然后从您的web服务调用WCF-Service来执行您的批处理文件如下(伪代码):

    var wcfClient = new ConverterServiceClient();

    wcfClient.Convert (@ " c: ' temp ' oldfile。x"、"c: ' temp ' newfile.y");

    //这里你的服务已经使用你的应用程序转换了文件。

    如果你使用的是。net Framework 2.0,你可以托管一个. net远程服务

希望有帮助。