【问题标题】:Running application at startup in Windows CE 5.0在 Windows CE 5.0 中启动时运行应用程序
【发布时间】:2012-11-06 11:36:39
【问题描述】:

我目前正试图让一个用 .Net CF 2.0 编写的应用程序在 Windows CE 5.0 设备启动期间自动启动。

根据这篇文章:http://blogs.msdn.com/b/cenet/archive/2004/12/03/274661.aspx 我尝试将我的应用程序的快捷方式放在 windows 目录的 Startup 文件夹中,或者将注册表值添加到 HKLM\init 中,例如 "Launch77"="app.exe" 两者都没有无法正常工作,因为设备的存储和注册表是易失性的,并且在设备关闭时会重置。

然后我尝试使用注册表配置单元并制作了一个 system.hv 以使注册表更改持久化,但在 HKLM\init\BootVars 中,SystemHive 设置为驻留在易失性存储上的文件夹。

还有其他方法可以启动应用程序吗?我可以强制设备使用存储卡备份/恢复注册表吗?

【问题讨论】:

  • 大多数 CE 设备供应商都针对此问题提供自己的(专有)解决方案。您使用的是哪个供应商?
  • 这是 Motia iMDT5000 motia.co.kr/product/product_06.asp

标签: embedded compact-framework windows-ce c#-2.0


【解决方案1】:

答案实际上取决于设备的配置。如果设备上没有保存任何东西,包括注册表,那么除非 OEM 提供一些专有的“启动”序列(很多都提供,但它是 OEM 特定的),否则很难让它工作。

通常,如果您有一个持久文件系统,您可以将应用程序的快捷方式放在 \Windows\Startup 文件夹中。如果文件系统不是持久的,这将不起作用。

如果您有一个持久注册表(您可能必须在进行更改后调用 RegFlushKey 才能使其持久),那么使用 HKLM\Init 键应该可以工作 (assuming you wait until all of the proper APIs are ready to launch the CLR)。

如果这些都不可用,请与 OEM 联系。我用过的几乎所有设备都有一些从存储中启动应用程序的机制(内部闪存、USB、SD 等),但它又是非常特定于设备的,所以我无法为您指出任何特定的方向。

【讨论】:

  • 我联系了供应商,发现将名为“mlaunch.exe”的应用程序放入设备的闪存中即可。
  • 在我们的 CE 5.0 和 6.0 板上,可以从 HKLM\init 启动应用程序(例如 Launch120="APP-NAME"),或者在 HKLM\System 中指定的启动文件夹中放置快捷方式\Explorer\Shell 文件夹\启动。任何一种方法都可以正常工作,但通过 HKLM\init 启动在通电后更“立即”,而通过 Startup 文件夹延迟几秒钟,您会看到 Windows 桌面。这可能是也可能不是问题。
【解决方案2】:

您可以制作一个 .cpy 文件。

将您的应用程序保存在 Wince 的 /application 文件夹(或子文件夹)中。因此,在 /application 文件夹中创建一个名为 somename.cpy 的文件,其中包含:

\Application\Yoursubfolder\yourapp.exe  >  \Windows\StartUp\yourapp.exe

每次 Wince 启动(热启动或冷启动)时,它都会将您的应用复制到 Windows 启动文件夹然后启动它。

【讨论】:

    猜你喜欢
    • 2011-08-12
    • 1970-01-01
    • 1970-01-01
    • 2011-08-22
    • 2017-04-09
    • 1970-01-01
    • 1970-01-01
    • 2011-05-26
    • 1970-01-01
    相关资源
    最近更新 更多