我正在尝试使用process.Start()从Web服务启动notepad.exe(作为更简单的测试)。此Web服务部署到Windows XP上的IIS 5.1(用于开发),并可能部署到使用IIS 6的Windows 2003服务器。这是我正在使用的代码:
[WebMethod]
public String ReqFormImage(String qString)
{
_qString = qString;
String imageLoc = @"http://localhost/MobileService/formImages/" + NameOfScreenshot(qString);
Process myProcess = new Process();
try
{
//Credentials
myProcess.StartInfo.Domain = "domain";
myProcess.StartInfo.UserName = "myUserName"; //local admin on development pc
myProcess.StartInfo.Password = PasswordGenerate("removed");
//StartInfo
myProcess.StartInfo.WorkingDirectory = @"C:\WINDOWS\System32";
myProcess.StartInfo.FileName = "notepad.exe";
//myProcess.StartInfo.Arguments = qString;
myProcess.StartInfo.UseShellExecute = false;
myProcess.StartInfo.RedirectStandardInput = true;
myProcess.StartInfo.RedirectStandardOutput = true;
myProcess.StartInfo.RedirectStandardError = true;
//myProcess.StartInfo.LoadUserProfile = false;
myProcess.Start();
myProcess.WaitForExit();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
return imageLoc;
}
我也在web.config中将模拟设置为true(我在配置文件中尝试使用和不使用我的凭据,以及将impersonate设置为false)。我还给了我的用户ID,aspnet和notepad.exe上的服务帐户的读/执行权限。
myProcess.WaitForExit()上的断点会弹出一个消息框,显示“应用程序无法正确初始化(0xc0000142)”。我查看了事件日志,没有比此更多的信息。
我最终需要的是能够启动一个exe模拟可以硬编码或模仿访问Web服务的用户的帐户。我知道用GUI服务器端打开exe有问题,但我需要这个才能工作。我确定这不是最好的做法,但我的时间不够,我正在寻找一种解决方法。目前,至少让记事本发布就足够了。
感谢您的帮助。
答案 0 :(得分:0)
在IIS中,我必须将Web服务设置为运行脚本和可执行文件,而不仅仅是脚本。记事本现在启动,但没有完整的GUI。我不认为我需要的是可能的,但我解决了我的问题。