我有一个在登录名“UserA”下运行的 Windows 服务。Windows 服务的工作是在计时器经过的事件上启动一个新进程。
private void timer_Elapsed(object sender, ElapsedEventArgs e)
{
Task.Factory.StartNew(() => StartNewProcess());
}
private void Initialize()
{
newProcess = new Process();
newProcess.StartInfo.FileName = "Test.exe";
newProcess.StartInfo.Arguments = "sessionId...";
newProcess.StartInfo.CreateNoWindow = false;
newProcess.StartInfo.ErrorDialog = false;
newProcess.StartInfo.RedirectStandardError = true;
newProcess.StartInfo.RedirectStandardInput = true;
newProcess.StartInfo.UseShellExecute = false;
newProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
}
private void StartNewProcess()
{
newProcess.Start();
}
在任务管理器上,我看到 Windows 服务和新进程都有一个“用户名”作为“UserA”。
但问题是 Windows 服务能够访问“C:\QueryResult”,但新进程无法访问“C:\QueryResult”
我File.Copy("C:\QueryResult", "D:\blahblah")
在这两个过程中都使用
新流程中的安全上下文是否发生了变化?