1

HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "Shell" 返回 shell 名称,通常是 Explorer.exe。但是,它不包含路径,也不标识特定的可执行文件。

枚举任务列表可找到任务 Explorer.exe。

但是,如果用户运行了另一个名为 Explorer.exe 的不相关任务怎么办?

确定 Explorer.exe 的特定实例实际上是 shell 的最佳方法是什么?

我需要避免混淆作为外壳的任务和可能不是外壳但共享相同名称的任务,即 Explorer.exe

4

4 回答 4

0

您可以使用Process Explorer来获取该过程的更多详细信息。您将能够通过在每个资源管理器进程下运行的程序、资源管理器进程文件的位置以及其他一些事情来判断。

于 2010-06-18T18:43:07.470 回答
0

也许您可以使用命令行实用程序任务列表,如下所示:

tasklist /FI "imagename eq explorer.exe" /FI "session eq 1" /FI "sessionname eq Console"
于 2010-06-18T18:50:32.527 回答
0

不要寻找 Explorer.exe,寻找 shell 的完整路径,应该是C:\Windows\Explorer.exe.

于 2010-06-18T20:42:34.780 回答
0

我认为没有万无一失的方法;你能做的最好的就是模仿CreateProcess的做法:

如果文件名中不包含目录路径,系统会按照以下顺序查找可执行文件:

  1. 加载应用程序的目录。
  2. 父进程的当前目录。
  3. 32 位 Windows 系统目录。使用 GetSystemDirectory 函数获取该目录的路径。
  4. 16 位 Windows 系统目录。没有函数获取这个目录的路径,但是被搜索了。此目录的名称是 System.
  5. Windows 目录。使用 GetWindowsDirectory 函数获取该目录的路径。
  6. PATH 环境变量中列出的目录。
于 2010-06-18T20:50:51.313 回答