特定于给定路径上的可执行文件实例的隐藏设置文件

时间:2012-09-11 19:26:57

标签: c# winforms embedded-resource application-settings

我不确定这个问题的最佳标题。随意修改或建议更改,我将自己进行编辑。

我有一个独立的可执行文件,它想要维护一个特定于应用程序的settings.bin文件。有两种明显的方法可以做到:

1。从可执行文件所在的本地目录创建/读取文件

  • 正面:用户可以将exe和bin文件复制到多个目录,并有多个版本和不同的settings.bin文件。
  • 否定:我不想对可执行目录进行审核。

2。从“隐藏”位置创建/读取文件,如“本地应用程序数据”文件夹。

  • 正面:不对可执行目录进行管制。
  • 否定:settings.bin文件将在任何实例中共享 可执行文件,无论它位于何处。

我不想做这些解决方案中的任何一个,因为它们都不符合我的要求,即:

  • 不要对可执行文件目录进行规范(IE:不要创建本地文件)。
  • settings.bin文件因可执行文件的位置而异。

有什么想法?我想将settings.bin文件作为资源嵌入,但很快就知道你无法写入嵌入式资源。我完全没有想法。

2 个答案:

答案 0 :(得分:1)

使用选项2进行小修改,取消负点(不共享)

您必须拥有可以区分exe文件的内容。

如果所有路径都位于不同的路径中,我会执行以下操作:

1)散列可执行文件的位置(路径的md5)

2)使用哈希

在appdata中创建一个目录

3)将我的文件存储在那里

否则我会尝试列举自己与其他过程相比:

1)开始时检查应用数据。

2)尝试锁定文件以便写入:[App Data] \ 1 \ sem.oi

3)如果失败尝试锁定文件以便写入:[App Data] \ 2 \ sem.oi

使用您可以在

中打开文件的目录中的设置

希望这有帮助。

答案 1 :(得分:0)

好吧,您可以将配置数据定义到应用程序资源文件中,就像序列key-value对一样。通过这种方式,信息将嵌入到您的二进制文件中,因此希望您能够同时满足您的双重要求。

  • 没有专门为配置创建的文件
  • 并且每个文件都可以拥有自己的内置配置,这意味着您必须在这种情况下进行不同的构建。

如果不创建文件,但基于exe路径在本地计算机上进行灵活配置,我认为如果不是通过某些网络访问,并且有些bizzar(在我看来)几乎不可能建筑。

如果您要解释为什么您有这些要求,可能会给出更合适的答案,以防它现在不是。