C#:从Windows服务捕获屏幕

我必须每隔一秒捕获一次桌面的截图。 在Winform应用程序中运行正常。 但在将代码移动到Windows服务后,它不会捕获屏幕截图。 知道为什么不这样做吗?

这是代码

public partial class ScreenCaptureService : ServiceBase { System.Timers.Timer timer = new System.Timers.Timer(); public ScreenCaptureService() { InitializeComponent(); this.timer.Interval = 1000; this.timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed); } void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { CaptureScreen(); } protected override void OnStart(string[] args) { if (!EventLog.SourceExists(this.ServiceName, Environment.MachineName)) { EventLog.CreateEventSource( new EventSourceCreationData( this.ServiceName, Environment.MachineName ) ); } EventLog.WriteEntry(this.ServiceName, "The OnStart event has been called"); this.timer.Enabled = true; CaptureScreen(); } protected override void OnStop() { EventLog.WriteEntry(this.ServiceName, "The OnStop event has been called"); this.timer.Enabled = false; } static int count = 1; private void CaptureScreen() { Bitmap printscreen = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height); Graphics graphics = Graphics.FromImage(printscreen as Image); graphics.CopyFromScreen(0, 0, 0, 0, printscreen.Size); printscreen.Save(@"C:\printscreen" + count++ + ".jpg", ImageFormat.Jpeg); EventLog.WriteEntry(this.ServiceName, "Screenshot Captured"); } } 

您是否选中了“允许服务与桌面交互”(在服务属性中)?