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 启动提升的子进程?

explorer.exe命令行

如何在 Windows 8.1 中结束 explorer.exe(每次我这样做都会重新启动)

实时打印使用 Python 中的子进程启动的 bash 命令的结果