C# 从windows服务启动的控制台应用程序没有文件系统访问权限

C# 从windows服务启动的控制台应用程序没有文件系统访问权限,c#,.net,windows,file,service,C#,.net,Windows,File,Service,我有一个windows服务,旨在启动几个控制台应用程序。控制台应用程序将写入物理日志文件以及文件系统操作 当服务启动控制台时,它们无法访问文件系统,并且日志文件中没有显示任何内容 当我通过双击可执行文件手动启动控制台时,它们在写入日志文件时没有问题 我已尝试在本地系统、本地服务、网络服务、本地管理员帐户甚至我自己的登录凭据下运行该服务: 这是启动流程的代码: Process p = new Process(); p.StartInfo.FileName = agent.AgentLocation

我有一个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();
更新:

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

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(); 

不指定ProcessStartInfo.WorkingDirectory始终是丢失文件的好方法。查看c:\windows\System32如果您正在使用现代windows设备,也不要忘记UAC。但我认为汉斯做到了。你确定控制台应用程序已经启动了吗?设置
CreateNoWindow=false
以查看控制台中发生的情况。我将尝试设置工作目录,但控制台会写入在别处定义的完全独立的文件夹。感谢您的建议控制台应用程序已启动,因为我可以在任务管理器中看到它们。我正在实现对数据库的日志记录。