我正在尝试将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被拒绝。
如果它的某些权限问题比第一次杀死它怎么样?
代码有问题???
答案 0 :(得分:2)
使您的程序/服务以管理员(或SYSTEM帐户或更高的smtg)运行。
我认为您可以在“安装”服务时执行此操作。那你就不会得到那个错误
如果您不希望在从Visual Studio运行服务时收到该错误,请以管理员身份运行Visual Studio。
我认为这会对你有所帮助。祝你好运!