2013-03-24 4 views
3

Я стараюсь, чтобы explorer.exe УБИЛСЯ до события.убийство процесса из окна службы

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

Я пытался до сих пор:

While (True) 
      Dim doc As New XmlDocument 
      doc.Load("C:\Users\Alpha-Guy\AppData\Local\Packages\new-design_sa0tb4645bqbp\LocalState\metadata.xml") 
      Dim list = doc.GetElementsByTagName("authenticated") 
      var_auth = list(0).InnerText 

      If var_auth = "0" Then 
       Dim pro As Process 
       pro = Process.GetProcessesByName("explorer")(0) 
       If pro IsNot Nothing Then 
        pro.Kill() 
       End If 
      End If 

      If var_auth = "1" Then 
       Dim pro As Process 
       pro = Process.GetProcessesByName("explorer")(0) 
       If pro Is Nothing Then 
        Process.Start("c:\windows\explorer.exe") 
       End If 

       'Try 
       ' pro = Process.GetProcessesByName("explorer")(0) 
       'Catch ex As Exception 
       ' Process.Start("c:\windows\explorer.exe") 
       'End Try 

      End If 

     End While 

этот код написан на DoWork BackgroundWorker() в событии.

моя служба Windows проверит значение в базе данных xml, если оно 0, тогда оно проверит, запущен ли explorer.exe или нет, если да, чем убить его.

если значение в файле xml, которое я нашел 1, оно будет проверять, запущен ли explorer.exe или нет, если не запустить его.

Проблема: когда я запускаю сервис, он один раз убивает explorer.exe, но explorer.exe открывается автоматически, и служба не может его снова убить.

Ошибка: Accecss отказано.

если у него есть какая-то проблема с разрешением, чем это было бы убито в первый раз ??

Есть ли проблемы с кодом ???

ответ

2

Сделайте свою программу/службу запущенной как Администратор (или учетная запись SYSTEM или smtg выше).
Я думаю, вы можете это сделать, пока «устанавливаете» службу. Тогда вы не получите эту ошибку.
Также запустите Visual Studio в качестве администратора, если вы не хотите получать эту ошибку при запуске службы из Visual Studio.

Я думаю, это поможет вам. Удачи!

+1

Мне удалось решить вышеуказанную проблему, но теперь возникает еще одна проблема. Теперь я хочу запустить процесс explorer.exe с моей службы Windows. Я прочитал, что служба выигрыша работает в сеансе 0, а explorer.exe и любой другой процесс запускается в сеансе 1 окон. и я нашел несколько фрагментов, которые позволяют начать процесс в сеансе 1 из службы win, но все они были на C++. Я хочу этот фрагмент в VB.Net .. Любое предложение ??? –

+1

@VivekKhatri Вы пробовали функцию Shell()? Работает? – Searush

+0

Я попробовал функцию Shell(), но не повезло, ничего не случилось .. Пожалуйста, помогите мне. –

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