使用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"
等同起来以及我如何解决这个问题?
答案 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文件夹设置为每个人都有完全控制权,以查看它是否是权限问题。