3

我正在尝试将 explorer.exe KILLED 保持到事件发生。

我的意思是我有一个从我的 Windows 服务后台工作程序读取的 xml 文件。它等待一个值,直到 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 会自动打开并且服务无法再次杀死它。

错误:访问被拒绝。

如果它有一些权限问题而不是第一次杀死它怎么办?

代码有问题吗???

4

1 回答 1

2

使您的程序/服务以管理员身份(或系统帐户,或更高级别的 smtg)运行。
我认为您可以在“安装”服务时做到这一点。然后你不会得到那个错误。
如果您不想在从 Visual Studio 运行服务时出现该错误,也可以以管理员身份运行 Visual Studio。

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

于 2013-03-24T21:20:49.123 回答