А как узнать состояние NT службы?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

А как узнать состояние NT службы?

Сообщение jangle » 10.01.2014 (Пт) 21:54

Обнаружил неприятную ситуацию, моя программа крашится при старте если остановлена служба смарт-карт.
Нужно при запуске проги определять ее состояние и пытаться запустить если она остановлена.
Из командной строки это делается так:

Код: Выделить всё
sc query scardsvr

если STOPPED

Код: Выделить всё
sc start scardsvr


Вопрос как это сделать API функциями?

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: А как узнать состояние NT службы?

Сообщение jangle » 10.01.2014 (Пт) 23:05

Короче разобрался. Модуль надо подключить к проекту, а в процедуре Мain прописать старт службы и смену ее настроек

Код: Выделить всё
Sub Main()

Dim Serv As SERVICE_STATE
Dim Result As Long
Serv = NTServiceControl.GetServiceStatus("scardsvr")
If Serv <> SERVICE_RUNNING Then
  Result = MsgBox("SmartCard PC/SC service is not running!" & vbCrLf & vbCrLf & "Start service?", vbExclamation + vbOKCancel, "")
    If Result = 1 Then
        Serv = NTServiceControl.StartNTService("scardsvr")
         Sleep 5000
         Result = NTServiceControl.SetServiceConfig("scardsvr", NTServiceControl.SERVICE_WIN32_SHARE_PROCESS, NTServiceControl.SERVICE_AUTO_START, 1, 0)
          Sleep 2000
      If Serv <> SERVICE_RUNNING Or Serv <> SERVICE_START_PENDING Then
          MsgBox "Error start!", vbCritical, "Advanced RFID Explorer"
      End If
    End If
  End If

....

Вложения
NTServiceControl.rar
(5.42 Кб) Скачиваний: 79
Последний раз редактировалось jangle 05.02.2014 (Ср) 13:46, всего редактировалось 1 раз.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 11.01.2014 (Сб) 2:08

Эм.. А через зависимости между службами не правильнее ли было сделать?
Правда, я понятия не имею, как оно делается...


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 77

    TopList