我正在开发一个控制硬件设备的应用程序。由于各种原因(自助服务,保修,运营商的一般信息等),我需要存储使用数据,尤其是硬件的运行时间。这需要经常更新(至少每分钟一次)。
因此,我需要使用数据:
目前,该应用程序是用Visual Basic 6.0编写的。但它很快就会在C#中重写,在那里使用相同的方法会很有趣。
任何想法都将不胜感激。谢谢!
答案 0 :(得分:0)
您应该使用某种格式的文件来支持有效的更新。在许多情况下,INI格式足够好,甚至纯文本也可能只要您正确管理“随机”更新。文件格式无关紧要,取决于您。如果您拥有大量数据,即使是Jet 4.0 MDB也是有意义的,但没有理由为此部署一些特殊的第三方嵌入式DBMS引擎。 Jet 4.0和ADO都在Windows中发布,所以没有任何东西可以部署,与SQLite相比。
诀窍是把它放在所有用户可用的地方进行更新。
最佳答案是您的安装程序运行已提升,以便在ProgramData
特殊文件夹下创建一个应用程序唯一文件夹,并将此安全性设置为完全控制,或者为所有已登录用户设置更少的安全性({{ 1}}群组适用于此,因为它排除了Everyone
)。
您可以使用Shell Flat API调用或Shell Automation对象查找Guest
(ProgramData
又名ssfCOMMONAPPDATA
,或者使用较新的Shell调用查找较新的CSIDL_COMMON_APPDATA
。< / p>
为此避免使用环境变量和硬编码名称字符串,这是不可靠的。环境变量可以更改,名称字符串可以本地化或从Windows版本更改为。
如果您的安装程序不够智能,无法处理此问题,您也可以将其作为程序首次运行操作的一部分来执行,甚至不需要提升。创建用户在创建的子文件夹上具有所有者访问权限,因此有权扩大对所有用户的访问权限。
通常,创建的文件夹路径的唯一部分使用公司名称和产品名称。通常,您的代码从您可以通过VB6 FOLDERID_ProgramData
对象获取的值中获取这些值。
有关VB6代码示例,请参阅[VB6] ProgramData for common files。