Process.Start()和手动启动之间的区别

时间:2014-01-28 17:32:32

标签: c# asp.net process.start

我有一个单独的表单应用程序,它通过计时器连续检查用户状态。我想在Web应用程序中使用process.start(“C:\ inetpub \ wwwroot \ mywebapp \ Checker \ checker.exe”)启动相同的.exe。执行代码后,exe出现在系统进程列表中(不会出现在Windows任务管理器的应用程序列表中),但它什么都不做。它不会更改用户状态,也不会将数据发送到数据库。但是当我双击时手动启动相同的.exe时,它会开始工作,它也会出现在Windows任务管理器应用程序列表和进程列表中。 .exe是用C#.Net编写的,是C#windows应用程序的执行文件。

1 个答案:

答案 0 :(得分:0)

当IIS启动时,该进程将在启动它的帐户下运行,该帐户将是运行Web应用程序的w3wp进程。由于这不是您的帐户,因此在您选择“显示所有用户的进程”选项之前,它不会显示在任务管理器中。当您通过双击运行它时,它在您的帐户下运行,因此将可见。

如果更改和数据库访问依赖于使用您的帐户获取访问权限,那么当它从IIS中运行时,这将不起作用。例如,如果使用“Windows身份验证”完成数据库连接,则它将尝试以IIS帐户登录,这不太可行。

要解决此问题,您可以通过在ProcessStartInfo结构中指定用户名/密码来启动进程。但是,这将要求您将密码嵌入某处,这可能是不可取的。另外,请查看更改数据库连接字符串,以便明确指定登录凭据。