所以我正在编写一个需要在安装之前结束explorer.exe的应用程序。但是,使用以下代码时,Windows会自动重新启动该过程:
Dim proc() = System.Diagnostics.Process.GetProcessesByName("explorer.exe")
For Each item as Process in proc()
item.Kill()
Next
由于这个问题,我找到了一种使用taskkill杀死explorer.exe的方法,这里的代码非常合适:
Dim taskkill as New ProcessStartInfo
taskkill.FileName = "cmd.exe"
taskkill.Arguments = "/c taskkill /F /IM explorer.exe"
taskkill.WindowStyle = ProcessWindowStyle.Hidden
Process.Start(taskkill)
但我不想依赖cmd.exe来完成这项任务?有人可以告诉我如何使用vb.net或c#代码吗?
感谢。
答案 0 :(得分:1)
这可能不是发布其他答案的好习惯,所以请原谅我,我只是想通过为您的问题提供一些小问题来指导您。这个答案实际上来自superuser t3hn00b提供的所有信用
首先,Windows(Windows 7和XP)使用注册表项自动重启资源管理器进程。因此要禁用我们必须以编程方式重置该密钥的值,我们可以使用该代码。
Dim key As Microsoft.Win32.Registry
Dim ourkey As Microsoft.Win32.RegistryKey
ourkey = key.LocalMachine
ourkey = ourkey.OpenSubKey("SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", True)
ourkey.SetValue("AutoRestartShell", 0)
' Kill the explorer by the way you've post and do your other work
ourKey.SetValue("AutoRestartShell", 1)
或在C#中
RegistryKey ourKey = Registry.LocalMachine;
ourKey = ourKey.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", true);
ourKey.SetValue("AutoRestartShell", 0);
// Kill the explorer by the way you've post and do your other work
ourKey.SetValue("AutoRestartShell", 1)
无论如何,我不建议更改具有备选方案的问题的Windows默认设置(使用cmd.exe)。
代码会有错误,请原谅我。只是尝试给你的问题一点开始。检查它,它被证明在win7和XP中运行良好。您可以在上面的超级用户链接中查看更多详细信息。希望它会有所帮助。感谢t3hn00b。
答案 1 :(得分:0)
在vb.net中杀死explorer.exe你可以使用
Try
Dim Processes() As Process = Process.GetProcessesByName("explorer")
For Each Process As Process In Processes
Process.Kill()
Next
Catch ex As Exception
End Try
仅当您将代码放入计时器并在想要杀死explorer.exe时启动计时器时,此功能才有效。
在c#中,请确保您还将其置于计时器中并在您想要杀死explorer.exe时启动它
try {
Process[] Processes = Process.GetProcessesByName("explorer");
foreach (Process Process in Processes) {
Process.Kill();
}
} catch (Exception ex) {
}
希望这有帮助。