1

如何在 Windows Embedded 8 中自动启动非 Surface 应用程序?

我想在 Windows Embedded 8 中启动时自动启动 GUI 应用程序,但我不知道该怎么做。我一直在阅读 Sean Liming 的Windows Embedded 8 Standard 专业指南,在第 8 章中他描述了如何修改设备体验。他列举了如何有一个 Windows 8 应用程序启动器,但仅适用于 Surface 应用程序。他还描述了一个 Shell Launcher 模块,但我的应用程序不是 shell。他还提到了他在这里写的一个 shell ,但是通读它的文档,它没有描述如何在那个 shell 中自动启动一个程序。

据我所知,他没有描述如何在任何地方自动启动非 Surface 应用程序,而 Google 和 Stack Exchange 没有给我任何结果(大多数结果仅返回 Windows 8 并没有帮助) Windows 嵌入式 8)。还是我弄错了?Shell Launcher 是否足以启动非 shell 应用程序?启动的应用程序是否实际上变成了“外壳”?

旁注:可能值得一提的是,我要启动的应用程序是 Java 应用程序。我将包括书中提到的基于模块的 Java JRE 安装程序,但如果在 WE8S 中启动 Java 应用程序还有其他限制条件,请发表评论。

感谢您的时间和反馈!

4

1 回答 1

6

这适用于 Windows Embedded Standard 7 和 Windows Embedded 8 Standard:

我通常使用标准外壳安装 Windows Embedded Standard。在 WE8S 中,这将是 Metro UI。一旦安装和配置完成,并且您的应用程序成功运行,我使用注册表项来修改启动时启动的应用程序。

自定义用户特定的外壳

例如,要以 shell 启动 VLC 媒体播放器,并连续循环播放 d:\ 上的文件夹中的媒体文件,例如 d:\media,我在 .bat 文件中使用以下内容,以管理员身份运行

这必须在登录到将启动自定义 shell 的用户时运行

  • 创建一个新的 .bat 文件:

    1. 在 Windows 资源管理器中,选择“文件”->“新建”->“文本文档”
    2. 将“New Text Document.txt”重命名为 custom_shell.bat
  • 将以下内容粘贴到文件中

  • 保存文件
  • 右键单击文件->“以管理员身份运行”

    c:\Windows\system32\reg.exe DELETE "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" /v Shell /f
    c:\Windows\system32\reg.exe ADD "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" /v Shell /t REG_SZ /d explorer.exe
    c:\Windows\system32\reg.exe ADD "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" /v Shell /t REG_SZ /d "c:\program files\vlc\vlc.exe -f --loop ""d:\media"""
    c:\Windows\system32\reg.exe DELETE "HKLM\Software\Microsoft\Windows NT\CurrentVersion\IniFileMapping\system.ini\boot" /v Shell /f
    c:\Windows\system32\reg.exe ADD "HKLM\Software\Microsoft\Windows NT\CurrentVersion\IniFileMapping\system.ini\boot" /v Shell /t REG_SZ /d "USR:Software\Microsoft\Windows NT\CurrentVersion\Winlogon"
    pause
    

这会修改!Current User! 的 shell!(即登录用户)在登录时启动 VLC.exe。(我使用 reg.exe 是因为一些精简的安装可能不包含 regedit.exe)

这意味着您在以管理员用户身份登录时仍然可以访问完整的用户界面(如果管理员配置文件通常被禁用,则通过安全模式),因为所有其他用户的外壳仍然是资源管理器外壳。

从自定义 shell 中启动 explorer shell

当使用自定义 shell 的用户登录时,您仍然可以使用 Metro UI 启动 explorer shell。要从运行 VLC(自定义)shell 的用户启动资源管理器 shell:

  • 启动任务管理器(CTRL+SHIFT+ESC)
  • 单击任务管理器底部的“高级”按钮
  • 从菜单栏中选择“文件”->“新任务(运行...)”
  • 输入“Explorer.exe”(这将启动资源管理器服务)
  • 再次重复上述步骤(这将启动 Windows 资源管理器的一个实例)
  • Metro UI 应该可以使用

作为 shell 的 Java 应用程序

更重要的是,为了运行您的 java 应用程序,请更改上述 .bat 中的以下条目

从:

c:\Windows\system32\reg.exe ADD "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" /v Shell /t REG_SZ /d "c:\program files\vlc\vlc.exe -f --loop ""d:\media"""

c:\Windows\system32\reg.exe ADD "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" /v Shell /t REG_SZ /d "java [any other JVM options you need to give it] -jar "path\jar-file-name.jar""

如果您的 java 应用程序不包含清单,则上述内容将不起作用!

试试这个(我没有测试过):

java -cp jar-file-name.jar full.package.name.ClassName

恢复到资源管理器(默认外壳),即撤消用户特定外壳

要为用户撤消 shell 更改,即恢复为原始设置:

!这必须在使用自定义 shell 登录用户时运行!

  • 创建一个新的 .bat 文件:

    1. 在 Windows 资源管理器中,选择“文件”->“新建”->“文本文档”
    2. 将“New Text Document.txt”重命名为 default_shell.bat
  • 将以下内容粘贴到文件中

  • 保存文件
  • 右键单击文件->“以管理员身份运行”

    c:\Windows\system32\reg.exe DELETE "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" /v Shell /f
    c:\Windows\system32\reg.exe ADD "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" /v Shell /t REG_SZ /d explorer.exe
    c:\Windows\system32\reg.exe DELETE "HKLM\Software\Microsoft\Windows NT\CurrentVersion\IniFileMapping\system.ini\boot" /v Shell /f
    c:\Windows\system32\reg.exe ADD "HKLM\Software\Microsoft\Windows NT\CurrentVersion\IniFileMapping\system.ini\boot" /v Shell /t REG_SZ /d "SYS:Microsoft\Windows NT\CurrentVersion\Winlogon"
    c:\Windows\system32\reg.exe DELETE "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" /v Shell /f
    pause
    

用户自动登录:

您可以将 Windows 配置为自动登录到特定的用户配置文件。

  • 开始 > 搜索 > netplwiz
  • 或 [Windows 键 + R] > netplwiz
  • 将打开一个“用户帐户”窗口。突出显示要在 Windows 启动时自动加载的帐户。
  • 取消选中上面标题为“用户必须输入用户名和密码才能使用这台计算机”的框。</li>
  • 单击确定。
  • 系统将提示您输入密码以确认操作。
  • 输入您的密码以完成更改。

下次启动 Windows 时,将自动加载您选择的用户帐户

需要考虑的事项

玩,但如果可能的话使用测试环境如果你可以启动外壳,那么其他人也可以。使用键盘过滤器过滤掉已知的组合键,并创建一个只有您自己,也许服务技术人员会知道的组合键。使用自定义外壳删除用户的管理员权限使用统一写入过滤器(或增强的 Wright 过滤器/基于文件的写入过滤器)。仅在进行更改时取消保护。

非常感谢Sean Liming和所做的工作 - 他启发了这一点。

Mark Böhmer Windows Embedded 专家 南非

于 2014-05-01T11:58:05.743 回答