小编Mat*_*att的帖子

在Win7上的%TEMP%中找不到文件

我有一个奇怪的错误,我的代码返回一个文件未找到异常,但文件似乎正好在它应该的位置.我的项目有一些代码来运行系统cmdlet并在XML输出文件中查找cmdlet的结果.我们告诉cmdlet将此输出XML放在系统TEMP目录的自定义子目录中,例如C:\ WINDOWS\TEMP\SomeFolder\output.xml.然后,我们使用.NET XmlDocument类打开并解析XML文件.

在WinXP上,这是有效的.在我的开发盒上,这是有效的.在干净的Win7测试机器上,它没有.

我的第一个想法是我遇到了Vista/Win7文件虚拟化,但是我们的应用程序清单指定我们的应用程序以管理员身份运行 - 从我读过的内容,它应该绕过文件虚拟化.

另一个问题是我们的代码喜欢使用UNC文件路径,即使该文件是机器本地的.(我们要求有问题的代码可能需要在远程计算机上运行cmdlet,因此输出XML也可以在远程计算机上.)因此我们尝试通过\ MATT-WIN7\C打开XML文件$\WINDOWS\TEMP\SomeFolder.xml而不是C:\ WINDOWS\TEMP\SomeFolder\output.xml.

但我暂时删除了UNC路径代码,当Windows资源管理器显示文件正好位于我认为的位置时,对File.Exists()的简单调用仍然表示XML文件不存在.

我还没有读过关于文件虚拟化的细微差别吗?

我的解决方法是将输出xml文件移动到其他位置,但是当它需要在远程计算机上运行时,这可能会破坏我们代码的"可移植性",因为使用%TEMP%位置是可以解析为远程的位置计算机很容易(通过远程注册表调用来查找系统环境变量).

我宁愿将文件保留在原来的位置,并修复我们的代码,以便它实际找到文件!

c# file-io windows-7

2
推荐指数
1
解决办法
1632
查看次数

标签 统计

c# ×1

file-io ×1

windows-7 ×1