我有一个名为 middle.config 的文件,它与 exe 部署在同一目录中,但我需要更新此文件中的值。这意味着我必须转到 C:\Program Files (x86)\ 目录才能访问该文件。尽管它被命名为 .config 文件,但它并不遵循 .config 文件的通常架构。它看起来像这样:
<configuationSettings>
<middleSettings
groupName="XYZ"
forkName="SomeDbName"
dbServerName="123.123.123.123"
cnnTimeoutSeconds="30"
cmdDefaultTimeoutSeconds="30"
cmdMediumTimeoutSeconds="60"
cmdLongTimeoutSeconds="480"
/>
<userKeys>
<Assemblies value="C:\assemblies\" />
</userKeys>
<friendlyDbName value="NiceData"/>
</configuationSettings>
我可以使用 Xml 读取和操作内容,但是当我尝试将文件保存回来时,会引发“无权限”错误。我无法重新定位文件。我被这个遗留架构困住了,所以我不能像使用 ConfigurationManager.OpenExeConfiguration 的普通 .config 文件一样对待它。我无法在此架构上定义部分或组(无论如何我都无法)。我所有的用户都是他们本地机器上的管理员。
当它位于受保护的目录中时,如何覆盖或删除和替换此文件(我对权限错误的假设)?如果做不到这一点,有没有办法使用 ConfigurationManager.OpenExeConfiguration 以某种方式访问此架构。
{编辑从这里开始}
在这种情况下,有三个应用程序A、B和我的C。应用程序A不知道任何其他应用程序。它可以连接到很多很多数据库,它会删除一个文件“middle.config”,其中包含指向上一个应用程序A会话使用的最后一个数据库位置的指针信息。应用程序B,我们称之为导入/导出应用程序,仅在最后一个应用程序A数据库位置上运行。应用程序B读取“middle.config”文件以获取数据库指针信息,然后针对该数据库执行控制台命令。它对数据库的选定部分执行批量转储或批量导入。
这就是我来构建应用程序C时的情况,该应用程序使用导入/导出应用程序B来获取数据块并将它们返回到数据库。因此,为了让应用程序C 对任何数据库使用应用程序B ,应用程序C必须修改“middle.config”文件,以便应用程序B找到正确的数据库。应用程序C是新的,另外两个是旧的。我要么找到一种方法来完成这项工作,要么强制用户启动 Application A并指向感兴趣的数据库,然后关闭 Application A。这是非常不方便的。
{编辑到此结束}