背景: 我创建了一个服务,当满足某些条件时会触发应用程序的执行。此服务设置为在用于通过RDP登录到系统的相同Windows用户帐户下运行。我还创建了通过此服务触发的.NET应用程序。此应用程序在磁盘上查找配置文件(可在ProgramData文件夹中找到该应用程序)使用配置文件中的设置来影响此应用程序的输出。从Windows服务触发应用程序找不到文件?
问题: 当应用程序由用户以交互方式运行时,应用程序运行良好。但是,当服务触发应用程序运行时,它显示应用程序未从配置文件加载正确的值。这几乎就像应用程序从服务运行时有自己的配置文件,并没有使用ProgramData中的配置文件。
我只是寻找一些见解,为什么这可能会发生。当通过计划任务或作为服务运行应用程序时,我似乎在Windows 7和Windows 2008 R2中出现了一些奇怪的行为。这几乎就像交互式应用程序和服务应用程序在同一系统上运行的同一用户具有不同的环境一样...
注意:服务可执行文件也位于与触发应用程序相同的文件夹中。我希望默认的工作目录是服务运行目录。
public int ExecRun()
{
Process proc = new Process();
proc.StartInfo = new ProcessStartInfo
{
FileName = "C:\\Program Files\\TEST\\runme.exe",
Arguments = "/DS:TEMP"
};
proc.Start();
proc.WaitForExit();
return proc.ExitCode;
}
你可以发布你用来执行应用程序的代码吗?您可能需要指定执行文件夹。 – 2013-02-28 15:12:15
更新以显示我们如何从服务调用应用程序。我们没有指定工作目录。这不是默认的服务运行目录?我还应该注意到,这种现象在每次安装时都不会发生。 – CollisionNinja 2013-02-28 15:24:50
不,这取决于操作系统和其他东西 – 2013-02-28 15:28:02