Разрешить пользователю вводить значение во время запуска службы Windows vb.net - PullRequest
0 голосов
/ 02 февраля 2012

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

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

Возможно ли это? Или есть лучший способ сделать это?

Ответы [ 2 ]

1 голос
/ 02 февраля 2012

Службы Windows больше не могут взаимодействовать с рабочим столом. Они никогда не должны иметь, потому что это огромная дыра в безопасности.

Правильный дизайн заключается в том, чтобы поместить в установщик пользовательский диалог для ввода значения от пользователя, которое хранится в защищенном настраиваемом общедоступном свойстве. Затем используйте это свойство, чтобы обновить либо значение реестра, либо атрибут типа ключ / значение xml. Затем выполните рефакторинг класса обслуживания, чтобы использовать этот ресурс в качестве точки изменения конфигурации.

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

0 голосов
/ 02 февраля 2012

Если вы хотите сделать что-либо, требующее интерфейса сервиса, остановитесь.Это не очень хорошая идея, и мы не одобряем это.Из того, что я видел, люди создадут отдельную программу для изменения настроек службы Windows, а затем перезапустят службу.Теперь, если вы просто ищете способ получить информацию, которая не является жестко запрограммированной, я бы просто использовал файл app.config для сохранения настроек, а затем ссылался на него при запуске службы.Я видел, как другие используют реестр, но я не могу сказать вам, какой путь лучше.Вот ссылка http://msdn.microsoft.com/en-us/library/ms379611(v=vs.80).aspx с большим количеством информации о My.Settings, даже если она немного устарела.Как только вы создали настройку, вам нужно будет просто сослаться на нее во время события onstart.Таким образом, вы можете сделать следующее:

dim filePath as string = My.Settings.FilePath

HTH

Wade

...