Можно ли создать службу Windows на C #, которая обнаруживает создание новых файлов в Windows XP? - PullRequest
1 голос
/ 18 августа 2011

У меня есть папка, которая будет содержать временный файл, который будет создан веб-сервисом. Я хочу, чтобы файл был преобразован программой .exe, которую я имею через командную строку. Теперь я уже сгенерировал веб-сервис, который будет создавать файлы и хранить их в одной определенной папке.

Вот сценарий:

  1. Веб-сервис получает данные amr byte из моего мобильного приложения.
  2. Веб-сервис удаляет все файлы, существующие в папке. (чтобы удалить файл .amr и файл .mp3, созданный в предыдущем раунде)
  3. Веб-служба создает новый файл .amr в папке.
  4. Служба Windows обнаруживает, что создан новый файл. Это называется converter.exe. После завершения он создает файл .mp3 в той же папке.

Теперь у меня нет проблем с шагом 1-3. Проблема в step4, который мне нужно конвертировать .amr файл в .mp3 файл. Для этого мне нужно передать некоторую команду dos в converter.exe. Я обнаружил, что я не могу сделать это из своего веб-сервиса, поэтому я думаю о создании C # Windows Service, который будет наблюдать за папкой, хранящей файлы. Можно ли создать службу Windows, способную обнаруживать создание нового файла и запускать converter.exe, как только создается новый файл? Я выполнил поиск в Интернете и обнаружил, что могу создать службу Windows с помощью FileSystemWatcher, но я просто не уверен, будет ли это возможно.

Причина, которую я обнаружил при попытке запустить converter.exe из веб-службы, заключается в разрешении. Я сделал все, но все еще не смог добиться успеха. (При использовании веб-службы конвертер.exe отображается в списке процессов в диспетчере задач как локальная система, но он не будет выполнен по какой-то причине безопасности ...) не будет проблем с безопасностью при попытке выполнить конвертер.exe с помощью службы Windows.

Заранее спасибо за все ответы и предложения:)

1 Ответ

6 голосов
/ 18 августа 2011

System.IO.FileSystemWatcher сделает свое дело. Событие Created сообщит вам, когда в каталоге, который вы смотрите, был создан файл. Чтобы запустить вашу программу конвертации, взгляните на метод System.Diagnostics.Process.Start . Оба из них должны нормально работать в службе Windows.

...