2013-02-09 1 views
0

EDIT:C# Служба не будет записывать файлы, не ошибки

Хорошо, как сейчас, и просматривая бесчисленные посты я это я уже прибыл к решению, я не могу делать то, что мне нужно сделать из службы, Я хотел, чтобы это была услуга, чтобы она всегда была для компьютера, но, видимо, с использованием способов написания служб, я не могу запускать команды, которые я хочу запустить, потому что «Служба не работает в том же пространстве как пользовательский рабочий стол ", поэтому он не сможет захватить рабочий стол, по крайней мере, то, что им удалось собрать.

Как сейчас, я оставлю это здесь и, возможно, найду способ запуска программы под именем пользователя при входе в систему, чтобы захватить рабочий стол, а не пытаться сделать это непосредственно из службы.

Я уже несколько часов стуча головой о стену, пытаясь понять это, я никогда раньше не делал службы, просто формировал приложения, а также мой следующий проект (Client Client Model Client Monitoring) должен быть установлен как служба на клиентских машинах и отправлять данные обратно на главный сервер.

Никогда не писал службу, прежде чем я посмотрел, как написать и как ее установить и еще много чего. У меня все получилось нормально, текущая рабочая версия выплескивает событие каждые 30 секунд, чтобы показать свою работу.

Я начал с запуска его в LocalSystem, потому что предположил, что у него есть права на запись в файл, но после этого я пробовал LocalService, это тоже не сработало.

Im указав каталог как C: \ WatcherData \ Test.JPG

и протестировали его в регулярном применении форм (который работает)

OutputImage.Save ("C: \ watcherdata \ test.jpg ", ImageFormat.Jpeg);

Никаких исключений, событий нет, этого просто не происходит, но сообщение EventLog помещается непосредственно перед ним, поэтому оно должно доходить до этой точки, верно?

Любая помощь будет оценена, если вам нужно знать что-нибудь еще, что я был бы счастлив обязать

EDIT: Здесь идет небольшой фрагмент кода:

private void ServiceWorkerThread(object state) 
    { 
     while (!this.stopping) 
     { 
      this.eventLog1.WriteEntry("This is a test2"); 

      CallMe(); 

      Thread.Sleep(30000); 
     } 

     this.stoppedEvent.Set(); 
    } 

    private void CallMe() 
    { 
     try 
     { 
      int screenWidth = Screen.GetBounds(new Point(0, 0)).Width; 
      int screenHeight = Screen.GetBounds(new Point(0, 0)).Height; 
      Bitmap OutputImage = new Bitmap(screenWidth, screenHeight); 
      Graphics gfx = Graphics.FromImage((Image) OutputImage); 
      gfx.CopyFromScreen(0, 0, 0, 0, new Size(screenWidth, screenHeight)); 
      OutputImage.Save("c:\\watcherdata\\test.jpg", ImageFormat.Jpeg); 
     } 
     catch (Exception e) 
     { 
      this.eventLog1.WriteEntry(e.Message + "\r\n" + e.StackTrace, EventLogEntryType.Error); 
     } 
    } 

большинство из них было взято из образец документа Microsoft, как я уже сказал, я новичок услуг

в настоящее время до сих пор пытаются понять это, позволит вам, ребята, знаете, если я где-нибудь получить

EDIT 2

После игры еще немного мне удалось заставить его написать файл. Поняв, что большая часть проблемы связана с моей нехваткой знаний о том, как создавать службы и инсталляторы, по-видимому, я не перестраивал когда я построил свой сервис.

Теперь он просто пишет всю черную, большую черную картинку. но, по крайней мере, его письмо!

+1

Некоторый код, вероятно, поможет вам получить ответ. Как есть, у нас не так много, чтобы продолжать. – vossad01

+0

Пробовал ли вы обертывать файл outputimage в try/catch и записывать исключение в журнал событий в catch? – AaronLS

+0

yes Я попробовал это (должен был ввести несколько символов, чтобы сказать «да»>)> – RyanTimmons91

ответ

2

Как насчет какого-то исходного кода?

Я мог бы добавить трассировку, чтобы убедиться, что файл написан на пиктограмме.

В большинстве случаев этот тип сбоя - это проблема с разрешениями и/или люди пытаются записать в системный каталог Windows. Вы сомневаетесь, что убедитесь, что не выполняете запись в каталог Windows. Убедитесь, что папка c: \ watcherdata существует.

+0

ну, я полагаю, я мог бы дать некоторый источник: P Его всегда трудно сказать, что нужно людям для контекста, когда вы знаете контекст. – RyanTimmons91

+0

Почти всегда проблема с файловой системой. Проверьте, какой пользователь работает в службе, и дайте ему явный доступ к папке. –

+0

Вы можете использовать внутренний монитор процесса sys (google it, free download), чтобы искать ошибки доступа к файлу. Хороший инструмент отладки для проблем с доступом к файлам. – AaronLS

Смежные вопросы