从Windows服务中删除进程

时间:2013-03-24 20:59:21

标签: .net windows vb.net service

我正在尝试将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

此代码是在backgroundWorker的doWork()事件中编写的。

我的Windows服务将在xml数据库中检查一个值,如果为0则会检查explorer.exe是否已启动,如果是,则检查是否已杀死它。

如果xml文件中的值找到1,那么它将检查explorer.exe是否已启动,如果不是,则启动它。

问题:当我启动该服务时,它会杀死explorer.exe一次,但explorer.exe会自动打开,并且该服务无法再次杀死它。

错误:Accecss被拒绝。

如果它的某些权限问题比第一次杀死它怎么样?

代码有问题???

1 个答案:

答案 0 :(得分:2)

使您的程序/服务以管理员(或SYSTEM帐户或更高的smtg)运行。
我认为您可以在“安装”服务时执行此操作。那你就不会得到那个错误 如果您不希望在从Visual Studio运行服务时收到该错误,请以管理员身份运行Visual Studio。

我认为这会对你有所帮助。祝你好运!