执行之间的恒定数据

发布于 2024-11-01 02:45:17 字数 264 浏览 3 评论 0原文

我有一个使用我制作的 DLL 的 C# 应用程序,我必须在 DLL 中存储 3 个变量,这些变量必须是常量,这样即使在用户关闭程序后我也可以稍后获取它们(我需要在编写后每次执行时获取它们)数据到 DLL)。我想将它们存储在 DLL 中,因为我不想使用注册表或使用任何外部文件,因此我正在考虑使用 DLL 中的资源文件来读取/写入静态数据。

任何人都可以给我一个如何使用这样的资源数据的示例,或者建议另一种方法来执行此操作,而无需声明硬编码变量(我不能这样做),或使用注册表/外部数据文件来存储信息。

I have a C# app that uses a DLL I made and I have to store 3 variables inside the DLL that have to be constant so I can get them later even after the user closes the program (I need to get them every execution after I write the data to the DLL). I want to store them inside the DLL because I don't want to use the registry or use any external files so I was thinking of using a Resource file within the DLL to read/write my static data to.

Can anyone give me an example of how to use the resource data like this or suggest another way to do this without declaring hardcoded variables (which I cannot do), or using the registry/external data files to store the information.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

不及他 2024-11-08 02:45:17

我建议使用独立存储来写入数据。您可以在此处快速入门。

I would suggest using Isolated storage to write your data. You can have a quick start here.

谜泪 2024-11-08 02:45:17

使用常规内存映射文件。写入二进制可执行文件是一种不好的做法,并且许多(如果不是全部)操作系统会在除最混杂的安全策略设置之外的所有操作系统中禁止这种做法。

附言。这种存储的流行术语是“数据库”(或程序数据库)。这应该可以帮助您获得一些谷歌点击。

另外,根据您首选的实现方法,您可以使用内存映射来覆盖您的数据段(这样您就可以鱼与熊掌兼得:将全局静态数据保持在原来的位置并且轻松提交将它们写入磁盘)。然而,这更符合 C/C++ 精神。

在 .NET 中,您必须使用一个巨大的自定义布局结构(这意味着,所有引用类型都是不可能的 - 这在 C# 中比在 C++ 中更不自然)

所以您最好的选择可能是使用UnmanagedMemoryStream,使用内置的 .NET System.Runtime.Serialization 序列化数据(其中 XML 风格迄今为止更流行,并且可以轻松地从博客和其他来源复制) 。

干杯

Use a regular memory mapped file. Writing to binary executables is bad practice and many (if not all) OS-es will prohibit that in all but the most promiscuous security policy settings.

PS. The popular term for this kind of storage is 'database' (or program database). This should help you get a few google hits.

Also, depending on your preferred method of implementation you can use memory-mapping to overlay your data-segment (so you can have your cake and eat it: keep you global static data where it is and easily commit them to disk). However, this is more in the C/C++ spirit.

In .NET you'd have to use a giant custom-layout struct (meaning, all reference types are out of the question - this is more unnatural in C# than it is in, say, C++)

So your best bet is probably to use an UnmanagedMemoryStream, serialize your data using builtin .NET System.Runtime.Serialization (of which the XML flavour is by far the more popular and easily copied from blogs and other sources).

Cheers

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文