当我指定用户凭据时,我无法使用它Process.Start
来启动简单的控制台应用程序。似乎调用Process.Start
尝试启动应用程序,但应用程序立即失败并显示一个事件日志条目(见下文)。我在 Windows 7 Ultimate (x64) 机器上运行 IIS 7.5/.NET 4.0。应用程序池在 ApplicationPoolIdentity 下运行并使用集成模式。网站设置为在完全信任下运行。
为了测试,我创建了一个简单的控制台应用程序,ConsoleApplication1
它只是将“Hello World”写入控制台并将当前日期和时间附加到一个文本文件中,这样我就可以看到应用程序已执行。当我使用以下代码在我的 ASP.NET 应用程序中单击按钮运行应用程序时,我看到一个新值按预期写入我的文本文件。
protected void btnStart_Click(object sender, EventArgs e)
{
Process.Start(@"C:\dump\test\ConsoleApplication1.exe");
}
当我尝试使用下面的代码指定一组用户凭据来运行应用程序时,没有任何内容写入我的文本文件,并且我在事件查看器中看到一条消息,指出:
Application popup: ConsoleApplication1.exe - Application Error : The application was unable to start correctly (0xc0000142). Click OK to close the application.
这是导致错误的代码:
protected void btnStart_Click(object sender, EventArgs e)
{
Process.Start(@"C:\dump\test\ConsoleApplication1.exe",
"myusername", CreatePassword("mypassword"), string.Empty);
}
private static SecureString CreatePassword(IEnumerable<char> password)
{
var ss = new SecureString();
foreach (var c in password)
ss.AppendChar(c);
return ss;
}
我很确定用户凭据的身份验证工作正常,因为Logon failure: unknown user name or bad password
如果我输入不正确的信息,我会收到错误消息。
我觉得我一定错过了一些简单的东西,但是有人可以在这里指出我正确的方向吗?