windows下启动的进程都是explorer的子进程吗
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了windows下启动的进程都是explorer的子进程吗相关的知识,希望对你有一定的参考价值。
参考技术A explorer.exe是Windows程序管理器或者Windows资源管理器,它用于管理Windows图形壳,包括开始菜单、任务栏、桌面和文件管理。删除该程序会导致Windows图形界面无法适用。 参考技术B 不是,没有explorer 只是没有桌面而已,如何在 Windows 8.1 中结束 explorer.exe(每次我这样做都会重新启动)
【中文标题】如何在 Windows 8.1 中结束 explorer.exe(每次我这样做都会重新启动)【英文标题】:How to end explorer.exe in Windows 8.1 (It restarts each time I do so) 【发布时间】:2015-08-23 17:20:18 【问题描述】:所以我正在编写一个需要在安装前结束 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# 代码做到这一点?
谢谢。
【问题讨论】:
哇。先退一步。您如何确定需要在安装之前结束 explorer?您是否见过 任何 其他安装程序会在安装前杀死资源管理器?是什么让您认为您的应用需要这样做? 使用安装程序安装您的应用程序 【参考方案1】:在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)
希望这会有所帮助。
【讨论】:
很好的解决方案!!为我工作出色【参考方案2】:这可能不是发布其他答案的好习惯,所以请原谅我,我只是想通过为您的问题提供一点指导来指导您。这个答案实际上来自t3hn00b提供的superuser..所有学分都归功于他
首先,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。
【讨论】:
以上是关于windows下启动的进程都是explorer的子进程吗的主要内容,如果未能解决你的问题,请参考以下文章
每次用VS启动魔兽时总是出现explorer.exe 应用程序错误的对话框,然后就玩不了!不得不不强制关机!
零基础逆向工程39_Win32_13_进程创建_句柄表_挂起方式创建进程
如何在 Windows 上通过 QProcess 启动提升的子进程?