My.Computer.FileSystem.SpecialDirectories.MyDocuments在VB2008中返回错误的文件夹名称

时间:2011-04-02 16:38:43

标签: vb.net

使用Windows 7-32位的Net Framework 3.5在VB2008中进行编码。

代码:

TempUserPath = My.Computer.FileSystem.SpecialDirectories.MyDocuments 

返回字符串"C:\Users\Owner\Documents",但该文件夹实际上名为"My Documents"(即,在Finder中为"C:\Users\Owner\My Documents"。)

当我尝试在Owner目录中创建一个名为"Documents"的新文件夹时,Windows会询问我是否要将其内容与My Documents文件夹合并。如果我说是,我只剩下My Documents文件夹而没有名为"Documents"

因此,当我尝试将文件读取或写入TempUserPath位置时,出现"access denied"错误。即使我手动将文件夹名称从"My Documents"更改为"Documents"

,也会发生这种情况

有谁知道为什么Windows似乎在VB环境中将文件名"Documents""My Documents"等同起来以及我如何解决这个问题?

3 个答案:

答案 0 :(得分:0)

您看到的文件夹My Documents实际上并不存在,它是一个虚拟文件夹,其中包含实际文档文件夹的内容。您还会在自己的文档文件夹中看到用户Public Documents的{​​{1}}文件夹的内容。

代码正确返回存储文件的实际物理文件夹的名称。您可以将该文件夹的位置移动到任何您喜欢的位置,因此它也可以改为Public,但您仍然可以在主目录中将其视为D:\Birds\Pelicans

如果在尝试从文件夹中读取时出现拒绝访问错误,则您的程序根本没有适当的权限。它与虚拟文件夹名称无关。

答案 1 :(得分:0)

我的文件&这种情况下的文件是相同的。使用其他文件夹名称。

答案 2 :(得分:0)

我刚尝试过,对我来说很好。

 Dim TempUserPath As String = My.Computer.FileSystem.SpecialDirectories.MyDocuments
    IO.File.WriteAllText(IO.Path.Combine(TempUserPath, "TEST.txt"), "TEST")

您可以尝试暂时将mydocuments文件夹设置为每个人都有完全控制权,以查看它是否是权限问题。