如何用 Windows 10 中的另一个进程替换系统外壳 (explorer.exe)?

sta*_*mps 14 powershell shell windows-explorer windows-10

这适用于 Windows 10。

有没有办法用例如 powershell 脚本替换 explorer.exe?

我希望启动自定义 shell 应用程序,而不必让 explorer.exe 在后台运行或处理这些项目的启动。

编辑:由于我被否决了......我能够在 Windows Embedded 7 Standard 中做类似的事情。我添加了一个名为关键壳牌

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System

那里添加的密钥有 Powershell.exe,带有命令行选项,可以静默执行脚本。在那里我能够执行我的自定义 shell。

这不适用于 Windows 10。

Jon*_*nno 14

这存储在密钥中:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell
Run Code Online (Sandbox Code Playgroud)

用你想要的任何东西替换它,但是它加载到位的软件需要提供一种注销/关闭/重新启动机器的方法,或者你需要使用任务管理器来这样做。


Luc*_*VdV 8

从 Windows NT4 到 Windows 10 和 Server 2019,我多年来一直这样做。

\n

最好更改 Windows 资源管理器的设置以显示文件扩展名,这样您就不会选择 \xe2\x80\x98ntuser.dat.log\xe2\x80\x99 或 \xe2\x80\x98ntuser。 ini\xe2\x80\x99 或下面另一个错误的文件。

\n
    \n
  1. 创建一个新用户,让\xe2\x80\x99s 说\xe2\x80\x98Test\xe2\x80\x99。
  2. \n
  3. 以该用户身份登录,因此执行第一个登录代理,创建配置文件目录和注册表配置单元。
    \n再次注销,然后重新登录到您的普通帐户(或属于管理员组成员的任何帐户)。
  4. \n
  5. 确保您刚刚注销的用户帐户未在控制台、远程桌面或此帐户下可能处于活动状态的任何计划任务的 \xe2\x80\x93 中登录,在此过程的其余部分中。
  6. \n
  7. 打开注册表,然后选择 HKEY_USERS。
  8. \n
  9. 菜单文件/加载配置单元。
    导航到 C:\\Users\\{新用户名} -- 在我的示例中为 C:\\Users\\Test
    选择文件 \xe2\x80\x98NTUSER.DAT\xe2\x80\x99 并加载它。
  10. \n
  11. 系统将提示您输入密钥名称。只要发明一个,用户\xe2\x80\x99s注册表配置单元将作为HKEY_USERS中的新分支以该名称加载。\n我这里使用\xe2\x80\x98Test\xe2\x80\x99。
  12. \n
  13. 转到 HKEY_USERS\\Test\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon
    \n创建一个新的字符串值,名为 Shell。
    \n将其设置为您想要启动的应用程序,而不是普通的 Windows shell。
    \n指定完整路径,不对 PATH 环境变量等做出任何假设,据我所知,当 Windows 读取此键时还没有环境。
    \n我在下面的示例中使用了 \xe2\x80\x98C:\\Windows\\system32\\cmd.exe\xe2\x80\x99。
    \n这适用于没有路径的explorer.exe,所以我认为Windows将搜索C:\\Windows目录\xe2\x80\x93,但我\xe2\x80\x99m不确定,因为如果你,它也会启动explorer.exe将设置留空或指定不存在的文件。
  14. \n
  15. 重要
    \n现在返回到 HKEY_USERS\\Test,并卸载该配置单元(菜单“文件/卸载配置单元”,然后确认)。
    \n如果您跳过此步骤并使其保持加载状态,则下次您以此身份登录时,将使用新名称(C:\\Users\\Test.1 或类似名称)重新创建整个用户配置文件(包括其注册表配置单元)用户,您的更改将会丢失。
    \nWindows 10 及更高版本的服务器系统似乎比旧版本更宽松,但我不会冒险。
  16. \n
  17. 现在只需注销并以测试身份登录即可。
  18. \n
\n

这是 VMWare 下的 Server 2019 VM 中的结果,我刚刚在其中运行了此过程以确保我没有跳过任何步骤:\n结果截图

\n

创建 shell 程序时要记住以下几点:

\n
    \n
  • 您的自定义 shell 将以 C:\\Windows\\system32\\ 作为工作目录启动,即使您的 exe 位于其他位置。
    \n如果您创建了一个普通用户帐户(非管理员),它将没有写入权限,因此如果您希望应用程序在其工作目录中写入日志文件等内容,最好尽早“cd”到其他地方。
  • \n
  • 当您的应用程序退出(或崩溃)时,它不会将您注销\xe2\x80\x93,您\xe2\x80\x99将留下一个空白的黑屏。
    \n例如,在 cmd.exe 中,通过发出 \xe2\x80\x98logoff\xe2\x80\x99 命令 (C:\\Windows\\system32\xe2\x80\x99\\logoff.exe) 注销。
  • \n
  • 您可能期望在用 C# 等编写的自定义应用程序中使用的某些功能将无法使用,因为它是由 explorer.exe 提供的。
    \n它可能无法工作并且只是给出一个错误,或者它可能会启动 explorer.exe。
  • \n
  • 如果启动 explorer.exe(例如,在示例中的命令提示符下键入 \xe2\x80\x98explorer\xe2\x80\x99),第一个实例将不会显示为您期望的资源管理器窗口。将出现正常的 Windows 桌面、任务栏等。
  • \n
  • 不要认为用户永远不会找到仍然进入经典桌面的方法,即使您阻止 ctrl+alt+del 或删除任务管理器可执行文件。
    我的信息亭应用程序的用户早在 20 年前就发现了一个技巧,早在 Windows NT4 下:从打印机中取出所有纸张,然后从我的应用程序中启动打印作业。(HP) 打印机驱动程序发出的“缺纸”错误消息包含帮助按钮。在打开的帮助文件中,其中一页包含用于打开打印机控制面板的链接。控制面板只是 explorer.exe 的另一个实例。过了一会儿,店员在信息亭上浏览网页。
  • \n
\n

  • 您可以做的是启动一个批处理文件(shell 设置中的“cmd.exe /c file.cmd”),第一个命令启动您的应用程序,第二个命令注销用户。或者是一个无限循环,在应用程序退出时重新启动它。 (2认同)