2011-04-02 81 views
0

使用Windows 7-32位中的Net Framework 3.5進行VB2008中的編碼。My.Computer.FileSystem.SpecialDirectories.MyDocuments在VB2008中返回錯誤的文件夾名稱

代碼:

TempUserPath = My.Computer.FileSystem.SpecialDirectories.MyDocuments 

返回字符串"C:\Users\Owner\Documents"但該文件夾實際上是一個名爲"My Documents"(即是在Finder "C:\Users\Owner\My Documents")。

當我嘗試在Owner目錄中創建一個名爲"Documents"的新文件夾時,Windows詢問我是否想要將其內容與My Documents文件夾合併。如果我說是的,我只剩下我的文檔文件夾,沒有一個名字爲"Documents"

因此,當我嘗試讀取或寫入文件到TempUserPath位置時,出現"access denied"錯誤。甚至在我手動將文件夾的名稱從"My Documents"更改爲"Documents"後,會發生這種情況。

有誰知道爲什麼Windows在VB環境下似乎將文件名"Documents""My Documents"等同起來,以及我如何解決這個問題?

+0

您正在編程機器,而不僅僅是使用它。你會發現它在引擎蓋下發生了什麼,而不僅僅是它看起來像什麼。磁盤*上的該目錄被命名爲「文檔」。使用cmd.exe查看真正存在的內容。 – 2011-04-02 17:20:58

回答

0

我的文檔&這種情況下的文檔是一樣的。使用不同的文件夾名稱。

0

您看到的文件夾My Documents並不存在,它是具有實際文檔文件夾內容的虛擬文件夾。您還將在自己的文檔文件夾中看到用戶PublicPublic Documents文件夾的內容。

代碼正確返回存儲文件的實際物理文件夾的名稱。您可以將該文件夾的位置移動到任何位置,因此它可以是D:\Birds\Pelicans,但您仍然可以在主目錄中將它看作My Documents

如果您在嘗試從文件夾中讀取時遇到拒絕訪問錯誤,您的程序根本沒有適當的權限。它與虛擬文件夾名稱沒有任何關係。

+0

感謝大家的建議,但我認爲我需要使用我的文檔文件夾,因爲我正在編寫學生在大學服務器上使用的程序。此外,這是一個成熟的程序,一直在使用此代碼在XP中正常運行。當我在Win 7中運行它時,它會給我報告的錯誤。所以Win 7處理這個問題的方式與XP不同。該文件夾具有爲所有者設置的完整權限。 – 2011-04-02 20:31:25

+0

我只是在XP機器上重新輸入相同的代碼,並返回字符串「C:\ Users \ Owner \ My Documents」,並且文件正確寫入該文件夾。因此,Win 7中的處理與XP中的處理有所不同。 – 2011-04-02 20:38:59

0

我剛試過,對我來說工作得很好。

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

你可能會嘗試暫時設置你的mydocuments文件夾給每個人有完全控制權,看看它是否是一個權限問題。

相關問題