从Windows服务启动的Console App没有文件系统访问权限

时间:2012-05-18 17:04:10

标签: c# .net windows file service

我有一个Windows服务,旨在启动多个控制台应用程序。控制台应用程序将写入物理日志文件以及文件系统操作。

当服务启动控制台时,他们无权访问文件系统,并且日志文件中没有任何内容。

当我通过双击可执行文件手动启动控制台时,它们没有写入日志文件的问题。

我尝试在本地系统,本地服务,网络服务,本地管理员帐户甚至我自己的登录凭据下运行服务:

这是启动流程的代码:

Process p = new Process();
p.StartInfo.FileName = agent.AgentLocation; /// Physical path to executable
p.StartInfo.CreateNoWindow = true;
p.StartInfo.ErrorDialog = false;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.UseShellExecute = false;
p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
p.Start();

1 个答案:

答案 0 :(得分:0)

更新

问题是你需要按如下方式设置工作目录:

Process p = new Process(); 
p.StartInfo.FileName = agent.AgentLocation; /// Physical path to executable 
p.StartInfo.WorkingDirectory = agent.AgentLocation.Substring(0, agent.AgentLocation.LastIndexOf("\\") + 1);
p.StartInfo.CreateNoWindow = true; 
p.StartInfo.ErrorDialog = false; 
p.StartInfo.RedirectStandardError = true; 
p.StartInfo.RedirectStandardInput = true; 
p.StartInfo.RedirectStandardOutput = true; 
p.StartInfo.UseShellExecute = false; 
p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; 
p.Start();