gpt4 book ai didi

c# - 使用 C# 应用程序在 WinCE 中保存注册表值

转载 作者:行者123 更新时间:2023-11-30 14:05:26 24 4
gpt4 key购买 nike

我正在使用带有触摸屏的 WinCE 6.0 系统,该触摸屏将其校准数据(x-y 位置、偏移量等)存储在系统注册表 (HKLM\HARDWARE\TOUCH) 中。现在,我将 cal 值放入在构建时放入操作系统镜像的注册表项中。这对于我从中获取原始校准值的显示器来说效果很好,但是当我将此图像加载到另一个具有不同显示器的系统时,触摸屏指针位置(可以理解)关闭,因为两个显示器没有相同的校准值.

我的问题是我不知道如何将值正确地存储到注册表中,以便它们在电源循环后仍然存在。你看,我可以在第二个系统上重新校准屏幕,但新值只存在于 volatile 内存中。我向我的老板建议,我们可以告诉我们的客户,让设备始终保持开启状态——但效果并不理想。

我需要有关如何将新常量保存到注册表中的建议,以便我们可以在将显示器运送给客户之前校准一次显示器,而不必为我们构建的每个单元制作单独的操作系统镜像。

已知可在 CE6.0 中使用的 C# 方法会有所帮助。谢谢。

-奥巴斯塔

最佳答案

跟进这个问题:

感谢 DannySmurf,最终需要完成的是刷新注册表项。但是,在到达那个阶段之前我缺少了几个步骤。所以,这是曝光的内容:

  • 我使用的是基于 RAM 的注册表,根据设计注册表在冷启动后不会保留。我不得不将注册表切换为基于配置单元的注册表。
  • 切换到基于配置单元的注册表结构时,您需要确保配置单元存在于非 volatile 介质上。这在 platform.reg 文件中指定:

    [HKEY_LOCAL_MACHINE\init\BootVars]
    "SystemHive"="\\Hard Disk\\system.hv"
    "ProfileDir"="\\Documents and Settings"
    "RegistryFlags"=dword:1 ; Flush hive on every RegCloseKey call
    "SystemHiveInitialSize"=dword:19000 ; Initial size for hive-registry file
    "Start DevMgr"=dword:1
  • 一旦 system.hv 文件在硬盘上(在我的例子中是 CF 卡),注册表中的值将在冷启动后保留。请注意,system.hv 文件包含所有 HKLM key 。

  • 同样重要的是要注意,任何需要在启动时初始化的驱动程序都必须在解决方案的 .reg 文件中指定。例如,在尝试从中读取系统配置单元文件之前,我必须确保已加载硬盘驱动程序 (PCMCIA)。这样做的方法是在每个驱动程序初始化 key 周围添加以下格式的指令:

    ;HIVE BOOT SECTION
    [HKEY_LOCAL_MACHINE\Drivers\PCCARD\PCMCIA\TEMPLATE\PCMCIA]
    "Dll"="pcmcia.dll"
    "NoConfig"=dword:1
    "IClass"=multi_sz:"{6BEAB08A-8914-42fd-B33F-61968B9AAB32}=PCMCIA Card Services"
    "Flags"=dword:1000
    ;END HIVE BOOT SECTION

就是这样,再加上很多运气。

关于c# - 使用 C# 应用程序在 WinCE 中保存注册表值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57609/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com