如何在Windows Embedded 8中自动启动非Surface应用程序?
我想在Windows Embedded 8中启动时自动启动GUI应用程序,但我无法弄清楚如何做到这一点。我一直在阅读Sean Liming的 Windows Embedded 8 Standard专业指南,在第8章中他介绍了如何修改设备体验。他列出了Windows 8应用程序启动器的名称,但仅适用于Surface应用程序。他还描述了一个Shell Launcher模块,但我的应用程序不是shell。他还提到了他编写here的shell,但是通过阅读其文档,它没有描述如何在该shell中自动启动程序。
据我所知,他没有描述如何在任何地方自动启动非Surface应用程序,Google和Stack Exchange也没有给我带来任何结果(大多数结果仅仅作为Windows 8而没有帮助,而不是Windows Embedded 8)。还是我弄错了? Shell Launcher是否足以启动非shell应用程序?启动的应用程序实际上是“shell”吗?
旁注:可能值得一提的是,我想推出的应用是一款Java应用。我将包括本书中提到的基于模块的Java JRE安装程序,但如果在WE8S中启动Java应用程序还有任何其他附带条件,请发表评论。
感谢您的时间和反馈!
答案 0 :(得分:6)
适用于Windows Embedded Standard 7和Windows Embedded 8 Standard:
我通常使用标准shell安装Windows Embedded Standard。在WE8S中,这将是Metro UI。安装和配置完成后,您的应用程序成功运行,我使用注册表项来修改启动时启动的应用程序。
例如,要将VLC媒体播放器作为shell启动,并在连续循环中播放d:\ eg d:\ media文件夹中的媒体文件,我在.bat文件中使用以下内容,以管理员身份运行。
必须在登录将启动自定义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
这会修改!当前用户!(即登录用户)的shell以在登录时启动VLC.exe。 (我使用reg.exe,因为一些精简版安装可能没有包含regedit.exe)
这意味着当您以管理员用户身份登录时仍然可以访问完整的用户界面(如果管理员配置文件通常被禁用,则通过安全模式),因为所有其他用户的shell仍然是资源管理器shell。
当具有自定义shell的用户登录时,您仍然可以使用metro UI启动资源管理器shell。要从运行VLC(自定义)shell的用户启动资源管理器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"""
以强>
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文件:
将以下内容粘贴到文件
右键单击文件 - > “以管理员身份运行”
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配置为自动登录特定用户配置文件。
下次启动Windows时,将自动加载您选择的用户帐户
四处游走,但如果可能的话,请使用测试环境 如果你可以启动shell,那么其他人也可以。使用键盘过滤器过滤掉已知的组合键,并仅创建一个,也许服务技术人员会知道。 使用自定义shell删除用户的管理员权限 使用统一写过滤器(或增强型Wright过滤器/基于文件的写过滤器)。仅在进行更改时取消保护。
谢谢你 Sean Liming 以及所做的工作 - 他激发了这一点。
MarkBöhmer Windows Embedded专家 南非