我有一个包含Test.xml文件的Windows服务项目。在专业中,它总是被改为复制。
我已经创建了服务设置,在安装服务之后,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不同?这是正确的方法吗?如果问题不明确,请告诉我。
答案 0 :(得分:1)
我认为您在使用权限不足和Windows文件虚拟化方面存在问题。当安装程序在Program Files文件夹中创建文件时,它通常仅为读取操作设置权限。
当您尝试使用在具有写入权限的用户帐户上运行的应用程序修改文件时,Windows会假定文件已成功写入,但将其置于虚拟存储中 - 检查此类目录/文件是否存在在c:\ users \ CurrentUserName \ Local \ VirtualStore \ Program Files(x86)\ YourFolderName
只有您的应用程序可以看到已修改的文件版本,但所有其他应用程序都会看到安装程序编写的原始版本。
为了能够使用应用程序修改文件,您需要为文件添加写入权限。