Winforms 显示来自 xml 的不同值

Winforms showing different values from xml

我有一个 windows 服务项目,其中包含一个 Test.xml 文件。在属性里改成copy always.

我已经为服务创建了一个安装程序,安装该服务后,Test.xml 出现在 C:\program files(86)\service 文件夹中。

现在我想通过 UI 编辑 Test.xml 文件。所以我创建了一个小型 Winforms 项目 'EditXml'。 EditXml 正在像这样访问 Test.xml

document = XDocument.Load(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Test.xml"));

我已将 EditXml.exe 添加到服务设置中。所以安装服务后 EditXml.exe 也出现在文件夹中。

但是当我使用 EditXml 进行编辑时,我看不到 test.xml 中的更改。

为什么值与 Test.xml 不同?这是正确的方法吗?如果问题不清楚,请告诉我。

我认为您遇到了权限不足和 windows 文件虚拟化的问题。当您的安装程序在 Program Files 文件夹中创建文件时,它通常只设置读取操作的权限。

当您尝试在现在具有写入权限的用户帐户中使用应用程序 运行 修改文件时,windows 会产生文件已成功写入的错觉,但会将其放在虚拟商店 - 检查 c:\users\CurrentUserName\Local\VirtualStore\Program Files (x86)\YourFolderName

中是否存在这样的 directory/file

只有您的应用程序可以看到修改后的文件版本,但所有其他应用程序可以看到安装程序编写的原始版本。

为了能够使用应用程序修改文件,您需要向文件添加写入权限。