具有可变设置的单个exe

时间:2010-09-20 15:42:25

标签: c# windows winforms web-applications settings

我正在尝试创建一个简单的应用程序,用于将Web浏览器控件指向我工作中的某些Web应用程序。我想只有一个exe文件,但也有一个管理窗口来更改一些设置,并在应用程序关闭时保持它们。那可能吗?我已经查看了应用程序设置资源部分,但据我所知,它创建了一个加载设置的文件。

我不想解析文件或只有一个文件,所以如果可能,请不要建议这样做。

4 个答案:

答案 0 :(得分:4)

只需使用应用程序设置 - 即可创建单个文件,您无需进行任何解析,一切都会正常。

它将与exe文件分开,但除非你的意思是“一个文件”包含可执行文件并在运行中重写它,它应该很容易适合你的描述。

例如,让我们构建一个控制台应用程序,它只会记住它的启动次数:

  1. 创建新的控制台应用程序项目
  2. 转到属性页面,然后单击“设置”选项卡。
  3. 点击链接创建设置文件
  4. 键入表格以创建类型为int的名为“LaunchCount”的设置。使其成为用户范围或应用程序范围,具体取决于您是希望每个用户还是系统范围内保留它。
  5. 按Ctrl-S保存。
  6. 在Program.cs的Main方法中,编写以下代码:

    Settings settings = Settings.Default;
    settings.LaunchCount++;
    Console.WriteLine("Launch count: {0}", settings.LaunchCount);
    settings.Save();
    
  7. using添加适当的Settings指令(将光标置于“设置”中并按住Ctrl键。)

  8. 多次运行应用程序,并观察数字增加。

答案 1 :(得分:0)

如果没有单独的文件,您就无法进行持久设置......安全。您必须拥有一个单独的文件,这是标准和建议的方法,如使用应用程序设置创建的方法,或者您必须使用类似注册表的内容来保存设置。

但请记住,出于安全原因,强烈建议不要使用注册表。此外,大多数公司都不允许访问注册表,这意味着没有此访问权限的任何人都无法使用设置功能。<​​/ p>

答案 2 :(得分:0)

有几种方法可以做到这一点。您可以使用命令行参数来执行此操作。从shell启动应用程序并输入命令行参数并更改它的启动方式。

UNIX-y方法是查看exe的名称并根据该名称更改行为。如果我没记错的话,rsh和rlogin是相同的可执行文件 - 他们只看argv [0]来决定如何运行。在Windows中,这是直截了当的 - 查看System.Environment.GetCommandLineArgs - 如果在其第0个元素中有非空字符串,它将是您的可执行文件名。

对于持久设置,see Jon Skeet's answer.

答案 3 :(得分:0)

我不得不说这通常是一个坏主意,但我很久以前就在VB6中做过这个。我在exe中创建了一个Resource,然后(不知何故)直接操作它。

问题是,由于它是内存驻留,这在.NET框架中通常是不可能的。这些家伙在.net中尝试了它们,他们最终在IL创建了一个程序来完成繁重的工作...... Modify Emdeded String in C# compiled exe

使用Jon建议的设置文件!