Windows 10获取当前进程资源管理器与Explorer.EXE

时间:2016-08-19 18:04:02

标签: c# windows unity3d windows-10

在Unity3D中使用C#,运行Windows 10我有一个退出Windows资源管理器的应用程序(os ui没有浏览器)。

然而,似乎当os首次启动时,在我杀死Windows资源管理器并使用Application.OpenURL(“C:\ Windows \ explorer.exe”)重启它之后,该过程称为“Explorer.EXE”,我发现该过程现在称为“资源管理器”。

有谁知道为什么看似相同的过程有两个不同的名字?

重新说明这一点,希望符合网站标准; 从我的理解,我不应该只需要找到一个名为“探险家”的过程吗?我是通过杀死“Explorer.EXE”来引发无法预料的问题。

以下是我的代码

public void KillExplorer()
{
    // when coomputer first starts, I can find the explorer with Process.GetProcessesByName("Explorer.EXE"). 
    // After I kill explorer this no longer works. Process.GetProcessesByName("Explorer.EXE") retuns a empty array
    foreach (Process p in Process.GetProcessesByName("Explorer.EXE"))
    {
        try {
            p.ForceKill();
        } catch(Exception e){
            print("unable to kill explorere "+ e);
        }
    }

    // 
    // after I kill the explorer once, I can find the explorer with Process.GetProcessesByName("explorer")
    // but if I use this after the computer has just restarted Process.GetProcessesByName("explorer") returns an empty array
    foreach (Process p in Process.GetProcessesByName("explorer"))
    {
        try {
            p.ForceKill();
        } catch(Exception e){
            print("unable to kill explorere "+ e);
        }
    }
}

public void LaunchExplorer()
{
    string path = "C:\\Windows\\explorer.exe";
    Application.OpenURL(path);
}

1 个答案:

答案 0 :(得分:1)

GetProcessesByName不会返回可执行文件名,而是"友好"进程名称。可能explorer在从崩溃中恢复时以不同的方式启动,这导致它获得不同的名称。只需搜索explorer.exeexplorer