4

我为停车场编写了一个应用程序,该应用程序必须是“万无一失的”......我正在做的一件事是我将应用程序作为 shell 而不是资源管理器启动。(HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell 设置为我的应用程序)。

在这个应用程序中,我实现了一个小的服务对话框,对用户进行了很好的保护,它允许我启动例如资源管理器。我现在需要的是一种将资源管理器作为桌面启动的方法。

有没有办法做到这一点?

4

1 回答 1

3

根据Technet 上的讨论,这是不可能的。

如果不在注册表项中将资源管理器指定为 shell,则无法将其设置为 shell。

将 explorer 作为 shell 保存在注册表中,但杀死 explorer.exe 并启动您的 shell 工作作为您的一个选项?

我没有看到任何其他干净的方式。

不过,一位用户发布了一个可能的解决方案。

将 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell 更改为“explorer.exe”

运行“userinit.exe”

将 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell 更改回您的自定义 shell

My Code (autoit)
RegWrite('HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Winlogon','Shell',"REG_SZ",'Explorer.exe')
Run('userinit.exe')
ProcessWait('explorer.exe')
RegWrite('HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Winlogon','Shell',"REG_SZ",@ScriptFullPath)

过去我不得不做类似的事情,移动设备以信息亭模式运行。出于现场调试目的,我这样做了:

  • 在应用程序启动时,检查配置设置,如debug = true. 如果是这样,请改为引导 explorer.exe。
  • 如果要调试,请连接到设备,设置此设置并重新启动。
于 2013-08-23T09:53:27.930 回答