将config.ini嵌入到exe文件中

时间:2013-04-27 11:49:21

标签: c# resources embed embedded-resource

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

  1. 经理项目
  2. 主要项目
  3. 主项目已编译并添加到Manager项目(作为资源)。 主项目也从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中,我有安装监控,卸载和配置等选项。

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

    但我将merge exe和config.ini合并到一个文件中有问题......

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

3 个答案:

答案 0 :(得分:0)

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

另一方面,您始终可以使用嵌入式资源来保存配置数据。

有关详细信息,请参阅此主题: Configuration File as Embedded Resource 或者在这里 How do I compile my App.config into my exe in a VS2010 C# console app?

最后,我不确定你想达到的目标是否可行。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

要写入备用流:

echo some data > myapp.exe:configstream

从备用流中读取:

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