具有可变设置的单个 exe
Posted
技术标签:
【中文标题】具有可变设置的单个 exe【英文标题】:single exe with changeable settings 【发布时间】:2011-04-14 18:18:05 【问题描述】:我正在尝试制作一个简单的应用程序,该应用程序将用于将 Web 浏览器控件指向我们工作中的一些 Web 应用程序。我想只有一个 exe 文件,但也有一个管理窗口来更改一些设置,并让它们在应用程序关闭时保持不变。那可能吗?我查看了应用程序设置资源部分,但据我所知,这会生成一个加载设置的文件。
我不想解析一个文件或只拥有一个文件,所以如果可能的话,请不要建议这样做。
【问题讨论】:
【参考方案1】:只需使用应用程序设置 - 这将创建一个文件,您无需进行任何解析,一切都会好起来的。
它将与 exe 文件分开,但除非您的意思是“一个文件”包含可执行文件并动态重写它,否则它应该很容易符合您的描述。
例如,让我们构建一个控制台应用程序,它只记得它被启动了多少次:
-
创建一个新的控制台应用程序项目
转到属性页面,然后单击“设置”选项卡。
点击链接创建设置文件
在表格中键入以创建名为“LaunchCount”的
int
类型的设置。使其成为用户范围或应用程序范围,具体取决于您是希望它在每个用户还是系统范围内持久化。
按 Ctrl-S 保存。
在 Program.cs 的 Main 方法中,编写如下代码:
Settings settings = Settings.Default;
settings.LaunchCount++;
Console.WriteLine("Launch count: 0", settings.LaunchCount);
settings.Save();
为Settings
添加适当的using
指令(将光标放在设置中并按Ctrl-。)
【讨论】:
不,我的意思只是可执行文件。我正在将此应用程序直接部署到用户桌面并减少混乱,我只想拥有一件事来使其简单易用。我只想能够更改加载的默认 url,而不必在需要更改时更改实际应用程序。这是一种构建一次,永远不必修复错误的应用程序,因为它实际上只是一个网络浏览器和 3 个按钮。 @cferbs:目前还不清楚谁将在这里改变事情。您会更改 URL 并重建 exe,然后重新分发它吗?还是每个用户都会运行这个“管理面板”?请注意,使用我上面描述的方法,用户不必自己处理设置文件。对于用户和开发人员来说,它简单易行。你在哪里看到事情变得复杂或困难?即时重写 exe 是 我 认为复杂的...... “构建一次,永远不必修复错误”。哈。哈哈哈。 如果我们更改运行 Web 应用程序的服务器,用户将更改运行管理面板并更改默认 URL。我们这样做几乎没有它的参与,所以没有 dns 帮助,只有 ip 地址,他们将在我们无法安装东西的终端服务器上运行它,所以我只想拥有 exe,如果我们需要进行更改必须重新部署 exe,只需让经理更改 url。但是如果我必须在文件中使用内置设置,那我猜就可以了。 @cferbs:嗯,内置的方法似乎既简单又容易,所以我会这样做...至少在您的环境中尝试 ,大约需要 5 分钟。【参考方案2】:如果没有单独的文件,您就无法保存设置……安全。您必须有一个单独的文件,这是标准和建议的方法,例如使用应用程序设置创建的文件,或者您必须使用注册表之类的东西来保存设置。
但请记住,出于安全原因,强烈建议不要使用注册表。另外,大多数公司无论如何都不允许访问注册表,这意味着没有此访问权限的任何人都无法使用设置功能。
【讨论】:
【参考方案3】:有几种方法可以做到这一点。您可以使用命令行参数来执行此操作。从 shell 启动应用程序并输入您的命令行参数并更改它的启动方式。
一种 UNIX-y 方法是查看 exe 的名称并根据该名称更改行为。如果我没记错的话,rsh 和 rlogin 是同一个可执行文件——它们只是查看 argv[0] 来决定如何运行。在 Windows 中,这是直截了当的 - 查看 System.Environment.GetCommandLineArgs - 如果其中的第 0 个元素中有一个非空字符串,它将是您的可执行文件名称。
对于持久设置,see Jon Skeet's answer.
【讨论】:
【参考方案4】:我不得不说这通常是一个坏主意,但我很久以前在 VB6 中已经这样做了。我在 exe 中创建了一个资源,然后(以某种方式)直接操作它。
问题是,这在 .NET 框架中通常是不可能的,因为它是驻留内存的。这些人在 .net 中进行了尝试,最终他们在 IL 中创建了一个程序来完成繁重的工作......Modify Emdeded String in C# compiled exe
按照 Jon 的建议使用设置文件!
【讨论】:
以上是关于具有可变设置的单个 exe的主要内容,如果未能解决你的问题,请参考以下文章