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

ein*_*ent 1 windows-embedded windows-embedded-8

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

我想在Windows Embedded 8中启动时自动启动GUI应用程序,但我无法弄清楚如何做到这一点.我一直在阅读Sean Liming的Windows Embedded 8 Standard专业指南,在第8章中他介绍了如何修改设备体验.他列出了Windows 8应用程序启动器的名称,但仅适用于Surface应用程序.他还描述了一个Shell Launcher模块,但我的应用程序不是shell.他还提到了他在这里写的一个shell ,但是通过阅读它的文档,它没有描述如何在该shell中自动启动程序.

据我所知,他没有描述如何在任何地方自动启动非Surface应用程序,谷歌和Stack Exchange没有给我带来任何结果(大多数结果仅仅作为Windows 8,而不是Windows Embedded 8).还是我弄错了?Shell Launcher是否足以启动非shell应用程序?应用程序启动是否成为"shell",实际上?

旁注:可能值得一提的是我想要推出的应用程序是一个Java应用程序.我将包括本书中提到的基于模块的Java JRE安装程序,但如果在WE8S中启动Java应用程序还有其他任何附加条件,请发表评论.

感谢您的时间和反馈!

小智 6

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

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

自定义用户特定的shell

例如,要将VLC媒体播放器作为shell启动,并在连续循环中播放d:\ eg 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
    
    Run Code Online (Sandbox Code Playgroud)

这会修改!当前用户的shell !(即登录用户)在登录时启动VLC.exe.(我使用reg.exe,因为一些精简版安装可能没有包含regedit.exe)

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

从自定义shell中启动资源管理器shell

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

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

Java应用程序作为shell

更重要的是,为了运行您的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"""
Run Code Online (Sandbox Code Playgroud)

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""
Run Code Online (Sandbox Code Playgroud)

如果您的Java应用程序不包含清单,则上述操作无效!

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

java -cp jar-file-name.jar full.package.name.ClassName
Run Code Online (Sandbox Code Playgroud)

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

要撤消用户的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
    
    Run Code Online (Sandbox Code Playgroud)

用户自动登录:

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

  • 开始>搜索> netplwiz
  • 或者[Windows Key + R]> netplwiz
  • 将打开"用户帐户"窗口.突出显示Windows启动时要自动加载的帐户.
  • 取消选中标题为"用户必须输入用户名和密码才能使用此计算机"的复选框.
  • 单击确定.
  • 系统将提示您输入密码以确认操作.
  • 输入您的密码以完成更改.

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

要考虑的事情

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

一个大感谢你肖恩黎明和做的工作-他激发了我.

MarkBöhmerWindowsEmbedded Specialist南非