我有一个本地服务(用C#编写),在64位Windows 7上运行,监视文件夹(通过文件系统观察程序),并在适当的文件类型(在这种情况下为.xml)出现时使用文档文件的完整路径作为参数调用reader应用程序。目前读者应用程序是记事本。一切似乎都很好;当文件被放入文件夹时,我可以在任务管理器中看到记事本正在运行,但我看不到它!它在没有UI的情况下在后台运行。我尝试过其他文件阅读器应用程序,所以不是这样,它必须与它被调用的方式有关。 这是当前的代码,但我尝试过其他变体,特别是ProcessStartInfo。
var workingDirectory = Path.GetDirectoryName(this.readingApplication) ?? Path.GetTempPath();
this.eventLog1.WriteEntry(
"In OpenTheMessage. Working Directory: " + workingDirectory,
EventLogEntryType.Information,
++this.eventId);
var info = new ProcessStartInfo
{
FileName = this.readingApplication,
Arguments = xmlFileMessage,
WindowStyle = ProcessWindowStyle.Normal,
UseShellExecute = true,
WorkingDirectory = workingDirectory
};
this.eventLog1.WriteEntry(
"In OpenTheMessage. Run: " + this.readingApplication + " " + xmlFileMessage,
EventLogEntryType.Information,
++this.eventId);
Process.Start(info);
我可以从事件日志中看到程序流程是正确的。我甚至可以将日志中的命令复制到Windows Run中,它可以工作。这是怎么回事?