「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")
両方のプロセスで使用しています
新しいプロセスでセキュリティ コンテキストが変更されましたか?