C# 以通用方式存储信息,以便用户能够';我不能编辑它

C# 以通用方式存储信息,以便用户能够';我不能编辑它,c#,database,file,interop,format,C#,Database,File,Interop,Format,我正在用C语言构建一个应用程序,它将使用“数据库”,但我希望能够用尽可能多的编程语言访问“数据库”文件的内容。“数据库”基本上需要像字典一样(虽然它不是字典),所以像word=means,如果用户可以公开编辑它,我并不介意 但是,我想在数据库中存储一些用户不能编辑的内容。例如,我想存储一个应用程序将分析和比较的唯一密钥。我还想添加一个“isEditable”属性,告诉应用程序是否可以更改数据库,但这不是必需的 你对我如何存储这些信息有什么建议吗?我考虑使用XML,因为我可以对唯一键进行散列,但我

我正在用C语言构建一个应用程序,它将使用“数据库”,但我希望能够用尽可能多的编程语言访问“数据库”文件的内容。“数据库”基本上需要像字典一样(虽然它不是字典),所以像
word=means
,如果用户可以公开编辑它,我并不介意

但是,我想在数据库中存储一些用户不能编辑的内容。例如,我想存储一个应用程序将分析和比较的唯一密钥。我还想添加一个“isEditable”属性,告诉应用程序是否可以更改数据库,但这不是必需的


你对我如何存储这些信息有什么建议吗?我考虑使用XML,因为我可以对唯一键进行散列,但我认为它不适合
word=means
部分。您可以使用传统数据库,并限制用户权限。这样,用户就不能编辑任何内容(或者只能执行您授予他们的任何权限)。如果需要将其与应用程序一起部署,可以使用压缩数据库,如Sqlite或SQL Server compact。有几种方法可以加密整个DB文件或对其进行密码保护,这样可以防止用户编辑它们。Sqlite具有多种语言的提供程序

您可以尝试使用非传统数据库,如MongoDB或。后者使用一种二进制序列化,这样您就可以将代码对象持久化到磁盘。同样,用户不容易编辑。你可以坚持你的收藏。使用前者,您将更接近键=值对的目标,因为您不必为这两个选项中的任何一个定义模式


如果您的目标是使XML文件不可由用户编辑,那么只要对其进行加密,XML文件就可以工作。

您考虑过使用实际的“数据库”吗?那么。。。嗯。。。一个实际的数据库?“但我认为它不适合这个词=有意义的部分。”-你为什么这么认为<代码>[…]您建议使用哪种类型的数据库?还有@Corak,谢谢你的建议——这是个好主意。完全忘了你能做到。。。。有什么格式我可以使用,让用户很难手动编辑虽然?嗯。。。关于传统的数据库选项,即使我限制了权限,文件也不能在记事本++之类的东西中打开,而只是更改查询,比如使用
.sql
文件?不过我真的不确定加密技术,因为在一天结束的时候,除了那些可以散列的秘密之外,里面没有任何秘密,而且似乎大多数大型软件都只使用XML或类似的东西。即使仍然是xml文件,更改“.xml”扩展名是否是一个坏主意?不,数据库不是以文本可编辑格式存储的。您考虑的.SQL文件是保存的查询,而不是数据库文件本身。查询是文本,但数据本身以二进制表示形式存储。至于其余的,许多“大型软件”使用XML进行配置。如果您希望能够手工编辑数据,XML不是一个坏主意。扩展对您的程序来说并不重要,但任何用户都可以使用任何程序打开任何文件。因此,更改文件扩展名不安全。使用适当的数据库是非常必要的。非常感谢您的澄清。在这种情况下,如果我只是阻止数据的编辑,我甚至不需要加密数据库,特别是如果我散列了我能做的任何事情。但是,你知道你是否可以在C.y.net中加密SQLite数据库?我从来没有用SQLite做过它,但是我已经使用了SQL Server CE并成功地完成了:好的,那么在我开始使用SQL Server CE之前有什么需要考虑的吗?例如,终端用户的需求是什么,哪些编程语言能够解密和读取数据库?