【问题标题】:Saving Settings to Executable VB.Net将设置保存到可执行的 VB.Net
【发布时间】:2013-09-28 15:55:10
【问题描述】:

我已经阅读了很多关于保存设置的帖子,但没有一个真正深入到我想要做的事情的核心。我为第 3 方应用程序创建了一个配置应用程序,其设置需要从一个站点更改为另一个站点。我正在尝试找到一种方法将这些设置存储在可执行文件中,而无需将硬编码设置编译到其中。如果最终用户需要更改程序中的名称或 IP 地址,这将允许最终用户编辑设置。

我需要将可执行文件保留为只能下载 EXE 的应用程序,我能找到的所有解决方案都包含无法下载的外部文件。这甚至可能吗?

【问题讨论】:

  • this question 的答案可能会让您感兴趣。这可能是您将要找到的最接近您正在尝试做的事情,但似乎不太可能一个进程在运行时对其自己的 exe 文件执行此操作。
  • 为什么不使用一些可用的环境存储?隔离存储 - msdn.microsoft.com/en-us/library/system.io.isolatedstorage.aspx、注册表或文件系统中的其他位置?
  • 您的意思是要将设置存储在第三方可执行文件中吗?将它们存储在任何可执行文件中如何使它们更易于编辑?如果他们下载修复、更新或新版本,他们的所有旧设置不会丢失吗?
  • 我正在尝试将要更改的设置存储在我的可执行文件中,我的应用程序现在可以很好地编辑第 3 方应用程序的配置文件。我想将此信息存储在我的 exe 文件中的原因是,我可以将其作为可从 Internet 下载的内容分发,除非配置更改,否则用户无需更改任何内容。
  • 你不能这样做。您谈论将某些内容嵌入到 EXE 中-您可以这样做。但是一旦完成就无法更改。我想,您的客户希望您提供签名的程序集。组装,没有人可以磨练。公钥是从您内部的所有内容中生成的。现在,如果您更改内容,您的公钥将不再有效。您可以做的是创建自定义配置部分处理程序并让您的客户端编辑配置文件。

标签: .net vb.net settings


【解决方案1】:

我不相信 .Net 会让你完全按照你想要的方式去做。运行时,.Exe 将被锁定以进行写访问。即使不是这样,.Net 运行时也会在即时编译之前验证 IL 签名,我希望这会破坏验证。

很难过。我经常希望有同样的能力。 让我将我的数据附加到 .exe 的末尾!但这不是 Windows 支持的。

相反,让程序在第一次运行时创建一个设置文件。该文件可以存在于 %App_User% 特殊文件夹中,因此如果用户下载 .exe 并将其保存到桌面,那里不会有无法解释的文件。

【讨论】:

    【解决方案2】:

    使用注册表设置。

    这不需要您包含另一个文件,它会保存每个用户的设置。

    但是,您必须创建应用程序的一部分来更改配置。用户不应直接编辑注册表,但您应在应用程序中提供一个界面,允许他们查看/编辑更改。

    【讨论】:

    • 重点是我需要将设置完整的文件分发到没有设置的系统。将设置保存到分发服务器注册表不会有任何好处。
    • 如果您希望设置成为 EXE 的一部分,请将值硬编码。如果您希望用户能够更新设置,请将它们保存在注册表或应用程序路径中的文件之类的位置。如果您需要用户能够更新设置并在单个 exe 中将 exe 发送给其他人,则必须允许用户编译 exe,以便他们需要源代码和 Visual Studio。有什么我错过的事情你需要做吗?
    • 不,这是问题的根源。 >“如果您需要用户能够更新设置并在单个 exe 中将 exe 发送给其他人,您必须允许用户编译 exe,以便他们需要源代码和 Visual Studio。”我只是不想在编译中使用硬编码。
    猜你喜欢
    • 2015-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-20
    • 2016-07-07
    • 1970-01-01
    • 1970-01-01
    • 2012-01-21
    相关资源
    最近更新 更多