【问题标题】:Embedding config.ini into exe file将 config.ini 嵌入到 exe 文件中
【发布时间】:2013-04-21 12:46:49
【问题描述】:

我有 2 个应用程序和一个 config.ini 文件。

  1. 项目经理
  2. 主要项目

主项目被编译并添加到管理器项目中(作为资源)。 主项目也正在从 config.ini 文件中获取设置。

我可以从 Manager Project 中以这种方式保存 MainProject:

File.WriteAllBytes("MainProject.exe", ManagerProject.Properties.Resources.MainProject); //get MainProject exe an save it

然后我可以为 MainProject.exe 编写 config.ini:

StreamWriter sw = new StreamWriter("config.ini");
sw.WriteLine("1"); //whatever
sw.Close();

但我想将这两个文件(config.ini 和 MainProject.exe)合并到一个 exe 文件中。 用户看不到那个 config.ini。

我正在考虑将 config.ini 添加为资源文件,但是当项目已经编译时可以这样做吗?

我该怎么做?

//编辑

我有间谍程序(制作屏幕截图、将键盘记录到文件等)。 在我的 ManagerProject 中,我有安装监控、卸载和配置等选项。

我想做“使用我的配置创建独立监视器”。此选项应创建具有指定设置(制作屏幕截图的频率、电子邮件数据等)的 .exe,例如使用 word 或 excel 图标。而这个具有自定义配置的独立 exe 应该在点击后安装监控。

但我在将 exe 和 config.ini 合并到一个文件时遇到问题...

有什么办法可以解决这个问题吗?

【问题讨论】:

标签: c# resources embed embedded-resource


【解决方案1】:

如果您的 exe 在 NTFS 分区上,您可以将 config.ini 放在 exe 文件的备用流中。备用流可以用 C# 编写或红色,但您可以立即使用以下未记录的行命令尝试它。

要写入备用流:

echo some data > myapp.exe:configstream

从备用流中读取:

more < myapp.exe:configstream
  • 与 app.config 的不同之处在于您将只有一个文件 部署
  • 与嵌入式资源的不同之处在于您不需要编译器来更改数据值

【讨论】:

    【解决方案2】:

    你说“用户看不到那个 config.ini。”,所以如果这是唯一的原因,你想将你的 config.ini 与你的 exe 合并,那么你为什么不把它放在AppData 或 Temp,或者您可以将您的配置文件编码并放在 exe 旁边,因此如果用户打开它,则无法找出其中的内容。

    【讨论】:

    • 但是ManagerProject的所有者可以在他的计算机上创建间谍exe,然后将其复制到pendrive并转到受害者的家中。
    • 这是主要目标。 ManagerProject的所有者可以创建带有word、excel图标的exe并到受害者家运行程序。
    【解决方案3】:

    首先为什么要做这么奇怪的事情? C# 项目使用 app.config 来读取更易于维护和加载的配置。

    另一件事是,您始终可以使用嵌入式资源来保存您的配置数据。

    请参阅此主题以获取更多信息: Configuration File as Embedded Resource 或在这里 How do I compile my App.config into my exe in a VS2010 C# console app?

    最后我不确定你想要实现的目标是否可能。

    【讨论】:

    • 有类似 ILMerge 的东西,但仅适用于 .dll 和其他程序集。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-07
    • 2020-10-05
    • 1970-01-01
    • 2015-01-08
    • 2017-09-04
    • 2017-06-14
    • 1970-01-01
    相关资源
    最近更新 更多