HKEY_LOCAL_MACHINE,“SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Winlogon”,“Shell”返回shell名称,通常是Explorer.exe。但是,它不包含路径,或标识特定的可执行文件。
枚举任务列表可找到任务Explorer.exe。
但是如果用户运行了另一个名为Explorer.exe的无关任务呢?
确定Explorer.exe的特定实例实际上是shell的最佳方法是什么?
我需要避免在作为shell的任务和可能不是shell的任务之间混淆,但是共享相同的名称,即Explorer.exe
答案 0 :(得分:0)
您可以使用Process Explorer获取有关该过程的更多详细信息。您可以通过每个资源管理器进程下运行的程序,资源管理器进程文件的位置以及其他一些事情来判断。
答案 1 :(得分:0)
也许您可以使用命令行实用程序任务列表,如下所示:
tasklist /FI "imagename eq explorer.exe" /FI "session eq 1" /FI "sessionname eq Console"
答案 2 :(得分:0)
不要查找Explorer.exe,查找shell的完整路径,该路径应为C:\Windows\Explorer.exe
。
答案 3 :(得分:0)
我认为没有一种万无一失的方法;你能做的最好就是模仿CreateProcess所做的事情:
如果文件名不包含目录路径,系统将按以下顺序搜索可执行文件:
- 加载应用程序的目录。
- 父进程的当前目录。
- 32位Windows系统目录。使用GetSystemDirectory函数获取此目录的路径。
- 16位Windows系统目录。没有函数可以获取此目录的路径,但会搜索它。该目录的名称是System。
- Windows目录。使用GetWindowsDirectory函数获取此目录的路径。
- PATH环境变量中列出的目录。
醇>