在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);
}
答案 0 :(得分:1)
GetProcessesByName
不会返回可执行文件名,而是"友好"进程名称。可能explorer
在从崩溃中恢复时以不同的方式启动,这导致它获得不同的名称。只需搜索explorer.exe
和explorer
。